谷雨553 2022-08-01 17:13 采纳率: 66.7%
浏览 33
已结题

关于#51单片机#keil4报错的问题,如何解决?

用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

附上图片:

img

img

img

附上全部代码:

#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行就没有错误。
大家帮忙看看有没有其它问题,谢谢了。

  • 写回答

3条回答

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

      • 已结题 8月2日
      • 已采纳回答 8月1日
      • 创建了问题 8月1日

      悬赏问题

      • ¥15 R语言数据分析的相关问题
      • ¥15 模型导入SP后贴图纹理只有一个,拆了四张UV的,怎么解决?
      • ¥15 检索带order by 非常慢
      • ¥20 python 爬虫 token 加密方式
      • ¥20 IAR环境报错reading CPU status failed
      • ¥20 Python如何读取指定播放设备的音频帧?
      • ¥15 用dnspy修改游戏数据报错
      • ¥15 关于unity打包成webgl后页面上不显示服务端接收到的数据的问题
      • ¥16 (大一)有偿 想学会 excel数据处理和分析🥹
      • ¥15 matlab导入工具箱提示:此类型的变量不支持使用点进行索引错误