hahahahaha_1000 2022-05-25 18:58 采纳率: 0%
浏览 376

在keil编译时一直会报错,为什么会出现下面两个错误

#include "reg52.h" //包含头文件
#include "freq.h"

#define Timer0Init(void)
#define Timer2Init(void)

unsigned long value1=0; //计数值
unsigned long temp=0;
unsigned long value=0;

void Timer0Init(void) //定时器0初始化
{
TMOD|=0x05;
TH0=TL0=0;
TR0=0;
}

void Timer2Init(void)
{
TL2 = 0xfd; //设置定时初值
TH2 = 0xFE; //设置定时初值
RCAP2L = TL2;
RCAP2H = TH2;
TR2 = 1;
ET2 = 1;
EA = 1;
}

void main()
{
Timer0Init(); //开启定时器0用于外部脉冲计数
Timer2Init(); //开启定时器2
while(1)
{

        value1=value*3.33;
        temp=300000/value;
        
}

}

void tm2_isr() interrupt 5 using 1 //定时器2中断
{
static uint count=0;
TF2 = 0; //清除定时器2中断标志位
if(++count==600) //0.3s闸门信号
{
value=(uint)TH0<<8|TL0; //读取定时器0的计数值
TR0=count=0; //清零
TH0=TL0=0; //清零
TR0=1; //重启定时器0计数,开启新一轮计数
}
}

运行结果:

freq.c(14): error C141: syntax error near '{', expected 'hdata'
freq.c(15): error C129: missing ';' before '|='

  • 写回答

1条回答 默认 最新

  • qllaoda 2022-05-25 19:23
    关注

    #define Timer0Init(void)
    #define Timer2Init(void)
    问题就在这两句,你把两句定义成了空,导致下面那个函数
    void Timer0Init(void) //定时器0初始化
    {

    }
    其中的Timer0Init(void)会被替换成个空的,于是就变成了
    void //定时器0初始化
    {
    }
    编译器解释不下去了。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月25日