標(biāo)題: error C141: syntax error near 'sbit', expected 'hdata' [打印本頁(yè)]

作者: 3627277    時(shí)間: 2022-11-11 20:36
標(biāo)題: error C141: syntax error near 'sbit', expected 'hdata'
STC8實(shí)現(xiàn)定時(shí)器T060s倒計(jì)時(shí)代碼求改

#include <STC8H.H>
void delay_ms(void)

/*74HC245*/
#define OUTPUT P0


sbit A0 = P2^2;
sbit A1 = P2^3;
sbit A2 = P2^4;

unsigned char second = 60;
unsigned char count = 200;
char code LED_7SEG_CAT[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
char code LED[10]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};   

void Timer0Init(void)               
{
        AUXR &= 0X7F;         
        TMOD &= 0XF0;         
        TL0 = 0XF0;                 
        TH0 = 0XD8;                 
        TF0 = 0;                 
        TR0 = 1;                 
}

void main(void)
{

        P0M0 = 0X00;
        P0M1 = 0X00;
        P2M0 = 0X00;
        P2M1 = 0XE3;
        EA = 1;         
        ET0 = 1;               

        Timer0Init();        
        while(1)
        {
                A0 = 1;
                A1 = 0;
                A2 = 0;
                OUTPUT = LED_7SEG_CAT[second/10];
                Delay_ms(5);
               
                A0 = 0;
                A1 = 0;
                A2 = 0;
                OUTPUT = LED_7SEG_CAT[second%10];
                Delay_ms(5);        
        }        
}

void Timer0() interrupt 1  
{
        count--;
        if(count == 0)
        {
                count = 200;
                second--;
                if(second == 0)
                {
                        second = 60;
                }
        }
}


STC8實(shí)現(xiàn)定時(shí)器T060s倒計(jì)時(shí)顯示這個(gè)錯(cuò)誤main.c(8): error C141: syntax error near 'sbit', expected 'hdata'
作者: 人中狼    時(shí)間: 2022-11-11 20:50
void delay_ms(void),末尾少了分號(hào)
作者: 豆子十三    時(shí)間: 2022-11-11 21:30
void delay_ms(void),這個(gè)后面加一個(gè)英文的分號(hào)

作者: 豆子十三    時(shí)間: 2022-11-11 21:32
錯(cuò)誤C141:“sbit”附近的語(yǔ)法錯(cuò)誤,應(yīng)為“hdata”
作者: 快樂(lè)眼淚    時(shí)間: 2022-11-11 21:49
sbit上邊的函數(shù)后沒(méi)加分號(hào)
作者: coody_sz    時(shí)間: 2022-11-11 22:26
sbit后面的A0 A1 A2換個(gè),名字看看。
作者: 3627277    時(shí)間: 2022-11-12 13:14
人中狼 發(fā)表于 2022-11-11 20:50
void delay_ms(void),末尾少了分號(hào)

加了分號(hào)后還是有錯(cuò)誤
main.c(44): warning C206: 'Delay_ms': missing function-prototype                                            main.c(44): error C267: 'Delay_ms': requires ANSI-style prototype
作者: 3627277    時(shí)間: 2022-11-12 13:14
豆子十三 發(fā)表于 2022-11-11 21:30
void delay_ms(void),這個(gè)后面加一個(gè)英文的分號(hào)

加了分號(hào)后還是有錯(cuò)誤
main.c(44): warning C206: 'Delay_ms': missing function-prototype                                            main.c(44): error C267: 'Delay_ms': requires ANSI-style prototype
作者: 豆子十三    時(shí)間: 2022-11-12 13:28
3627277 發(fā)表于 2022-11-12 13:14
加了分號(hào)后還是有錯(cuò)誤
main.c(44): warning C206: 'Delay_ms': missing function-prototype             ...

前面聲明了延時(shí)函數(shù),但是就沒(méi)有寫(xiě)這個(gè)函數(shù)

作者: 188610329    時(shí)間: 2022-11-12 14:01
你 void delay_ms(void) 聲明的無(wú)參函數(shù),

調(diào)用  Delay_ms(5);  卻傳了參。 不報(bào)錯(cuò)才奇怪了。
作者: 3627277    時(shí)間: 2022-11-12 14:25
188610329 發(fā)表于 2022-11-12 14:01
你 void delay_ms(void) 聲明的無(wú)參函數(shù),

