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

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

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

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

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

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

6.1定时器/计数器的结构及工作原理加法计数器是计满溢出时才申请中断,所以在给计数器赋初值时,不能直接输入所需的计数值,而应输入的是计数器计数的最大值与这一计数值的差值,设最大值为M,计数值为N,初值为X,则X的计算方法如下: 计数状态:X=M-N 定时状态:X=M-定时时间/T 而T=12÷晶振频率6.2方式和控制寄存器1.M1M0工作方式控制位2.C/T定时器方式或计数器方式选择位 若C/T=1时,为计数器方式;C/T=0时,为定时器方式。3.GATE定时器/计数器运行门控标志位 当GATE=1时,只有INT0(或INT1)引脚为高电平且TR0(或TR1)置1时,相应的定时器/计数器才被选通工作,这时可用于测量在INTx端出现的正脉冲的宽度。若GATE=0,则只要TR0(或TR1)置1,定时器/计数器就被选通,而不管INT0(或INT1)的电平是高还是低。二、定时器/计数器控制寄存器TCON TF0、TF1分别是定时器/计数器T0、T1的溢出标志位,加法计数器计满溢出时置1,申请中断,在中断响应后自动复0。TF产生的中断申请是否被接受,还需要由中断是否开放来决定。 TR1、TR0分别是定时器/计数器T1、T0的运行控制位,通过软件置1后,定时器/计数器才开始工作,在系统复位时被清0。6.3工作方式二、方式1三、方式2四、方式36.4定时器/计数器应用举例由此可知:使用方式0的13位计数器即可,T0的初值X为 X=M-N=8192-500=7692=1E0CH 但是,因为13位计数器中,低8位TL0只使用了5位,其余码均计入高8位TH0的初值,则T0的初值调整为 TH0=0F0H,TL0=0CH TMOD初始化:TMOD=00000000B=00H (GATE=0,C/T=0,M1=0,M0=0) TCON初始化:启动TR0=1 IE初始化:开放中断EA=1,定时器T0中断允许ET0=1程序清单如下: ORG0000H AJMPSTART;复位入口 ORG000BH AJMPTOINT;T0中断入口 ORG0030H START:MOVSP,#60H;初始化程序 MOVTH0,#0F0H;T0赋初值 MOVTL0,#0CH MOVTMOD,#00H SETBTR0;启动T0SETBET0;开T0中断 SETBEA;开总允许中断 MAIN:AJMPMAIN;主程序 TOINT:CPLP1.0 MOVTL0,#0CH MOVTH0,#0F0H RET二、方式1应用 方式1与方式0基本相同,只是方式1改用了16位计数器。要求定时周期较长时,13位计数器不够用,可改用16位计数器。 例2已知某生产线的传送带上不断地有产品单向传送,产品之间有较大间隔。使用光电开关统计一定时间内的产品个数。假定红灯亮时停止统计,红灯灭时才在上次统计结果的基础上继续统计,试用单片机定时器/计数器T1的方式1完成该项产品的计数任务。图6.7硬件原理图(1)初始化:TMOD=11010000B=0D0H (GATE=1,C/T=1,M0M1=01) TCON=00H (2)T1在方式1时,溢出产生中断,且计数器回零,故在中断服务程序中,需用R0计数中断次数,以保护累积计数结果。(3)启动T1计数,开T1中断。 程序清单如下:MOVTL1,#00H MOVR0,#00H;清中断次数计数单元 MOVP3,#28H;设置P3.5第二功能 SETBTR1;启动T1 SETBET1;开T1中断 SETBEA;开总中断 MAIN:ACALLDISP;主程序,调显示子程序 … ORG0A00H T1INT:INCR0;中断服务子程序 RETI DISP:… ;显示子程序 RET三、方式2应用 方式2是定时器自动重装载的操作方式,在这种方式下,定时器0和1的工作是相同的,它的工作过程与方式0、方式1基本相同,只不过在溢出的同时,将8位二进制初值自动重装载,即在中断服务子程序中,不需要编程送初值,这里不再举例。定时器T1工作在方式2时,可直接用作串行口波特率发生器,四、方式3的应用 定时器T0工作在方式3时是2个8位定时器/计数器。且TH0借用了定时器T1的溢出中断标志TF1和运行控制位TR1。 例3假设有一个用户系统中已使用了两个外部中断源,并置定时器T1于方式2,作串行口波特率发生器用,现要求再增加一个外部中断源,并由P1.0口输出一个5Hz的方波(假设晶振频率为6MHz)。在不增加其它硬件开销时,可把定时器/计数器T0置于工作方式3,利用外部引脚T0端作附加的外部中断输入端,把TL0预置为0FFH,这样在T0端出现由1至0的负跳变时,TL0立即溢出