预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共33页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第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定时器/计数器工作方式控制寄存器TMODGATE门控位: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赋初值。给定时器赋初值,即把初始常数装入TH0TL0或TH1TL1。根据需要设置中断控制字。启动定时/计数器。设初值为X,最大计数值为M。初值X与机器周期T机及定时时间T的关系为(M−X)T机=T其中,T机=12个时钟周期=12/fOSCX=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S16位定时器最大数值为:216=65536=0FFFFH+1故选择方式1工作可以得到:Tmax=655362=131072S=131.072mS例如:要求对T0产生100mS定时进行初始化。(晶振=6MHz)分析:已知fosc=6MHz则:(机器周期)1Tm=12Tc=12/6MHz=2S100mS÷2S=5000016位定时器最大数值为:216=65536(=0FFFFH+1)故选择方式1工作可以满足要求。计算初值:65536-50000=15536=3CB0H初始化:MOVTMOD,#01H;选T0方式1MOVTH0,#3CH;赋初值高8位MOVTL0,#0B0H;赋初值低8位SETBTR0;启动T0定时若需要定时器0产生中断还应当写如下语句:SETBET0;开T0中断允许SETBEA;开总中断允许以及相应的中断服务程序。例如:从P1.0脚输出频率为1KHz方波。设:晶振=6MHz。利用T1定时中断。分析:fosc=6MHz1机器周期=2S1KHz方波周期=1mS半个方波周期=500S500uS÷2uS=250若选择方式2工作,8位定时器最大数值为:28=256=0FFH+1可以满足要求。计算初值:256-250=6ORG0000HAJMPMAINORG001BH;T1的中断矢量CPLP1.0;中断服务:P1.0取非RETI;中断返回MAIN:MOVTMOD,#20HMOVTH0,#6MOVTL0,#6SETBET1SETBEASETBTR1HERE:AJMPHERE;原地等待中断END利用GATE门控位测量从INT1引脚输入的正脉冲宽度。确定工作方式(TMOD)=10010000B=90H;T/C1定时,方式1,GATE为1。计算初值由于被测正脉冲宽度未知,假设宽度<=65.536ms,fosc=12MHz,则:计数个数:X=65536(最大)定时初值:C=65536-X=65536-65536=0,(TH1)=00H,(TL1)=00H。ORG0000HSJMP0030HORG0030HMAIN:MOVTMOD,#90H;置T1方式控制字MOVTL1,#00H;MOVTH1,#00H;T1从0开始计数JBP3.3,$;等低电平SETBTR1;T1允许计数JNBP3.3,$;等高电平JBP3.3,$;等低电平CLRTR1;停止计数6.4.1中断有关的概念6.4.28051中断标志及控制寄存器6.4.3中断响应的条件及响应过程6.4.4中断程序设计思