请教定时器中断问题
2个回答
展开全部
所以中断的使用:
1.开全局中断 51是 EA = 1
2.对应中断使能 比如定时器1 ET1 = 1、定时器0 ET0 = 1
3.定时器工作方式配置: 有三种方式 双8位定时 16位定时 还有捕捉方式 定时器2有4种 ,具体不介绍了 TMOD 是定时器0和定时器1方式配置的寄存器 TMOD = 0x01,定时器0工作在方式1(16位计数)
4.打开定时器 TR0 = 1;定时器1打开是 TR1 = 1;
5.中断服务程序:就是定时时间到,你要处理的事务。
例子://50ms定时
void main(void)
{
TMOD = 0x01; //配置方式
TH0 = 0x3C; //计数时间
TL0 = 0xB0;
TR0 = 1; //开启定时器
EA = 1; //全局中断打开
ET0 = 1; //定时器0中断打开
for(;;)
}
void Timer0_ISR(void) intterupt 1 //中断服务程序
{
TH0 = 0x3C; //计数时间
TL0 = 0xB0;
P1 = 0x11; //定时到,要执行的动作
}
1.开全局中断 51是 EA = 1
2.对应中断使能 比如定时器1 ET1 = 1、定时器0 ET0 = 1
3.定时器工作方式配置: 有三种方式 双8位定时 16位定时 还有捕捉方式 定时器2有4种 ,具体不介绍了 TMOD 是定时器0和定时器1方式配置的寄存器 TMOD = 0x01,定时器0工作在方式1(16位计数)
4.打开定时器 TR0 = 1;定时器1打开是 TR1 = 1;
5.中断服务程序:就是定时时间到,你要处理的事务。
例子://50ms定时
void main(void)
{
TMOD = 0x01; //配置方式
TH0 = 0x3C; //计数时间
TL0 = 0xB0;
TR0 = 1; //开启定时器
EA = 1; //全局中断打开
ET0 = 1; //定时器0中断打开
for(;;)
}
void Timer0_ISR(void) intterupt 1 //中断服务程序
{
TH0 = 0x3C; //计数时间
TL0 = 0xB0;
P1 = 0x11; //定时到,要执行的动作
}
华北工控
2019-09-24 广告
2019-09-24 广告
工控机的日常使用维护,在很多场合使用工控机,但真正能把工控机转得很好的也不是很多。经常看到有些人忙活了半天,还是不能把机器故障排除,而有些人用起来则得心应手。这区别即源自用户对工控机的正确管理和维护。工控机是为了适应特殊、恶劣环境下工作的一...
点击进入详情页
本回答由华北工控提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询