#include <REGX52.H>
sbit led=P2^0;
unsigned int t;
void main()
{
void Timer0_Init() ;
while(1)
{
if(t==1000)
{
led=!led;
t=0;
}
}
}
void Timer0_Init() //1毫秒@12.000MHz
{
TMOD &= 0xF0; //设置定时器模式
TMOD |= 0x01; //设置定时器模式
TL0 = 0x18; //设置定时初始值
TH0 = 0xFC; //设置定时初始值
TR0 = 1; //定时器0开始计时
ET0 = 1; //使能定时器0中断
}
void Timer0_Isr() interrupt 1
{
TL0 = 0x18; //设置定时初始值
TH0 = 0xFC; //设置定时初始值
t++;
}
基于定时器中断实现LED的闪烁,但LED没有反应
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
黑心萝卜三条杠 2023-02-17 18:20关注兄弟,定时器中断没有开,定时器函数需要这样改
void Timer0_Init() //1毫秒@12.000MHz { TMOD &= 0xF0; //设置定时器模式 TMOD |= 0x01; //设置定时器模式 TL0 = 0x18; //设置定时初始值 TH0 = 0xFC; //设置定时初始值 TR0 = 1; //定时器0开始计时 ET0 = 1; //使能定时器0中断 EA = 1; ET1 = 1; }EA等于1表示允许中断,也就是中断的总开关;ET1是一个分开关,等于1也表示允许中断;二者关系相当于学校大门与学校的教学楼大门,要进入教学楼,你要先进学校大门,在经过教学楼大门,如果学校或者是教学楼大门没开,你怎么也进不去,只有同时打开才能进入。
本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 1无用