找回密码
 立即注册

QQ登录

只需一步,快速开始

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

出现 error C141: syntax error near 'void', expected '__asm'真的不会改了

[复制链接]
ID:1043058 发表于 2022-8-27 22:18 | 显示全部楼层 |阅读模式
有没有大佬帮忙看一下,真的不会改了  这是源代码

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code segdata[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
uchar dispbitcode[]={0xfe,0xfd,0xbf,0x7f};
uchar key,xuanshou;
uchar sec,cnt,sectemp,i;
uchar flag=0;
bit qiangda=0,shezhi=0,inc=0,dec=0;
void delayms(uint n)
{
   uchar i;
   while(n--)
         for(i=0;i<113;i++);
}
void Timer0Init(void)
        {        
                TMOD=0x01;
                TH0=(65536-2000)/256;
                TL0=(65536-2000)%256;
                TF0=0;
                TR0=1;  
                ET0=1;
                EA=1;
        }
       
        void timer0() interrupt 1
                {
                TH0=(65536-2000)/256;
                TL0=(65536-2000)%256;
                i++;
                if(i==9)
                i=1;
         void disp(void);
        }
        void keyscan()
{
   uchar temp,i;
   P2=0X0F;
   temp=P2&0x0F;
   if(temp!=0x0F)
   {
     for(i=0;i<200;i++);
     temp=P2&0x0F;
     if(temp!=0x0F)
     {
       P2=0XF7;
       temp=P2&0xf0;
       if(temp!=0xf0)
       {
         switch(temp)
                                         {
             case 0x70:key=9;break;
             case 0xb0:key=10;break;
             case 0xd0:key=11;break;
             case 0xe0:key=12;break;
           }
                         }
                         while((P2&0XF0)!=0XF0);
                         P2=0xfb;//2
                         temp=P2&0xf0;
                         if(temp!=0xf0)
                         {
                           switch(temp)
                                 {
                                         case 0x70:key=8;break;
           case 0xb0:key=7;break;
           case 0xd0:key=6;break;
           case 0xe0:key=5;break;
                                 }
                         }
                         
                         P2=0xfd;//3
                         temp=P2&0xf0;
                         if(temp!=0xf0)
                         {
                            switch(temp)
                                 {
                                         case 0x70:key=4;break;
           case 0xb0:key=3;break;
           case 0xd0:key=2;break;
           case 0xe0:key=1;break;
                                 }
                         }
                         while((P2&0XF0)!=0XF0);
                 }
  void disp(void)
                {
                        P0=dispbitcode[0];
                        P1=segdata[sec/10];
                           delayms(2);
                        P0=dispbitcode[1];
                        P1=segdata[sec%10];
                          delayms(2);
                        P0=dispbitcode[2];
                  P1=segdata[xuanshou/10];
                    delayms(2);
                  P0=dispbitcode[3];
                  P1=segdata[xuanshou%10];
                  delayms(2);
                }
                }
                void flash_disp(void)
                        {
                                uchar i;
                                for(i=0;i<50;i++)  
                                {
                                        P0=dispbitcode[0];
                                        P1=segdata[sec/10];
                                        delayms(2);
                                        P0=dispbitcode[1];
                                        P1=segdata[sec%10];
                                        delayms(2);
                                        P0=dispbitcode[2];
                                        P1=segdata[xuanshou/10];
                                        delayms(2);
                                        P0=dispbitcode[3];
                                        P1=segdata[xuanshou%10];
                                        delayms(2);
                                        }
                                for(i=0;i<50;i++)
                                        {
                            P0=dispbitcode[2];
                            P1=segdata[xuanshou/10];
                             delayms(2);
                            P0=dispbitcode[3];
                            P1=segdata[xuanshou%10];
                            delayms(2);
                            }
                        }


回复

使用道具 举报

ID:970221 发表于 2022-8-28 05:35 来自手机 | 显示全部楼层
是这句么
    void timer0() interrupt 1
回复

使用道具 举报

ID:883242 发表于 2022-8-28 08:00 | 显示全部楼层
错误发生在第几行?把这个信息贴出来。
回复

使用道具 举报

ID:796531 发表于 2022-8-28 09:34 | 显示全部楼层
注意你的 } , void keyscan()函数少了,  void disp(void) 的多了
回复

使用道具 举报

ID:59202 发表于 2022-8-29 23:15 | 显示全部楼层
void timer0() interrupt 1
{
      TH0=(65536-2000)/256;
      TL0=(65536-2000)%256;
       i++;
       if(i==9)
       i=1;
       void disp(void);
}
这个中断函数中调用disp函数,不要写上void了,直接写disp();
回复

使用道具 举报

ID:213173 发表于 2022-8-30 08:39 | 显示全部楼层
楼主这是胡乱拼凑的代码,没有主函数main(),就算补齐了并纠正语法和符号错误能通过编译也不可能正常运行。中断调用disp();,运行时间远大于中断周期。
  1. #include <reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar code segdata[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
  5. uchar dispbitcode[]={0xfe,0xfd,0xbf,0x7f};
  6. uchar key,xuanshou;
  7. uchar sec,cnt,sectemp,i;
  8. uchar flag=0;
  9. bit qiangda=0,shezhi=0,inc=0,dec=0;

  10. void delayms(uint n)
  11. {
  12.         uchar i;
  13.         while(n--)
  14.         for(i=0;i<113;i++);
  15. }
  16. void Timer0Init(void)
  17. {         
  18.         TMOD=0x01;
  19.         TH0=(65536-2000)/256;
  20.         TL0=(65536-2000)%256;
  21.         TF0=0;
  22.         TR0=1;  
  23.         ET0=1;
  24.         EA=1;
  25. }

  26. void keyscan()
  27. {
  28.         uchar temp,i;
  29.         P2=0X0F;
  30.         temp=P2&0x0F;
  31.         if(temp!=0x0F)
  32.         {
  33.                 for(i=0;i<200;i++);
  34.                         temp=P2&0x0F;
  35.                 if(temp!=0x0F)
  36.                 {
  37.                         P2=0XF7;
  38.                         temp=P2&0xf0;
  39.                         if(temp!=0xf0)
  40.                         {
  41.                                 switch(temp)
  42.                                 {
  43.                                         case 0x70:key=9;break;
  44.                                         case 0xb0:key=10;break;
  45.                                         case 0xd0:key=11;break;
  46.                                         case 0xe0:key=12;break;
  47.                                 }
  48.                         }
  49.                         while((P2&0XF0)!=0XF0);
  50.                         P2=0xfb;//2
  51.                         temp=P2&0xf0;
  52.                         if(temp!=0xf0)
  53.                         {
  54.                                 switch(temp)
  55.                                 {
  56.                                         case 0x70:key=8;break;
  57.                                         case 0xb0:key=7;break;
  58.                                         case 0xd0:key=6;break;
  59.                                         case 0xe0:key=5;break;
  60.                                 }
  61.                         }

  62.                         P2=0xfd;//3
  63.                         temp=P2&0xf0;
  64.                         if(temp!=0xf0)
  65.                         {
  66.                                 switch(temp)
  67.                                 {
  68.                                         case 0x70:key=4;break;
  69.                                         case 0xb0:key=3;break;
  70.                                         case 0xd0:key=2;break;
  71.                                         case 0xe0:key=1;break;
  72.                                 }
  73.                         }
  74.                         while((P2&0XF0)!=0XF0);
  75.                 }
  76.         }
  77. }
  78. void disp(void)
  79. {
  80.         P0=dispbitcode[0];
  81.         P1=segdata[sec/10];
  82.         delayms(2);
  83.         P0=dispbitcode[1];
  84.         P1=segdata[sec%10];
  85.         delayms(2);
  86.         P0=dispbitcode[2];
  87.         P1=segdata[xuanshou/10];
  88.         delayms(2);
  89.         P0=dispbitcode[3];
  90.         P1=segdata[xuanshou%10];
  91.         delayms(2);
  92. }
  93. void flash_disp(void)
  94. {
  95.         uchar i;
  96.         for(i=0;i<50;i++)  
  97.         {
  98.                 P0=dispbitcode[0];
  99.                 P1=segdata[sec/10];
  100.                 delayms(2);
  101.                 P0=dispbitcode[1];
  102.                 P1=segdata[sec%10];
  103.                 delayms(2);
  104.                 P0=dispbitcode[2];
  105.                 P1=segdata[xuanshou/10];
  106.                 delayms(2);
  107.                 P0=dispbitcode[3];
  108.                 P1=segdata[xuanshou%10];
  109.                 delayms(2);
  110.         }
  111.         for(i=0;i<50;i++)
  112.         {
  113.                 P0=dispbitcode[2];
  114.                 P1=segdata[xuanshou/10];
  115.                 delayms(2);
  116.                 P0=dispbitcode[3];
  117.                 P1=segdata[xuanshou%10];
  118.                 delayms(2);
  119.         }
  120. }
  121. void main()
  122. {
  123.         Timer0Init();
  124.         while(1)
  125.         {
  126.                 keyscan();
  127.                 flash_disp();
  128.         }
  129. }

  130. void timer0() interrupt 1
  131. {
  132.         TH0=(65536-2000)/256;
  133.         TL0=(65536-2000)%256;
  134.         i++;
  135.         if(i==9)
  136.                 i=1;
  137.         disp();
  138. }
复制代码
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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