找回密码
 立即注册
查看: 841|回复: 7

编译一个STC8串口例程,出现好多错误

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:44
  • 最近打卡:2024-02-08 07:37:21

9

主题

31

回帖

349

积分

中级会员

积分
349
发表于 2023-12-28 15:38:27 | 显示全部楼层 |阅读模式
截图202312281530074214.jpg //========================================================================
// 函数: void timer0_ISR (void) interrupt TIMER0_VECTOR
// 描述:  timer0中断函数.
// 参数: none.
// 返回: none.
// 版本: V1.0, 2016-5-12
//========================================================================
void timer0_ISR (void) interrupt TIMER0_VECTOR
{
    if(RX1_TimeOut != 0)
    {
        if(--RX1_TimeOut==0)    //超时
        {
            if(RX1_cnt != 0)    //接收有数据
            {
                B_RX1_OK = 1;    //标志已收到数据块
            }
        }
    }
}


compiling MODBUS.c...
MODBUS.C(304): error C141: syntax error near 'TIMER0_VECTOR', expected 'const'
MODBUS.C(305): error C132: 'TIMER0_VECTOR': not in formal parameter list
MODBUS.C(305): error C141: syntax error near '{'
MODBUS.C(308): error C132: 'RX1_TimeOut': not in formal parameter list
MODBUS.C(312): error C244: 'B_RX1_OK': can't initialize, bad type or class
MODBUS.C(312): error C132: 'B_RX1_OK': not in formal parameter list
MODBUS.C(313): error C141: syntax error near '}'
MODBUS.c - 7 Error(s), 0 Warning(s).





回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6845

积分

论坛元老

积分
6845
发表于 2023-12-28 18:40:37 | 显示全部楼层
提示TIMER0_VECTOR 没定义,如果跟头文件名称不同的话,用头文件里面定义的名称。
或者直接改成中断向量号,定时器0中断向量号为“1”。
截图202312281838524605.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:44
  • 最近打卡:2024-02-08 07:37:21

9

主题

31

回帖

349

积分

中级会员

积分
349
发表于 2023-12-28 18:51:19 | 显示全部楼层
改成这样了
void timer0_ISR (void)interrupt 1
{
    if(RX1_TimeOut != 0)
    {
        if(--RX1_TimeOut==0)    //超时
        {
            if(RX1_cnt != 0)    //接收有数据
            {
                B_RX1_OK = 1;    //标志已收到数据块
            }
        }
    }
}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:44
  • 最近打卡:2024-02-08 07:37:21

9

主题

31

回帖

349

积分

中级会员

积分
349
发表于 2023-12-28 18:53:55 | 显示全部楼层
//========================================================================
void    UART1_config(u32 brt, u8 timer, u8 io)    // brt: 通信波特率,  timer=2: 波特率使用定时器2, 其它值: 使用Timer1做波特率. io=0: 串口1切换到P3.0 P3.1,  =1: 切换到P3.6 P3.7, =2: 切换到P1.6 P1.7,  =3: 切换到P4.3 P4.4.
{
    brt = 65536UL - (MAIN_Fosc / 4) / brt;
    if(timer == 2)    //波特率使用定时器2
    {
        AUXR |= 0x01;        //S1 BRT Use Timer2;
        SetTimer2Baudraye((u16)brt);
    }

    else        //波特率使用定时器1
    {
        TR1 = 0;
        AUXR &= ~0x01;        //S1 BRT Use Timer1;
        AUXR |=  (1<<6);    //Timer1 set as 1T mode
        TMOD &= ~(1<<6);    //Timer1 set As Timer
        TMOD &= ~0x30;        //Timer1_16bitAutoReload;
        TH1 = (u8)(brt >> 8);
        TL1 = (u8)brt;
        ET1 = 0;            // 禁止Timer1中断
        INTCLKO&= ~0x02;    // Timer1不输出高速时钟
        TR1  = 1;            // 运行Timer1
    }

         if(io == 1)    {S1_USE_P36P37();    P3n_standard(0xc0);}    //切换到 P3.6 P3.7
    else if(io == 2)    {S1_USE_P16P17();    P1n_standard(0xc0);}    //切换到 P1.6 P1.7
    else if(io == 3)    {S1_USE_P43P44();    P4n_standard(0x18);}    //切换到 P4.3 P4.4
    else                {S1_USE_P30P31();    P3n_standard(0x03);}    //切换到 P3.0 P3.1

    SCON = (SCON & 0x3f) | (1<<6);    // 8位数据, 1位起始位, 1位停止位, 无校验
//    PS  = 1;    //高优先级中断
    ES  = 1;    //允许中断
    REN = 1;    //允许接收
}


现在出现这些错误了
MODBUS.C(374): warning C206: 'S1_USE_P36P37': missing function-prototype
MODBUS.C(374): warning C206: 'P3n_standard': missing function-prototype
MODBUS.C(374): error C267: 'P3n_standard': requires ANSI-style prototype


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:524
  • 最近打卡:2025-05-04 02:13:29

10

主题

1161

回帖

5133

积分

论坛元老

积分
5133
发表于 2023-12-28 23:02:04 | 显示全部楼层
按提示加上这些定义后正常了,哎,头文件不统一造成
#define                TIMER0_VECTOR        1
#define                S1_USE_P36P37()                                        P_SW1  =  (P_SW1 & ~0xc0) | 0x40        //UART1 使用P3.6 P3.7口
#define                S1_USE_P16P17()                                        P_SW1  =  (P_SW1 & ~0xc0) | 0x80        //UART1 使用P1.6 P1.7口
#define                S1_USE_P43P44()                                        P_SW1  =  (P_SW1 & ~0xc0) | 0xc0        //UART1 使用P4.3 P4.4口
#define         P1n_standard(bitn)                        P1M1 &= ~(bitn),        P1M0 &= ~(bitn)
#define   P3n_standard(bitn)                        P3M1 &= ~(bitn),        P3M0 &= ~(bitn)
#define         P4n_standard(bitn)                        P4M1 &= ~(bitn),        P4M0 &= ~(bitn)
#define                S1_USE_P30P31()                                        P_SW1 &= ~0xc0
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:44
  • 最近打卡:2024-02-08 07:37:21

9

主题

31

回帖

349

积分

中级会员

积分
349
发表于 2023-12-29 05:45:38 | 显示全部楼层
谢谢金牌会员两个BBS回复我
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:455
  • 最近打卡:2025-05-04 14:23:56
已绑定手机

13

主题

1257

回帖

2983

积分

金牌会员

积分
2983
发表于 2024-1-25 17:28:03 | 显示全部楼层
基本功不扎实,还需要努力
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:52
  • 最近打卡:2024-12-14 14:52:56

0

主题

23

回帖

300

积分

中级会员

积分
300
发表于 2024-1-28 21:03:11 | 显示全部楼层
一般我遇到提示问题 先去查百度,基本都会有答案
除了语法错误 是要好好检查的
回复 支持 1 反对 0

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-4 17:46 , Processed in 0.148564 second(s), 99 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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