keil c51 (7): syntax error near “;”

#include<reg52.h>
#define uchar unsigned char;
#define uint unsigned int;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void display(uchar);
void delayms();
uchar shi,ge,num1,num;
uint i,j,xms;
void main()
{
TMOD=0x01;
TH0=(65536-50000)/10;
TL0=(65536-50000)%10;
EA=0;
ET0=1;
TR0=1;
while(1);
{
display(shi,ge);
}
}
void display()
{
dula=1;
P0=table[shi];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delayms(5);

dula=1;
P0=table[ge];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delayms(5);
}
void delayms()
{
for(i=xms;i>0;i--);
for(j=110;j>0;j--);
}
void T0_time() interrupt 1
{
TH0=(65536-50000)/10;
TL0=(65536-50000)%10;
num1++;
if(num1==20);
{
num1=0;
num=60;
num--;
if(num=0)
num=60;
shi=num/10;
ge=num%10;
}
}

这两句有问题:
#define uchar unsigned char;

#define uint unsigned int;
如果要用define请去掉“;”,入下
#define uchar unsigned char
#define uint unsigned int
或者写成
typedef unsigned char uchar;
typedef unsigned int uint;
上面回答是针对syntax error near “;”

还有新的问题是
void display(uchar); 和 display(shi,ge);
很明显,你定义的void display()是不带任何参数的,
而你声明时却加了一个uchar类型的参数,调用时却又传递了两个参数shi,ge????
这。。。。。。。。。

解决这个问题的办法是声明时用
void display();

while循环调用时,直接如下
while(1);
{
display();
}

还有问题。。。。。。。。。。。。。。。。。。。
你的这void delayms()都不带参数的。。。。。。。天啊
那这个delayms(5)??????
还有这个xms在第一次调用delayms()时就减至0了,后面的delayms是直接退出的。。。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-17
void display(uchar); 函数声明不符追问

那应该如何声明?请详细说明下,谢谢。

追答

你的子程序中括号中是空的

所以声明也应该是这样 void display();