調(diào)用  Delay_ms(5);  卻傳了參。 不報(bào)錯(cuò)才奇怪了。

那要怎么改呢T_T
作者: 3627277    時(shí)間: 2022-11-12 14:27
豆子十三 發(fā)表于 2022-11-12 13:28
前面聲明了延時(shí)函數(shù),但是就沒(méi)有寫(xiě)這個(gè)函數(shù)

要怎么改才對(duì)呀
作者: angmall    時(shí)間: 2022-11-12 14:42
3627277 發(fā)表于 2022-11-12 14:27
要怎么改才對(duì)呀

給你改了一下試試。

  1. #include <STC8H.H>

  2. void Delay_ms(unsigned int ms);

  3. /*74HC245*/
  4. #define OUTPUT P0


  5. sbit A0 = P2^2;
  6. sbit A1 = P2^3;
  7. sbit A2 = P2^4;

  8. unsigned char second = 60;
  9. unsigned char count = 200;
  10. char code LED_7SEG_CAT[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
  11. char code LED[10]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};   

  12. void Delay_ms(unsigned int ms)                //@12.000MHz
  13. {
  14.         unsigned char i, j;
  15.     do
  16.         {
  17.                 i = 16;
  18.                 j = 147;
  19.                 do
  20.                 {
  21.                         while (--j);
  22.                 } while (--i);
  23.         } while (--ms);
  24. }


  25. void Timer0Init(void)               
  26. {
  27.         AUXR &= 0X7F;         
  28.         TMOD &= 0XF0;         
  29.         TL0 = 0XF0;                 
  30.         TH0 = 0XD8;                 
  31.         TF0 = 0;                 
  32.         TR0 = 1;                 
  33. }

  34. void main(void)
  35. {

  36.         P0M0 = 0X00;
  37.         P0M1 = 0X00;
  38.         P2M0 = 0X00;
  39.         P2M1 = 0XE3;
  40.         EA = 1;         
  41.         ET0 = 1;               

  42.         Timer0Init();        
  43.         while(1)
  44.         {
  45.                 A0 = 1;
  46.                 A1 = 0;
  47.                 A2 = 0;
  48.                 OUTPUT = LED_7SEG_CAT[second/10];
  49.                 Delay_ms(5);
  50.                
  51.                 A0 = 0;
  52.                 A1 = 0;
  53.                 A2 = 0;
  54.                 OUTPUT = LED_7SEG_CAT[second%10];
  55.                 Delay_ms(5);        
  56.         }        
  57. }

  58. void Timer0() interrupt 1  
  59. {
  60.         count--;
  61.         if(count == 0)
  62.         {
  63.                 count = 200;
  64.                 second--;
  65.                 if(second == 0)
  66.                 {
  67.                         second = 60;
  68.                 }
  69.         }
  70. }

復(fù)制代碼

作者: Longan.Wang    時(shí)間: 2022-11-14 14:15
angmall 發(fā)表于 2022-11-12 14:42
給你改了一下試試。

正確!
原來(lái)不僅預(yù)聲明函數(shù)沒(méi)有傳入?yún)?shù),而且開(kāi)頭還是d,
調(diào)用的時(shí)候傳入了參數(shù),而且開(kāi)頭還是D。
所以編譯器就認(rèn)為調(diào)用的函數(shù)沒(méi)有預(yù)聲明。
作者: dyx811    時(shí)間: 2022-11-14 14:57
聲明錯(cuò)誤!
函數(shù)調(diào)用錯(cuò)誤!
語(yǔ)法錯(cuò)誤!
作者: 3627277    時(shí)間: 2022-11-15 13:01
angmall 發(fā)表于 2022-11-12 14:42
給你改了一下試試。

謝謝你,編譯沒(méi)有錯(cuò)誤了,但是燈不亮T_T
作者: lkc8210    時(shí)間: 2022-11-15 13:28
  1. void main()
  2. {
  3.         A0 = 0;
  4.         A1 = 0;
  5.         A2 = 0;
  6.         OUTPUT = 0xC0;
  7.         while(1);
  8. }
復(fù)制代碼


如果這樣都不亮,就要檢查接線了




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