内容正文:
定时器中断程序设计
更多模板请关注:https://haosc.taobao.com
CONTENTS
目录
01
02
定时器的初始化
定时器中断程序设计
道艺兼修
敬业乐群
定时器的初始化
01
定时器的初始化一般包括以下四步:
1、对TMOD赋值,确定T0和T1的工作方式
2、计算初值,并将其写入TH.x和TL.x
3、使用中断方式时对IE寄存器赋值开发中断
4、使TR0或TR1置位,启动定时/计数器
3
定时器的初始化
01
1、确定T0和T1的工作方式
对TMOD中的M1和M0位赋值,可以选择T0和T1的工作方式 。
如:当TMOD=0x21时
则:T0工作在方式1
T1工作在方式2
4
定时器的初始化
01
2、计算初值
不同工作方式,初值计算稍有差别,以方式1为例。
设定时时间为t,机器周期为Tcy,则初值为:
5
定时器的初始化
01
如,当晶振为12MHz时,机器周期为1us,若T0工作在方式1,定时50ms的初始值为:
TH0=0x3C;
TL0=0xB0;
6
定时器的初始化
01
3、中断设置
如果定时器采用中断方式工作,则需要设置中断。
ET0=1;
EA=1;
如:若需要定时器0工作在中断方式,则:
7
定时器的初始化
01
4、启动定时器
使TR0或TR1置位,即可启动定时器T0或T1。
TR0=1;
如:若要启动定时器T0,则:
8
定时器的初始化
01
如:设置定时器0工作在方式1,定时时间为50ms,工作在中断方式,则初始化如下。
TMOD=0x01
TH0=0x3C;
TL0=0xB0
ET0=1;
EA=1;
TR0=1;
9
定时器中断程序设计
02
应用于动态显示:
20ms刷新一次显示。
10
定时器中断程序设计
02
02
(1)程序设计流程图
开始
初始化
起来干活
TH、TL初始值
动态显示一次
中断入口
记录中断次数
返回
主程序
中断程序
11
定时器中断程序设计
02
(2)程序设计
1)初始化
#include <reg51.h>
unsigned char code duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};//0---9,- 的字型码
sbit wei1=p2^6; //数码管位1
sbit wei1=p2^7;//数码管位2
12
定时器中断程序设计
02
2)主程序
main()
{
TMOD=0x01; //定时器工作方式
TH0=(65536-20000)/256;//TH0=0xB1;
TL0=(65536-20000)%256;//TL0=0xE0;
ET0=1; //中断允许
EA=1; // 中断总开关
TR0=1; //启动定时器
while(1);//不需要做任何事,但不能少。
}
13
定时器中断程序设计
02
void T0_IR( ) interrupt 1
{
TH0=0xB1; //重新设置定时器初始值
TL0=0xe0;
wei1=1;//数码管动态扫描一次
P0=duan[num/10];
delay_nms(1);
wei1=0;
wei2=1;
P0=duan[num%10];
delay_nms(1);
wei2=0;
}
3)定时器中断程序
14
定时器中断程序设计
02
插入录屏视频
15
谢谢观看!
Simple Gifts
Jewel
Lullaby
167584.05
$$