实现定时功能,比较方便的办法是利用单片机内部的定时/计数器。 一、定时/计数器的结构 定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。 二、定时/计数器的控制 80C51单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。 1、工作方式寄存器TMOD 工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。其格式如下: 2、控制寄存器TCON
TCON的低4位用于控制外部中断。TCON的高4位用于控制定时/计数器的启动和中断申请。其格式如下: IT0(TCON.0):外部中断0触发方式控制位。 当IT0=0时,为电平触发方式。 当IT0=1时,为边沿触发方式(下降沿有效)。 IE0(TCON.1): 外部中断0中断请求标志位。 IT1(TCON.2): 外部中断1触发方式控制位。 IE1(TCON.3): 外部中断1中断请求标志位。 TF0(TCON.5): 定时/计数器T0溢出中断请求标志位。 TF1(TCON.7): 定时/计数器T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为 1,CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1 的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。 TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1 由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。 TR0(TCON.4):T0运行控制位,其功能与TR 1类同。 3、中断允许控制
CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。 EX0(IE.0):外部中断0允许位; ET0(IE.1):定时/计数器T0中断允许位; EX1(IE.2):外部中断0允许位; ET1(IE.3):定时/计数器T1中断允许位; ES(IE.4):串行口中断允许位; EA (IE.7):CPU中断允许(总允许)位。 三、 定时/计数器应用举例 初始化程序应完成如下工作: 对TMOD赋值,以确定T0和T1的工作方式。 计算初值,并将其写入TH0、TL0或TH1、TL1。 中断方式时,则对IE赋值,开放中断。 使TR0或TR1置位,启动定时/计数器定时或计数。 void main() { TMOD = 0x01; //定时器0的方式1 TH0 = (65535-50000)/256; //延时50ms TL0 = (65535-50000)%256; EA = 1; //开总中断 ET0 = 1; //定时器0中断允许 TR0 = 1; //启动定时器0
while(1) {
} } void timer0() interrupt 1 { TH0 = (65535-50000)/256; TL0 = (65535-50000)%256; …………… //中断服务程序
}
浏览 ( 150 ) |
评论 ( 0 )
上一篇:单片机串口工作方式应用笔记
|
下一篇:单片机外部中断设置方法及低电平中断问题的思考
|
|
来自: 云澳 > 《单片机89c51》