51单片机对switch case语句的调用

存在问题:
CHENGXU.C(64): warning C206: 'DISPLAY': missing function-prototype
CHENGXU.C(70): error C231: 'DISPLAY': redefinition
CHENGXU.C(84): error C231: 'DISPLAY': redefinition
Target not created
求大神赐教!

#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit ADC_START=P2^4;
sbit ADC_OE=P2^5;
sbit ADC_EOC=P2^6;
sbit ADC_ALE=P2^3;
sbit ADDCS=P2^0;
sbit clk=P2^7;
uchar getdata;
void delay(uchar i) //延时函数
{
uchar j;
while(i--)
{
for(j=125;j>0;j--) ;
}
}

void init() //系统初始化
{
EA = 1; //开总中断
TMOD = 0x02; //设定定时器T0工作方式 TH0=216; //利用T0中断产生CLK信号 TL0=216;
TR0=1; //启动定时器T0
ET0=1;
ADC_START=0;
ADC_OE=0;
}

void t0(void) interrupt 1 using 0 //T0中断服务程序
{
uchar CLK;
CLK=~CLK;
}

void AD() //AD转换函数
{
ADC_START=0;
ADDCS=0; //选择通道IN0 delay(10);
ADC_START=1; //启动AD转换
delay(10);
ADC_START=0;
while(0==ADC_EOC);
ADC_OE=1;
getdata=P1;
ADC_OE=0;
ADC_START=0;
ADDCS=1; //选择通道IN1 delay(10);
ADC_START=1; //启动AD转换 delay(10); ST=0;
while(0==ADC_EOC);
ADC_OE=1;
getdata=P1;
ADC_OE=0;
}
void main() //主函数
{
init();
while(1)
{
AD();
DISPLAY();
}
}

void DISPLAY()
{
int s;
s=getdata*100;
switch (s)
{
case 5:P3=0x1f; break;
case 4:P3=0x0f; break;
case 3:P3=0x07; break;
case 2:P3=0x03; break;
case 1:P3=0x01; break;
default: P1=0X00;

}

}

第1个回答  推荐于2017-11-29
函数在一开头要声明才行,两个方法,
一是把display整个函数放在main函数之前。
二是把void DISPLAY(); 这句话放在main函数之前。本回答被提问者采纳
相似回答