找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1072|回复: 12
收起左侧

真心求助,这个单片机代码有什么问题error C141: syntax error near 'void'

[复制链接]
ID:1102478 发表于 2023-12-4 11:38 | 显示全部楼层 |阅读模式
单片机源程序如下:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit m1=P3^1;   //主持人按键答对加分,按一下加一分
  5. sbit m2=P3^2;   //答错减分
  6. sbit k1=P1^0;
  7. sbit k2=P1^1;
  8. sbit k3=P1^2;
  9. sbit k4=P1^3;
  10. sbit k5=P1^4;
  11. sbit k6=P1^5;      
  12. sbit k7=P1^6;
  13. sbit k8=P1^7;  //选手按键
  14. sbit k=P3^0;  //主持人按键开始
  15. sbit beep=P3^7;   //蜂鸣器
  16. uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77};  //0-9代码
  17. uchar shiwei,gewei,xuanshou,count,i,second;
  18. uchar score1,score2,score3,score4,score5,score6,score7,score8;//选手1~8的分数
  19. uint t,m,n,a,a1,a2,a3,a4,a5,a6,a7,a8;
  20. void Timer()
  21. {   TMOD|=0x01;
  22.          TH0=0xd8;  //初值55536,计数10000次,每次1US,总计10ms
  23.          TL0=0xf0;
  24.          IE=0x82;  //这里是中断优先级控制EA=1(开总中断),ET0=1(定时器0允许中断),这里用定时器0来定时
  25.         TR0=1;          }
  26. void tim(void) interrupt 1 using 1  //为定时中断TR0
  27. {   TH0=0xd8;  //重新赋值
  28.          TL0=0xf0;
  29.          count++;
  30.          if(count==100) //100*10ms=1秒
  31.         {  count=0;
  32.            second--; //秒减1 }
  33. }
  34. void delay(uint z)  //延时函数
  35. {   uint x,y;
  36.          for(x=z;x>0;x--)
  37.                 for(y=110;y>0;y--);        }
  38. void display (uchar shiwei,gewei,xuanshou) //显示函数
  39. {        P2=0xfe;    //打开显示时间十位的位选
  40.         P0=shiwei;  //显示十位
  41.         delay(5);
  42. P2=0xfd;           //个位位选
  43.         P0=gewei;
  44.         delay(5);
  45.         P2=0xf7;    //选手位选
  46.         P0=xuanshou;
  47.         delay(5);
  48. }

  49. void dis(void)
  50. {    shiwei=tab[second/10];
  51.          gewei=tab[second%10];
  52.          xuanshou=tab[i];
  53.          display (shiwei,gewei,xuanshou);
  54. }
  55. void init()   //初始化函数
  56. {   P2=0x04;
  57.         P0=0x3f;
  58.         t=0;
  59.         beep=0;
  60.         i=0;
  61.         second=29;
  62.         score1=60;
  63.         score2=60;
  64.         score3=60;
  65.         score4=60;
  66.         score5=60;
  67.         score6=60;
  68.         score7=60;
  69.         score8=60;
  70.         a1=1;
  71.         a2=1;
  72.         a3=1;
  73.         a4=1;
  74.         a5=1;
  75.         a6=1;
  76.         a7=1;
  77.         a8=1;
  78. }
  79. void main()
  80. {   init();
  81.         if(k==0)  //主持人按下开始键
  82.         {   Timer();
  83.                  delay(10);
  84.                  while(!k);
  85.                  while(1)
  86.                 {   dis();
  87.                          m=0;
  88.                          n=0;
  89.                          if(second==10){beep=1;delay(500);beep=0;}
  90.                          if(second==0) {TR0=0;n=1;
  91.                                                         if(k==0)
  92.                                                         {beep=1;delay(500);beep=0;second=29;TR0=1;m=1;}
  93.                                                   }
  94.                         if(n==0)
  95.                         {  if(k1==0) {delay(5);if(k1==0);while(!k1);t=1;}
  96.                        else if(k2==0) {delay(5);if(k2==0);while(!k2);t=2;}
  97.                        else if(k3==0) {delay(5);if(k3==0);while(!k2);t=3;}
  98.                        else if(k4==0) {delay(5);if(k4==0);while(!k2);t=4;}
  99.                        else if(k5==0) {delay(5);if(k5==0);while(!k2);t=5;}
  100.                 else if(k6==0) {delay(5);if(k6==0);while(!k2);t=6;}
  101.                 else if(k7==0) {delay(5);if(k7==0);while(!k2);t=7;}
  102.                 else if(k8==0) {delay(5);if(k8==0);while(!k2);t=8;}
  103.                 else if(k==0)  {delay(5);if(k==0);while(!k);t=0;i=0;second=29;beep=1;delay(500);beep=0;TR0=1;}
  104.                         }
  105.         while(t)
  106. { if(m==0) //开关,保证程序只执行一次
  107.                                 {   switch(t)
  108.                                         {   case 1:
  109.                                                         {  TR0=0;i=1;second=0;beep=1;delay(500);beep=0;
  110.                                                            a1=0;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;m=1;break;
  111.                                                         }
  112.                                                 case 2:
  113.                                                         {   TR0=0;i=2;second=0;beep=1;delay(500);beep=0;
  114.                                                                 a2=0;a1=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;m=1;break;
  115.                                                         }
  116.                                                 case 3:
  117.                                                         {   TR0=0;i=3;second=0;beep=1;delay(500);beep=0;
  118.                                                                 a3=0;a1=1;a2=1;a4=1;a5=1;a6=1;a7=1;a8=1;m=1;break;
  119.                                                         }
  120.                                                 case 4:
  121.                                                         {   TR0=0;i=4;second=0;beep=1;delay(500);beep=0;
  122.                                                                 a4=0;a1=1;a2=1;a3=1;a5=1;a6=1;a7=1;a8=1;m=1;break;
  123.                                                         }
  124.                                                 case 5:
  125.                                                         {   TR0=0;i=5;second=0;beep=1;delay(500);beep=0;
  126.                                                                 a5=0;a1=1;a2=1;a3=1;a4=1;a6=1;a7=1;a8=1;m=1;break;
  127.                                                         }
  128.                                                 case 6:
  129.                                                         {   TR0=0;i=6;second=0;beep=1;delay(500);beep=0;
  130.                                                                 a6=0;a1=1;a2=1;a3=1;a4=1;a5=1;a7=1;a8=1;m=1;break;
  131.                                                         }
  132.                                                 case 7:
  133.                                                         {  TR0=0;i=7;second=0;beep=1;delay(500);beep=0;
  134.                                                                 a7=0;a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a8=1;m=1;break;
  135.                                                         }
  136.                                                 case 8:
  137.                                                         {   TR0=0;i=8;second=0;beep=1;delay(500);beep=0;
  138.                                                                 a8=0;a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;m=1;break;
  139.                                                         }
  140.                                         }
  141.                                 }
  142.         if(a1==0) //选手1的分数
  143.                 {        second=score1;
  144.                         dis();
  145.                             if(m1==0) {delay(5);if(m1==0);while(!m1);beep=1;delay(100);beep=0;score1+=1;if(score1==99)score1=60;}
  146.       else if(m2==0) {delay(5);if(m2==0);while(!m2);beep=1;delay(100);beep=0;score1-=1;if(score1==0)score1=60;}
  147. dis();
  148.                 }
  149.         else if(a2==0)
  150.                 {   second=score2;
  151.                         dis();
  152.                                 if(m1==0) {delay(5);if(m1==0);while(!m1);beep=1;delay(100);beep=0;score2+=1;if(score2==99)score2=60;}
  153.                    else if(m2==0) {delay(5);if(m2==0);while(!m2);beep=1;delay(100);beep=0;score2-=1;if(score2==0)score2=60;}
  154.                         dis();            
  155.                 }
  156.         else if(a3==0)
  157.                 {        second=score3;
  158.                         dis();
  159.                                 if(m1==0) {delay(5);if(m1==0);while(!m1);beep=1;delay(100);beep=0;score3+=1;if(score3==99)score3=60;}
  160.                    else if(m2==0) {delay(5);if(m2==0);while(!m2);beep=1;delay(100);beep=0;score3-=1;if(score3==0)score3=60;}
  161.                         second=score3;
  162.                         dis();
  163.                 }
  164. else if(a4==0)
  165.                 {   second=score4;
  166.                         dis();
  167.                                 if(m1==0) {delay(5);if(m1==0);while(!m1);beep=1;delay(100);beep=0;score4+=1;if(score4==99)score4=60;}
  168.                    else if(m2==0) {delay(5);if(m2==0);while(!m2);beep=1;delay(100);beep=0;score4-=1;if(score4==0)score4=60;}
  169.                         second=score4;
  170.                         dis();
  171.                 }
  172.         else if(a5==0)
  173.                 {   second=score5;
  174.                         dis();
  175.                                 if(m1==0) {delay(5);if(m1==0);while(!m1);beep=1;delay(100);beep=0;score5+=1;if(score5==99)score5=60;}
  176.                    else if(m2==0) {delay(5);if(m2==0);while(!m2);beep=1;delay(100);beep=0;score5-=1;if(score5==0)score5=60;}
  177.                         second=score5;
  178.                         dis();
  179.                 }
  180. else if(a6==0)
  181.                 {   second=score6;
  182.                         dis();
  183.                                 if(m1==0) {delay(5);if(m1==0);while(!m1);beep=1;delay(100);beep=0;score6+=1;if(score6==99)score6=60;}
  184.                    else if(m2==0) {delay(5);if(m2==0);while(!m2);beep=1;delay(100);beep=0;score6-=1;if(score6==0)score6=60;}
  185.                         second=score6;
  186.                         dis();
  187.                 }
  188.         else if(a7==0)
  189.                 {   second=score7;
  190.                         dis();
  191.                                 if(m1==0) {delay(5);if(m1==0);while(!m1);beep=1;delay(100);beep=0;score7+=1;if(score7==99)score7=60;}
  192.                    else if(m2==0) {delay(5);if(m2==0);while(!m2);beep=1;delay(100);beep=0;score7-=1;if(score7==0)score7=60;}
  193.                         second=score7;
  194.                         dis();
  195.                 }
  196.         else if(a8==0)
  197.                 {   second=score8;
  198.                         dis();
  199.                                 if(m1==0) {delay(5);if(m1==0);while(!m1);beep=1;delay(100);beep=0;score8+=1;if(score8==99)score8=60;}
  200.                    else if(m2==0) {delay(5);if(m2==0);while(!m2);beep=1;delay(100);beep=0;score8-=1;if(score8==0)score8=60;}
  201.                         second=score8;
  202.                         dis();
  203.                 }
  204.                 if(k==0){i=0;t=0;second=29;beep=1;delay(500);beep=0;TR0=1;}
  205.                         while(!k);
  206.                         }               
  207.                         }
  208.         }
复制代码

keil_1.c(34): error C141: syntax error near 'void'

keil_1.c(34): error C141: syntax error near 'void'
回复

使用道具 举报

ID:1102478 发表于 2023-12-4 11:39 | 显示全部楼层
八路智能抢答器
回复

使用道具 举报

ID:1088099 发表于 2023-12-4 13:45 | 显示全部楼层
34行延时函数中for循环当中至少得有一句执行语句吧
回复

使用道具 举报

ID:94031 发表于 2023-12-4 15:25 | 显示全部楼层
缺两个大括弧,查一下逻辑关系,补上。
回复

使用道具 举报

ID:94031 发表于 2023-12-4 15:35 | 显示全部楼层

这个引号叫你注释了

这个引号叫你注释了
这个引号叫你注释了。
回复

使用道具 举报

ID:267719 发表于 2023-12-4 15:56 | 显示全部楼层
32行把右花括号注释了。注意良好的编程风格。
           second--; //秒减1 }
回复

使用道具 举报

ID:1096212 发表于 2023-12-4 15:57 | 显示全部楼层
void tim(void) interrupt 1 using 1这个函数里面的所有大括号删掉重新打一遍就可以了
回复

使用道具 举报

ID:1102509 发表于 2023-12-4 16:44 | 显示全部楼层
重新延时设置
回复

使用道具 举报

ID:1102493 发表于 2023-12-4 16:44 | 显示全部楼层
延时函数for循环里面没有执行语句,可以改为while语句
回复

使用道具 举报

ID:883242 发表于 2023-12-4 17:30 | 显示全部楼层
问题出在第32行,你再反复瞅一瞅。
回复

使用道具 举报

ID:1102558 发表于 2023-12-4 19:39 | 显示全部楼层
问题出在第32行,你再看看。
回复

使用道具 举报

ID:1102558 发表于 2023-12-4 19:44 | 显示全部楼层
延时函数那里有问题
回复

使用道具 举报

ID:712097 发表于 2023-12-4 20:45 | 显示全部楼层
同意5楼观点。另外程序最末尾缺一个反花括号-- }
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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