找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5329|回复: 17
收起左侧

Keil编译错误error C141: syntax error near 'void', expected ';'

  [复制链接]
ID:999123 发表于 2022-1-2 00:11 | 显示全部楼层 |阅读模式
刚学单片机,请教大神看一下我的数码管循环计时程序哪里出错了非常感谢。
        报错
TIAN.C(7): error C141: syntax error near 'void', expected ';'
tian.c - 1 Error(s), 0 Warning(s).
         
#include"reg51.h"
#define uchar unsigned char

#define uint unsigned int
sbit LED=P2^1

void delayms(uint);
        

uchar  D[]={0x3f,0x06,0x5B,0x4f,0x66,0x6D,0x7D,0x07};//0~7
uchar  W[]={0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff};//Y0~Y7
void display(uint, uint);
uint num ,num1, num2, shi, ge;
        
    uint shi;
      uint ge;
void main(){        
         
           
                TMOD=0x11;
                TH0=(65536-45872)/256;
                TL0=(65536-45872)%256;
                TH1=(65536-45872)/256;
                TL1=(65536-45872)%256;
                EA=1;
                 ET0=1;
                 ET1=1;
                 TR0=1;
                 TR1=1;

                 while(1)
                  
         {
           display(shi,ge);
                                            }
                                            }
        void display(uchar shi,uchar ge)
        
          {
                  P1=W[0];
                  P0=D [shi];
                  P1= W[8];
                  while(5);

                   P1=W[1];
           P0=D[ge];
                        P1=W[8];
                         while(5);
                                           }
        void delayms(uint xms)
        {
        unit i,j;
        for(i=xms;i>0;i--)
          for(j=110;j>0;j--);
          }                                 
                                            
         void T0_time inturrupt 1
         
                  {        TH0=(65536-45872)/256;
                            TL0=(65536-45872)%256;
                              num1++;
                           if(num1==4)
                              {
                                     num1=0;
                                  LED=~LED;
                                                    }
                                                     }
           void T1_time inturrupt 3
           
                    {
                 
                 
                   TH1=(65536-45872)/256;
                            TL1=(65536-45872)%256;
                              num2++;
                           if(num2==20)
                           {
                            num2=0;
                          num++;
                          if(num=60)
                                    num=0;
                                 shi=num/10;
                                  ge=num%10;
                                     }
                                          }
回复

使用道具 举报

ID:827243 发表于 2022-1-2 07:54 | 显示全部楼层
下面语句最后少分号;

#define uint unsigned int
sbit LED=P2^1
回复

使用道具 举报

ID:908826 发表于 2022-1-2 08:18 | 显示全部楼层
sbit那一句最后少了个;understand
回复

使用道具 举报

ID:155507 发表于 2022-1-2 08:19 | 显示全部楼层

#define uint unsigned int
sbit LED=P2^1; //<-------这里少了。

void delayms(uint);
回复

使用道具 举报

ID:89072 发表于 2022-1-2 08:58 | 显示全部楼层
错误太多,改了你看看
  1. #include"reg51.h"
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit LED=P2^1;
  5. void delayms(uint);
  6.         

  7. uchar  D[]={0x3f,0x06,0x5B,0x4f,0x66,0x6D,0x7D,0x07};//0~7
  8. uchar  W[]={0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff};//Y0~Y7
  9. void display(uchar, uchar);
  10. uint num ,num1, num2, shi, ge;
  11.         
  12.     uint shi;
  13.       uint ge;
  14. void main(){        
  15.     TMOD=0x11;
  16.     TH0=(65536-45872)/256;
  17.     TL0=(65536-45872)%256;
  18.     TH1=(65536-45872)/256;
  19.     TL1=(65536-45872)%256;
  20.     EA=1;
  21.     ET0=1;
  22.     ET1=1;
  23.     TR0=1;
  24.     TR1=1;
  25.     while(1)
  26.     {
  27.         display(shi,ge);
  28.     }
  29. }
  30. void display(uchar shi,uchar ge)
  31. {
  32.     P1=W[0];
  33.     P0=D[shi];
  34.     P1= W[8];
  35.         delayms(5);
  36.         P1=W[1];
  37.         P0=D[ge];
  38.         P1=W[8];
  39.         delayms(5);
  40. }
  41. void delayms(uint xms)
  42. {
  43.     uint i,j;
  44.     for(i=xms;i>0;i--)
  45.     for(j=110;j>0;j--);
  46.     }                                          
  47. void T0_time() interrupt 1
  48. {
  49.     TH0=(65536-45872)/256;
  50.     TL0=(65536-45872)%256;
  51.     num1++;
  52.     if(num1==4)
  53.     {
  54.         num1=0;
  55.         LED=~LED;
  56.     }
  57. }
  58. void T1_time() interrupt 3
  59. {
  60.     TL1=(65536-45872)%256;
  61.     num2++;
  62.      if(num2==20)
  63.         {
  64.             num2=0;
  65.             num++;
  66.             if(num==60)
  67.             num=0;
  68.             shi=num/10;
  69.             ge=num%10;
  70.         }
  71. }
