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

在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日

悬赏问题

  • ¥15 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
  • ¥15 怎么把512还原为520格式
  • ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
  • ¥15 求高通平台Softsim调试经验
  • ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?
  • ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
  • ¥15 栅极驱动低侧烧毁MOSFET
  • ¥30 写segy数据时出错3
  • ¥100 linux下qt运行QCefView demo报错
  • ¥50 F1C100S下的红外解码IR_RX驱动问题