找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1103|回复: 5
收起左侧

keil的报错main_plas.c(87): error C141: syntax error near 'P2'

[复制链接]
ID:806369 发表于 2020-7-21 16:34 | 显示全部楼层 |阅读模式
附上源程序

  1. #include "reg52.h"
  2. #define KEY P3
  3. #define key_state_0 0
  4. #define key_state_1 1
  5. #define key_state_2 2
  6. char read_KBD(void)
  7. {
  8.   static char key_state=0;
  9. unsigned char key_press,key_return=0;
  10. unsigned char key1,key2;
  11. KEY=0xf0;
  12. key1=KEY&0xf0;
  13. KEY=0x0f;
  14. key2=KEY&0x0f;
  15. key_press=key1|key2;

  16. switch(key_state)
  17. {
  18.    case key_state_0:
  19.    if(key_press!=0xff) key_state=key_state_1;
  20.   break;
  21.   
  22.   case key_state_1:
  23.    if(key_press!=0xff)
  24.    {
  25.      if(key_press==0x7e) key_return = 7;   //S7
  26.       if(key_press==0x7d) key_return = 6;   //S6
  27.      if(key_press==0xde) key_return = 15;  //S15  
  28.      if(key_press==0xdd) key_return = 14;  //S14
  29.    }
  30.    else
  31.     key_state=key_state_0;
  32.    break;
  33.    
  34.   case key_state_2:
  35.    if(key_press==0xff) key_state=key_state_0;
  36.    break;
  37. }
  38. return key_return;
  39. }
  40. typedef unsigned char BYTE;
  41. typedef unsigned int WORD;


  42. #define FOSC 18432000L
  43. #define T1MS (65536-FOSC/12/1000)   //1ms timer calculation method in 12T mode

  44. sbit TEST_LED = P1^0;               //work LED, flash once per second

  45. WORD count;                         //1000 times counter
  46. WORD key_count;

  47. unsigned char code T_display[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
  48. unsigned char code T_COM[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  49. unsigned char key_val;
  50. unsigned char key_table[2];
  51. void tm0_isr() interrupt 1 using 1
  52. {
  53.    static char i;
  54.     TL0 = T1MS;                     //reload timer0 low byte
  55.     TH0 = T1MS >> 8;                //reload timer0 high byte
  56.    if (key_count-- == 0)
  57.   {
  58.     key_count = 10;                //10ms
  59.    key_val=read_KBD();
  60.    if(key_val!=0)
  61.    {
  62.      key_table[0] = key_val/10;   //ʮλ
  63.     key_table[1] = key_val%10;    //¸öλ
  64.    }
  65.   }
  66.     if (count-- == 0)               //1ms * 1000 -> 1s
  67.     {
  68.         count = 1               //1ms
  69.         P2=0xe0;P0=~T_display[key_table[i]];P2=0x00;
  70.      P2=0xc0;P0=T_COM[i];P2=0x00;
  71.      i++;
  72.      if(i==2) i=0;
  73.     }
  74. }

  75. void main()
  76. {
  77.     TMOD = 0x01;                    //set timer0 as mode1 (16-bit)
  78.     TL0 = T1MS;                     //initial timer0 low byte
  79.     TH0 = T1MS >> 8;                //initial timer0 high byte
  80.     TR0 = 1;                        //timer0 start running
  81.     ET0 = 1;                        //enable timer0 interrupt
  82.     EA = 1;                         //open global interrupt switch
  83.     count = 0;                      //initial counter
  84.     while (1);                      //loop
  85. }
复制代码

求大佬解答一下,就是找不到哪里出错了
回复

使用道具 举报

ID:332444 发表于 2020-7-21 17:00 | 显示全部楼层
  1. void tm0_isr() interrupt 1 using 1
  2. {
  3.    static char i;
  4.     TL0 = T1MS;                     //reload timer0 low byte
  5.     TH0 = T1MS >> 8;                //reload timer0 high byte
  6.    if (key_count-- == 0)
  7.   {
  8.     key_count = 10;                //10ms
  9.    key_val=read_KBD();
  10.    if(key_val!=0)
  11.    {
  12.      key_table[0] = key_val/10;   //ê???
  13.     key_table[1] = key_val%10;    //????
  14.    }
  15.   }
  16.     if (count-- == 0)               //1ms * 1000 -> 1s
  17.     {
  18.         count = 1;               //1ms
  19.         P2=0xe0;
  20.                         P0=~T_display[key_table[0]];
  21.                         P2=0x00;
  22.      P2=0xc0;
  23.                         P0=T_COM;
  24.                         P2=0x00;
  25.      i++;
  26.      if(i==2) i=0;
  27.     }
  28. }
复制代码
回复

使用道具 举报

ID:452950 发表于 2020-7-21 17:26 | 显示全部楼层
count = 1               //1ms
这一句后面没有分号,改为
count = 1;               //1ms
回复

使用道具 举报

ID:808700 发表于 2020-7-28 16:57 | 显示全部楼层
没有分号。其实这种你直接百度就出来了的
回复

使用道具 举报

ID:636538 发表于 2020-7-28 17:09 | 显示全部楼层
第74行count = 1 没有分号
回复

使用道具 举报

ID:808700 发表于 2020-7-29 11:14 | 显示全部楼层
语法问题,没分号
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表