定时器和中断精讲.pptx
文本预览下载声明
第6章 定时器和中断;6.1 定时器/计数器概述;1.软件定时
软件定时是靠执行一个循环程序以进行时间延时。软件定时要占用CPU。
2.硬件定时
对于定时时间较长的定时,常使用硬件定时完成。不占CPU时间。
3.可编程定时器定时
这种定时方法是通过对系统时钟脉冲的计数来实现。 ;6.1.2 定时/计数器的结构和工作原理 ;定时器/计数器工作原理
16位的定时器/计数器实质上是一个加1计数器,其控制电路受软件控制、切换。
定时器工作前先装入初值,利用送数指令将初值装入TH0和TL0或TH1和TL1,高位数装入TH0和TH1,低位数装入TL0和TL1。当发出启动命令后,装初值寄存器开始计数,连续加1,每一个机器周期加1一次,加到满值(各位全1)。若再加1,则溢出,同时将初值寄存器清零。 ;6.1.3 定时器/计数器工作方式控制寄存器 TMOD; GATE门控位: Timer可由软件与硬件两者控制
GATE = 0 ——普通用法
Timer的启/停由软件对TRx位写“1”/“0”控制
GATE = 1 ——门控用法
Timer的启/停由软件对TRx位写“1”/“0” 和在 INTx引脚上出现的信号的高/低共同控制
注意:TMOD不能位寻址,只能由字节设置T/C的工作方式,低半字节设定T/C0,高半字节设定T/C1。 ;6.1.4 定时/计数器控制寄存器TCON;选择工作方式,即对TMOD 赋初值 。
给定时器赋初值,即把初始常数装入TH0 TL0或TH1 TL1。
根据需要设置中断控制字。
启动定时/计数器 。
设初值为X,最大计数值为M。初值X与机器周期T机及定时时间T的关系为
(M?X)T机=T
其中,T机 =12个时钟周期 =12 /fOSC
X=M-?T/T机 ;6.2 定时器/计数器的工作方式;方式1 一个16为定时器/计数器。
方式1的结构几乎与方式0完全一样,唯一的差别是:方式1中的TH1(TH0)和TL1(TL0) 均是8位的,构成16位计数器。
; 方式2
在方式2时,T/C被拆成一个8位的寄存器TH1(TH0)和一个8位计数器TL1(TL0),两者构成可以自动重装载的8位T/C。
;方式3
;例如:若晶振频率为6MHz,计算单片机的最小与最大定时时间
分析:已知fosc = 6MHz 则:
(振荡周期)1Tc=1/6MHz
(机器周期)1Tm=12Tc=12/6MHz=2?S
粗略地说:Tmin ? 2?S
16位定时器最大数值为:216=65536=0FFFFH+1
故选择方式 1 工作可以???到:
Tmax = 65536?2 = 131072?S=131.072mS ;例如:要求对T0产生100mS定时进行初始化。(晶振=6MHz)
分析:已知fosc = 6MHz 则:(机器周期)1Tm=12Tc=12/6MHz=2?S 100mS÷2 ?S = 50000
16位定时器最大数值为:216 = 65536 (=0FFFFH+1)
故选择方式1工作可以满足要求。
计算初值:65536-50000=15536=3CB0H
初始化:MOV TMOD,#01H ;选 T0 方式 1
MOV TH0, #3CH ;赋初值高8位
MOV TL0, #0B0H ;赋初值低8位
SETB TR0 ;启动 T0定时
若需要定时器0产生中断还应当写如下语句:
SETB ET0 ;开T0中断允许
SETB EA ;开总中断允许
以及相应的中断服务程序。 ;例如:从P1.0 脚输出频率为1KHz方波。
设:晶振=6MHz。利用T1定时中断。
分析:fosc = 6MHz
1机器周期 = 2 ?S
1KHz方波周期 = 1 mS
半个方波周期 =500?S
500uS÷2 uS = 250
若选择方式2 工作,8位定时器最大数值为:
28 =256 =0FFH + 1
可以满足要求。
计算初值:256-250=6
; ORG 0000H
AJMP MAIN
ORG 001BH ;T1的中断矢量
CPL P1.0 ;中断服务:P1.0取非
RETI ;中断返回
MAIN: MOV TMOD,#20H
MOV TH0, #6
MOV TL0, #6
SETB ET1
SETB
显示全部