单片机编程keil错误,新手,急求帮忙~~missing ';' before 'keyscan'

xiao_ying_ 2011-12-22 04:32:26
#include "reg52.h" //引用头部文件
void delay(void);
uchar keyscan();
void timer0_int(void) interrupt 1;
void timer1_int(void) interrupt 3;
uchar getcode(uchar i);
void display();
bit pwcmp(void);


uchar digbit;
uchar wordbuf[6];
uchar tlcount;
uchar count;
uchar pw[6];
uchar pwbuf[6];
bit enterflag;
bit pwflag;
bit showflag;
bit green=p3^0;
sbit red=p3^1;

main()
{
uchar j,key;

P2=0x0;
TMOD=0X11;

//2ms 定时设置
THO=-2000/256;
TLO=-2000%256;
//50ms定时设置
THO=-50000/256;
TLO=-20000%256;
//启动计数器0,关闭计数器1
TRO=1;
ETO=1;
TR1=0;
ET1=1;
EA=1;

count=0;
enterflag=0;
pwflag=0;
green=1;
red=1;

//假设内定密码为845231
pw[0]=8;
pw[1]=4;
pw[2]=5;
pw[3]=2;
pw[4]=3;
pw[5]=1;

showflag=1;
//刚加电时,显示888888
for(j=0;j<6;j++)
wordbuf[j]=8;

digbit=0x01;
while(1)
{
key=keyscan();
switch(key)
{
case 0x11:
if(count<6)
{
wordbuf[count]= 0x0f;
pwbuf[count]= 0;
count++;
}
break;
case 0x21:
if(count<6)
{
wordbuf[count]= 0x0f;
pwbuf[count]= 1;
count++;
}
break;
case 0x41:
if(count<6)
{
wordbuf[count]= 0x0f;
pwbuf[count]= 2;
count++;
}
break;
case 0x81:
if(count<6)
{
wordbuf[count]= 0x0f;
pwbuf[count]= 3;
count++;
}
break;
case 0x12:
if(count<6)
{
wordbuf[count]= 0x0f;
pwbuf[count]= 4;
count++;
}
break;
case 0x22:
if(count<6)
{
wordbuf[count]= 0x0f;
pwbuf[count]= 5;
count++;
}
break;
case 0x42:
if(count<6)
{
wordbuf[count]= 0x0f;
pwbuf[count]= 6;
count++;
}
break;
case 0x82:
if(count<6)
{
wordbuf[count]= 0x0f;
pwbuf[count]= 7;
count++;
}
break;
case 0x14:
if(count<6)
{
wordbuf[count]= 0x0f;
pwbuf[count]= 8;
count++;
}
break;
case 0x24:
if(count<6)
{
wordbuf[count]= 0x0f;
pwbuf[count]= 9;
count++;
}
break;
case 0x44:
enterflag=1;
if(count==6)
pwflag=pwcmp();
else
pwflag= 0;
break;
case 0x84:
count=0;
for(j=0;j<6;j++)
{
wordbuf[j]=8;
pwbuf[j]=0x0f;
}
break;
default: break;
}
if(enterflag==1)
{
enterflag=0;
count=0;

//用FFFFFF清除已经输入的密码
for(j=0;j<6;j++)
pwbuf[j]=0x0f;

showflag=0;
TR1=1;
tlcount=0;
if(pwflag==1)
green=0;
else
red=0;
}
}
//按键消抖延时函数
void delay(void)
{
uchar i;
for(i=300;i>0;i--)
}
//按键扫描函数
uchar keyscan (void)
{
uchar scancode,tmpcode;
P1=0xf0;
if ((P1&0xf0)!=0xf0)
{
delay ();
if( (P1&0xf0)!=0xf0)
{
scancode=0xfe;
while((scancode & 0x10)!=0)
{
P1=scancode;
if ((P1 & 0xf0)!=0xf0)
{
tmpcode=(P1 & 0xf0)|0x0f;
//返回特征字节码,为1的位即对应于行和列
return((~scancode)+(~tmpcode));
}
else scancode=(scancode<<1)|0x01;//行扫描码左移一位
}
}
}
return (0);
}

//定时器0终端服务子程序,2ms定时动态扫描显示
void time0_int(void)interrupt1
{
//重置2ms定时
THO=-2000/256;
TLO=-5000&256;

if(showflag==1)
display();
}
//定时器1中断服务子程序,50ms定是动态扫描显示
void time1_int(void)interrupt3
{
uchar k;
//重置50ms定时
THO=-50000/256;
TLO=-50000&256;
if(tlcount<20)
{
tlcount ++;
}
else
{
TR1=0;
Tlcount=0;
green =1;
red=1;
showflag=1;
digbit=0x01;
for(k=0;k<6;k++)
wordbuf[k]=8;
}
}
//根据共阴极自行编码表获取0-9,A-B字型代码
uchar getcode(uchar i)
{
uchar p;
swith (i);
{
case0: p=0x3f; break; //0
case1: p=0x06; break; //1
case2: p=0x5B; break; //2
cade3: p=0x4F; break;
case4: p=0x66; break;
case5: p=0x6D; break;
case6: p=0x7D; break;
case7: p=0x07; break;
case8: p=0x7F; break;
case9: p=0x67; break;
case10: p=0x77; break;
case11: p=0x7C; break;
case12: p=0x39; break;
case13: p=0x5E; break;
case14: p=0x79; break;
case15: p=0x71; break;
default;
}
return(p);
}

// 数码管显示函数
void display(void)
{
uchar i;
switch (digbit)
{
case1: i=0;break;
case1: i=0;break;
case1: i=0;break;
case1: i=0;break;
case1: i=0;break;
case1: i=0;break;
case1: i=0;break;
}
P2 =0x0;
P0 =getcode( wordbuf [i]);
P2 =digbit;
if(digbit<0x20)
digbit=digbit<<1;
else
digbit=0x01;
//密码比较函数
bit pwcmp(void)
{
bit flag;
uchar i;
for(i=0;i<6;i++)
{
if (pw[i]==pwbuf[i])
flag=1;
else
{
flag=0;
i=6;
}
}
return(flag);
}
...全文
456 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
夫人的泡泡鱼 2011-12-29
  • 打赏
  • 举报
回复
最终版本#define uchar unsigned char
mxiangliang 2011-12-29
  • 打赏
  • 举报
回复
uchar
狂且 2011-12-27
  • 打赏
  • 举报
回复
typedef unsigned char uchar;
typedef unsigned int uint;
//或
#define uchar unsigned char
#define uint unsigned int


要养成开始写代码时就要先定义好这个!
吻花者 2011-12-25
  • 打赏
  • 举报
回复
嘿嘿,不能只抄袭uchar啊,c里面没有,要自己定义啊!!!!
抄袭也有抄袭全面啊???
绿野耕夫 2011-12-23
  • 打赏
  • 举报
回复
使用uchar之前需要先typedef
typedef unsigned char uchar;
northcan 2011-12-23
  • 打赏
  • 举报
回复

#include "reg52.h" //引用头部文件

#define uchar unsigned char

void delay(void);
uchar keyscan();

// ... ...
steve_shen 2011-12-23
  • 打赏
  • 举报
回复
时钟中断函数,似乎不需要声明的吧???
woshi_ziyu 2011-12-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 youzi722 的回复:]

uchar没定义呗,在最前面加
typedef unsigned char uchar;
[/Quote]
++
youzi722 2011-12-22
  • 打赏
  • 举报
回复
uchar没定义呗,在最前面加
typedef unsigned char uchar;

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