標(biāo)題: Keil編譯錯誤error C141: syntax error near 'void', expected ';' [打印本頁]

作者: 廖振基    時間: 2022-1-2 00:11
標(biāo)題: Keil編譯錯誤error C141: syntax error near 'void', expected ';'
剛學(xué)單片機(jī),請教大神看一下我的數(shù)碼管循環(huán)計時程序哪里出錯了非常感謝。
        報錯
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;
                                     }
                                          }
作者: daemondong    時間: 2022-1-2 07:54
下面語句最后少分號;

#define uint unsigned int
sbit LED=P2^1

作者: 13205495918    時間: 2022-1-2 08:18
sbit那一句最后少了個;understand
作者: angmall    時間: 2022-1-2 08:19

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

void delayms(uint);
作者: hslcac    時間: 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. }
復(fù)制代碼




作者: 我會想你的    時間: 2022-1-2 09:13
sbit LED=P2^1;
作者: 廖振基    時間: 2022-1-2 10:47
謝謝,改了兩天實在找不出錯誤了!非常感謝。
作者: 君工創(chuàng)    時間: 2022-1-2 12:02
找不出錯誤就代表完全正確。
作者: lgwd    時間: 2022-1-2 13:33
寫程序或改程序,寫了一小段,甚至改了一兩句后就編譯一次,如果出現(xiàn)錯誤或警告就要檢查原因才容易找到毛病,不要只以為是!有時一個久經(jīng)考驗的程序,查看時無意刪去或多加了一個分號或其它,再編譯時可能錯誤百出,而且根據(jù)錯誤信息都難以找到原因!所以,備份程序也很重要!
作者: Hephaestus    時間: 2022-1-2 15:00
lgwd 發(fā)表于 2022-1-2 13:33
寫程序或改程序,寫了一小段,甚至改了一兩句后就編譯一次,如果出現(xiàn)錯誤或警告就要檢查原因才容易找到毛病 ...

如果只改動一處就出一堆錯誤,那么解決掉第一個錯誤后面的自動沒有了。
作者: 廖振基    時間: 2022-1-2 16:53
hslcac 發(fā)表于 2022-1-2 08:58
錯誤太多,改了你看看

復(fù)制你修改過的的能編譯通過,把我寫的改成和你一抹一樣的通不過!。!實在是郁悶,無語了。。
作者: 廖振基    時間: 2022-1-2 16:55
lgwd 發(fā)表于 2022-1-2 13:33
寫程序或改程序,寫了一小段,甚至改了一兩句后就編譯一次,如果出現(xiàn)錯誤或警告就要檢查原因才容易找到毛病 ...

剛開始接觸,還需要跟大家多學(xué)習(xí)學(xué)習(xí),謝謝。
作者: 廖振基    時間: 2022-1-2 18:15
hslcac 發(fā)表于 2022-1-2 08:58
錯誤太多,改了你看看

你好,首先非常感謝你的幫助。我按照你修改后的代碼修改了我的,依然編譯不過,郁悶至極。
       然后我將你的代碼和我的代碼一段一段互換,發(fā)現(xiàn)問題出在最后一段。也就是只要替換最后整段能編譯過,但是把最后段里的語句一句一句換,編譯不過,排查不出哪句有問題。
作者: 廖振基    時間: 2022-1-2 18:33
已經(jīng)找到錯誤,耽誤大家的時間了,非常感謝大家了,
作者: 廖振基    時間: 2022-1-2 18:34
hslcac 發(fā)表于 2022-1-2 08:58
錯誤太多,改了你看看

錯誤已經(jīng)找到了,非常感謝。!
作者: xhcl    時間: 2022-1-2 18:45
  sbit LED=P2^1 ; 就這個有問題吧,其余沒有應(yīng)該
作者: 廖振基    時間: 2022-1-2 19:25
xhcl 發(fā)表于 2022-1-2 18:45
sbit LED=P2^1 ; 就這個有問題吧,其余沒有應(yīng)該

有這個,還有一個語法錯誤和少一個=。頭都大了,不過編譯通過那一瞬間。。。。。也值了。
作者: ankangyu    時間: 2022-1-2 19:43
“void”附近的語法錯誤,應(yīng)為“;”




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1