Keil调试中出现:error C141:syntax error near‘unsigned’ 程序哪儿出错了?请高人指教 谢谢~
#include<reg52.h>//头文件#defineucharunsignedchar#defineuintunsignedint//宏定义sbitP16=P1^6...
#include<reg52.h> //头文件
#define uchar unsigned char
#define uint unsigned int//宏定义
sbit P16=P1^6;
sbit baojing=P3^6;
sbit d1=P0^0;
sbit d2=P0^1;
sbit d3=P0^2;
sbit d4=P0^3;
sbit d5=P0^4;
sbit d6=P0^5;
sbit P36=P3^6;
uint temp,num,a;//定义全局变量
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71}; //数码管显示的数值
void baojin();
void send(uint tmp);
void delay(uint z)//延时子函数
{……}
void init() //初始化子函数
{
TMOD=0x20;//设置定时器1工作在方式2
TH1=0xfd;//波特率为9600baud,发送与接收的波特率要相等
TL1=0xfd;
TR1=1;//启动定时器1
PCON=0x00;//SMOD=0
SCON=0x40;//串口工作在方式1
EA=1;//CPU开中断
ES=1;//允许串行口中断
REN=1;//允许串行口接收数据
}
void main ()
{
void init() ;//调用初始化子函数
P1=0xff;
P2=0x00;
a=0;
while(1)
{
temp=P1;
temp=temp&0xff;
if(temp!=0xff)//判断是否有键按下
{
delay(10);//延时去抖动
temp=P1;
temp=temp&0xff;
if(temp!=0xff)//若真有键按下
{
ES=0;//关闭串行口中断
temp=P1;
temp=temp&0xff;
switch(temp)
{
case 0xfe:num=11;
break;
case 0xfd:num=12;
break;
case 0xfb:num=13;
break;
case 0xf7:num=14;
break;
case 0xef:num=15;
break;
case 0xdf:num=16;
break;
}
while(P1!=0xff);//松手检测,看是否松手
delay(10);//延时消抖
while(P1!=0xff);//若真松手,则执行下面程序
SBUF=num;//数据写入发送缓冲器,启动发送
while(TI!=1); //判断发送是否结束
TI=0; //若发送结束,发送标志位置0
num=num%10;
P2=table[num];//P2口显示
switch(num)//选择对应LED发光
{
case 1:d1=0;
break;
case 2:d2=0;
break;
case 3:d3=0;
break;
case 4:d4=0;
break;
case 5:d5=0;
break;
case 6:d6=0;
break;
}
ES=1; //开启串行口中断
}
}
send(uint tmp)
{ if(tmp!=0)
{
switch(tmp)//选择判断,对应LED熄灭
{
case 1:d1=1;
break;
case 2:d2=1;
break;
case 3:d3=1;
break;
case 4:d4=1;
break;
case 5:d5=1;
break;
case 6:d6=1;
break;
}
P2=0;//P2口不显示
tmp=0;
baojin(); //调用报警子程序,报警器报警
}
}
}
}
void ser() interrupt 4//串口中断
{
if(RI)
{
RI=0;//接收完了,标志位清零
a=SBUF; //将接收缓冲器的数据送给a
send(a);
}
}
void baojin()
{……} 展开
#define uchar unsigned char
#define uint unsigned int//宏定义
sbit P16=P1^6;
sbit baojing=P3^6;
sbit d1=P0^0;
sbit d2=P0^1;
sbit d3=P0^2;
sbit d4=P0^3;
sbit d5=P0^4;
sbit d6=P0^5;
sbit P36=P3^6;
uint temp,num,a;//定义全局变量
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71}; //数码管显示的数值
void baojin();
void send(uint tmp);
void delay(uint z)//延时子函数
{……}
void init() //初始化子函数
{
TMOD=0x20;//设置定时器1工作在方式2
TH1=0xfd;//波特率为9600baud,发送与接收的波特率要相等
TL1=0xfd;
TR1=1;//启动定时器1
PCON=0x00;//SMOD=0
SCON=0x40;//串口工作在方式1
EA=1;//CPU开中断
ES=1;//允许串行口中断
REN=1;//允许串行口接收数据
}
void main ()
{
void init() ;//调用初始化子函数
P1=0xff;
P2=0x00;
a=0;
while(1)
{
temp=P1;
temp=temp&0xff;
if(temp!=0xff)//判断是否有键按下
{
delay(10);//延时去抖动
temp=P1;
temp=temp&0xff;
if(temp!=0xff)//若真有键按下
{
ES=0;//关闭串行口中断
temp=P1;
temp=temp&0xff;
switch(temp)
{
case 0xfe:num=11;
break;
case 0xfd:num=12;
break;
case 0xfb:num=13;
break;
case 0xf7:num=14;
break;
case 0xef:num=15;
break;
case 0xdf:num=16;
break;
}
while(P1!=0xff);//松手检测,看是否松手
delay(10);//延时消抖
while(P1!=0xff);//若真松手,则执行下面程序
SBUF=num;//数据写入发送缓冲器,启动发送
while(TI!=1); //判断发送是否结束
TI=0; //若发送结束,发送标志位置0
num=num%10;
P2=table[num];//P2口显示
switch(num)//选择对应LED发光
{
case 1:d1=0;
break;
case 2:d2=0;
break;
case 3:d3=0;
break;
case 4:d4=0;
break;
case 5:d5=0;
break;
case 6:d6=0;
break;
}
ES=1; //开启串行口中断
}
}
send(uint tmp)
{ if(tmp!=0)
{
switch(tmp)//选择判断,对应LED熄灭
{
case 1:d1=1;
break;
case 2:d2=1;
break;
case 3:d3=1;
break;
case 4:d4=1;
break;
case 5:d5=1;
break;
case 6:d6=1;
break;
}
P2=0;//P2口不显示
tmp=0;
baojin(); //调用报警子程序,报警器报警
}
}
}
}
void ser() interrupt 4//串口中断
{
if(RI)
{
RI=0;//接收完了,标志位清零
a=SBUF; //将接收缓冲器的数据送给a
send(a);
}
}
void baojin()
{……} 展开
3个回答
展开全部
ES=1; //开启串行口中断
}
}
} //少了两个 } main函数
}
void send(uint tmp) //前面最好加上 void
{ if(tmp!=0)
//这个函数后边多了两个 }
你把函数 send(uint tmp) 写在函数 main()里面了。
}
}
} //少了两个 } main函数
}
void send(uint tmp) //前面最好加上 void
{ if(tmp!=0)
//这个函数后边多了两个 }
你把函数 send(uint tmp) 写在函数 main()里面了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void key4_4(uchar key) //错误就在这里。
这个函数,不应该带有参数,改成:
void key4_4()
试试看。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
send(uint tmp)
{
if(tmp!=0)
{
switch(tmp)//选择判断,对应LED熄灭
{
case 1:d1=1;
break;
case 2:d2=1;
break;
case 3:d3=1;
break;
case 4:d4=1;
break;
case 5:d5=1;
break;
case 6:d6=1;
break;
}
P2=0;//P2口不显示
tmp=0;
baojin(); //调用报警子程序,报警器报警
}
}
这是子程序吗?如果是子程序的话,不能这样放到main函数内部。就是这里出问题了。
{
if(tmp!=0)
{
switch(tmp)//选择判断,对应LED熄灭
{
case 1:d1=1;
break;
case 2:d2=1;
break;
case 3:d3=1;
break;
case 4:d4=1;
break;
case 5:d5=1;
break;
case 6:d6=1;
break;
}
P2=0;//P2口不显示
tmp=0;
baojin(); //调用报警子程序,报警器报警
}
}
这是子程序吗?如果是子程序的话,不能这样放到main函数内部。就是这里出问题了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询