用Keil4编写的51单片机矩阵键盘代码,始终是报错:
矩阵键盘.C(81): error C141: syntax error near 'u8'
矩阵键盘.C(81): error C202: 'cod1': undefined identifier
矩阵键盘.C(84): error C202: 'cod1': undefined identifier
矩阵键盘.C(85): error C202: 'numcode': undefined identifier
矩阵键盘.C(86): error C202: 'num_code': undefined identifier
附上图片:
附上全部代码:
#include<reg52.h>
#define seg P0 //数码管段选
#define bitt P2 //CC共阴极数码管 位选
#define keypad P1 //矩阵键盘的控制管脚
typedef unsigned char u8;
typedef unsigned int u16;
u8 code display_bit[]={0x00,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c};
u8 code display_seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(u8 ms)
{
u16 x,y;
for(x=ms;x>0;x--)
for(y=110;y>0;y--);
}
u8 keypad_cod() //判断是否按键并编码
{
u8 temp1,temp2,temp3;
keypad = 0x0f;
delay(1);
temp1 = keypad;
if(temp1 != 0x0f)
{
delay(5);
temp1 = 0x0f;
if(temp1 != 0x0f)
{
temp2 = temp1;
keypad = 0xf0;
delay(1);
temp1 = keypad;
temp3 = temp1|temp2;
return (temp3);
}
}
}
u8 keypad_encode(u8 cod) //解码并返回数字0-15
{
u8 num;
switch(cod)
{
case 0x77: num=0; break;
case 0x7b: num=1; break;
case 0x7d: num=2; break;
case 0x7e: num=3; break;
case 0xb7: num=4; break;
case 0xbb: num=5; break;
case 0xbd: num=6; break;
case 0xbe: num=7; break;
case 0xd7: num=8; break;
case 0xdb: num=9; break;
case 0xdd: num=10; break;
case 0xde: num=11; break;
case 0xe7: num=12; break;
case 0xeb: num=13; break;
case 0xed: num=14; break;
case 0xee: num=15; break;
default: break;
}
return (num);
}
void led_display(u8 num_seg) //通过数码管输出数字
{
seg = display_seg[num_seg];
bitt = display_bit[7];
delay(1);
}
void main()
{
seg = 0x00;
u8 cod,num_code;
while(1)
{
cod = keypad_cod();
numcode = keypad_encode(cod);
led_display(num_code);
}
}
我感觉这很无厘头,有可能是keil4的问题,我把它复制到VS2010里面81-86行就没有错误。
大家帮忙看看有没有其它问题,谢谢了。