51单片机中的定时器中断是怎么用的,51单片机定时器不够用怎么解决

首页 > 经验 > 作者:YD1662025-04-30 21:23:28

51单片机中的定时器中断是怎么用的,51单片机定时器不够用怎么解决(1)

所以中断的使用:

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,然后在主函数里面判断这个变量,如果标志为1,那么TR0或者TR1就等于1(运行定时器),再次出发外部中断后,标志置0,此时标志为0,那么TR0,TR1等于0(停止运行定时器)。

在外部中断函数中可以如设置一个全局变量为标志位 static bit FLAG=0; 然后 FLAG=!FLAG 就可以完整出发外部中断后的标志位切换。

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.