找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6551|回复: 16
打印 上一主题 下一主题
收起左侧

error C141: syntax error near 'sbit', expected 'hdata'

[复制链接]
跳转到指定楼层
楼主
ID:1051543 发表于 2022-11-11 20:36 来自触屏版 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STC8实现定时器T060s倒计时代码求改

#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实现定时器T060s倒计时显示这个错误main.c(8): error C141: syntax error near 'sbit', expected 'hdata'
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:384109 发表于 2022-11-11 20:50 | 只看该作者
void delay_ms(void),末尾少了分号
回复

使用道具 举报

板凳
ID:81249 发表于 2022-11-11 21:30 | 只看该作者
void delay_ms(void),这个后面加一个英文的分号
回复

使用道具 举报

地板
ID:81249 发表于 2022-11-11 21:32 | 只看该作者
错误C141:“sbit”附近的语法错误,应为“hdata”
回复

使用道具 举报

5#
ID:399179 发表于 2022-11-11 21:49 来自触屏版 | 只看该作者
sbit上边的函数后没加分号
回复

使用道具 举报

6#
ID:1034262 发表于 2022-11-11 22:26 | 只看该作者
sbit后面的A0 A1 A2换个,名字看看。
回复

使用道具 举报

7#
ID:1051543 发表于 2022-11-12 13:14 来自触屏版 | 只看该作者
人中狼 发表于 2022-11-11 20:50
void delay_ms(void),末尾少了分号

加了分号后还是有错误
main.c(44): warning C206: 'Delay_ms': missing function-prototype                                            main.c(44): error C267: 'Delay_ms': requires ANSI-style prototype
回复

使用道具 举报

8#
ID:1051543 发表于 2022-11-12 13:14 来自触屏版 | 只看该作者
豆子十三 发表于 2022-11-11 21:30
void delay_ms(void),这个后面加一个英文的分号

加了分号后还是有错误
main.c(44): warning C206: 'Delay_ms': missing function-prototype                                            main.c(44): error C267: 'Delay_ms': requires ANSI-style prototype
回复

使用道具 举报

9#
ID:81249 发表于 2022-11-12 13:28 | 只看该作者
3627277 发表于 2022-11-12 13:14
加了分号后还是有错误
main.c(44): warning C206: 'Delay_ms': missing function-prototype             ...

前面声明了延时函数,但是就没有写这个函数
回复

使用道具 举报

10#
ID:624769 发表于 2022-11-12 14:01 | 只看该作者
你 void delay_ms(void) 声明的无参函数,

调用  Delay_ms(5);  却传了参。 不报错才奇怪了。
回复

使用道具 举报

11#
ID:1051543 发表于 2022-11-12 14:25 来自触屏版 | 只看该作者
188610329 发表于 2022-11-12 14:01
你 void delay_ms(void) 声明的无参函数,

调用  Delay_ms(5);  却传了参。 不报错才奇怪了。

那要怎么改呢T_T
回复

使用道具 举报

12#
ID:1051543 发表于 2022-11-12 14:27 来自触屏版 | 只看该作者
豆子十三 发表于 2022-11-12 13:28
前面声明了延时函数,但是就没有写这个函数

要怎么改才对呀
回复

使用道具 举报

13#
ID:155507 发表于 2022-11-12 14:42 | 只看该作者

给你改了一下试试。

  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. }

复制代码
回复

使用道具 举报

14#
ID:77589 发表于 2022-11-14 14:15 | 只看该作者
angmall 发表于 2022-11-12 14:42
给你改了一下试试。

正确!
原来不仅预声明函数没有传入参数,而且开头还是d,
调用的时候传入了参数,而且开头还是D。
所以编译器就认为调用的函数没有预声明。
回复

使用道具 举报

15#
ID:34149 发表于 2022-11-14 14:57 | 只看该作者
声明错误!
函数调用错误!
语法错误!
回复

使用道具 举报

16#
ID:1051543 发表于 2022-11-15 13:01 来自触屏版 | 只看该作者
angmall 发表于 2022-11-12 14:42
给你改了一下试试。

谢谢你,编译没有错误了,但是灯不亮T_T
回复

使用道具 举报

17#
ID:161164 发表于 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. }
复制代码


如果这样都不亮,就要检查接线了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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