复制代码



回复

使用道具 举报

ID:839438 发表于 2022-1-2 09:13 | 显示全部楼层
sbit LED=P2^1;
回复

使用道具 举报

ID:999123 发表于 2022-1-2 10:47 | 显示全部楼层
谢谢,改了两天实在找不出错误了!非常感谢。
回复

使用道具 举报

ID:965189 发表于 2022-1-2 12:02 | 显示全部楼层
找不出错误就代表完全正确。
回复

使用道具 举报

ID:106977 发表于 2022-1-2 13:33 | 显示全部楼层
写程序或改程序,写了一小段,甚至改了一两句后就编译一次,如果出现错误或警告就要检查原因才容易找到毛病,不要只以为是!有时一个久经考验的程序,查看时无意删去或多加了一个分号或其它,再编译时可能错误百出,而且根据错误信息都难以找到原因!所以,备份程序也很重要!
回复

使用道具 举报

ID:883242 发表于 2022-1-2 15:00 | 显示全部楼层
lgwd 发表于 2022-1-2 13:33
写程序或改程序,写了一小段,甚至改了一两句后就编译一次,如果出现错误或警告就要检查原因才容易找到毛病 ...

如果只改动一处就出一堆错误,那么解决掉第一个错误后面的自动没有了。
回复

使用道具 举报

ID:999123 发表于 2022-1-2 16:53 | 显示全部楼层
hslcac 发表于 2022-1-2 08:58
错误太多,改了你看看

复制你修改过的的能编译通过,把我写的改成和你一抹一样的通不过!!!!实在是郁闷,无语了!!!
回复

使用道具 举报

ID:999123 发表于 2022-1-2 16:55 | 显示全部楼层
lgwd 发表于 2022-1-2 13:33
写程序或改程序,写了一小段,甚至改了一两句后就编译一次,如果出现错误或警告就要检查原因才容易找到毛病 ...

刚开始接触,还需要跟大家多学习学习,谢谢。
回复

使用道具 举报

ID:999123 发表于 2022-1-2 18:15 | 显示全部楼层
hslcac 发表于 2022-1-2 08:58
错误太多,改了你看看

你好,首先非常感谢你的帮助。我按照你修改后的代码修改了我的,依然编译不过,郁闷至极。
       然后我将你的代码和我的代码一段一段互换,发现问题出在最后一段。也就是只要替换最后整段能编译过,但是把最后段里的语句一句一句换,编译不过,排查不出哪句有问题。
回复

使用道具 举报

ID:999123 发表于 2022-1-2 18:33 | 显示全部楼层
已经找到错误,耽误大家的时间了,非常感谢大家了,
回复

使用道具 举报

ID:999123 发表于 2022-1-2 18:34 | 显示全部楼层
hslcac 发表于 2022-1-2 08:58
错误太多,改了你看看

错误已经找到了,非常感谢!!!
回复

使用道具 举报

ID:942077 发表于 2022-1-2 18:45 | 显示全部楼层
  sbit LED=P2^1 ; 就这个有问题吧,其余没有应该
回复

使用道具 举报

ID:999123 发表于 2022-1-2 19:25 | 显示全部楼层
xhcl 发表于 2022-1-2 18:45
sbit LED=P2^1 ; 就这个有问题吧,其余没有应该

有这个,还有一个语法错误和少一个=。头都大了,不过编译通过那一瞬间。。。。。也值了。
回复

使用道具 举报

ID:587810 发表于 2022-1-2 19:43 | 显示全部楼层
“void”附近的语法错误,应为“;”
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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