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

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

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

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

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

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

第六章 定时/计数器 6.1定时器/计数器结构 6.2定时器/计数器的四种工作方式 6.3定时器/计数器对输入信号的要求 6.4定时器/计数器编程和应用6.1.1定时/计数器的结构与原理 重点:定时的实质,定时与计数的关系 6.1.2定时/计数器方式寄存器TMOD 6.1.3定时/计数器控制寄存器TCON 6.1.4定时/计数器的初始化 从结构图可以看出: 16位的定时器/计数器分别由两个专用寄存器组成,即T0由TH0和TL0构成;T1由TH1和TL1构成。这些寄存器由于存放定时和计数初值。此外,内部还有一个8位的TMOD和一个8位的TCON。TMOD主要用于选定定时器的工作方式;TCON主要用于控制定时器的启动与停止。当定时器/计数器为定时工作方式时,加1信号由振荡器的12分频产生,即每过一个机器周期,计数值增1,直至计满溢出为止。显然,定时器的定时时间与系统的振荡频率有关。由于一个机器周期等于12个振荡周期,所以 计数频率fcount=1/12fosc 例:晶振为12MHZ,则计数周期为 T=1/(12*106)Hz*1/12 =1微秒 当定时器/计数器为计数工作方式时,通过引脚T0和T1对外部信号计数,外部脉冲的下降沿触发计数 采样过程: 单片机中的定时器和计数器是一个部件,只不过计数器用来记录外界发生的事情,而定时器则是由单片机提供的一个非常稳定的计数源。 综上所述,我们已知定时器/计数器是一种可编程部件,所以在其开始工作之前,CPU必须将一些命令(控制字)写入定时器/计数器。这个过程称为定时器/计数器的初始化。 当CPU用软件给定时器设置了某种工作方式之后,定时器就会按设定的工作方式独立运行,不再占用CPU的操作时间,除非定时器计数溢出,才可能中断CPU当前操作。GATE=1时若TR1=1,并且INT1=1,允许T0计数, 若TR1=0,或INT1=0,禁止T0计数由于在不同方式下计数器位数不同,因而最大计数值(量程)也不同。 方式0:M=213=8192 方式1:M=216=65536 方式2:M=28=256 方式3:定时器分成两个8位计数器,两个M均256 因为定时器/计数器是作“加1”计数,并在计满溢出时产生中断,初值X可以这样计算: X=M-计数值(计数次数) 例:在6MHZ主频下,要求产生1ms的定时,计算初值 分析:因为定时器每“加1”一次所需的时间为2μs,如果要产生1ms的定时,需加500次,500即为计数值。方式1下工作。 初值X=M-计数值=65536-500=FE0CH16位寄存器全用这种工作方式可省去用户软件中重装常数的程序,并可产生相当精度的定时时间。该方式只适用于定时器T0,T0被拆成两个独立的8位计数器TH0和TL0。T0工作在方式3时,T1可定为方式0、方式1和方式2,用来作为串行口的波特率发生器,或不需要中断的场合.T0工作在方式3时T1为方式1的工作示意图T0工作在方式3时T1为方式2的工作示意图T1的控制字M1M0=11时,T1停止计数解:(1)计算初值: 机器周期=2μs=2*10-6s (216-X)*2*10-6=1*10-3, 即(216-X)=500,X=65036 则TH0=0FEH,TL0=0CH(2)初始化程序: 对定时器初始化和中断初始化 即对IP,IE,TCON,TMOD的相应位设置,并将计 数初值装入定时器.如: TMOD=01H,定时方式1 IP=00H,IE=92H,TCON=10H即ET0=1,EA=1, TR0=1 ORG0000H RESET:AJMPMAIN ORG000BH AJMPIT0P ORG0100H MAIN:MOVSP,#60H MOVTMOD,#01H ACALLPT0M0 HERE:AJMPHERE PT0M0: MOVTL0,#0CH MOVTH0,#0FEH SETBTR0 SETBET0 SETBEA SJMP$ORG 0000H MOVTMOD,#01H LOOP: MOVTH0,#0FEMOVTL0,#0CH SETB TR0 即:TH0应装3CH,TL0应装B0H。 3)中断管理:允许T0中断,开放总中断 即:IE应装10000010B 4)启动定时器T0:SETB TR0 5)设置软件计数器初值:(如使用R7) 即R7应装0AH 6)动态停机:SJMP$MAIN: MOVTMOD,#01H;设定T0为方式1 MOVTH0,#3CH;装入定时常数高8位 MOVTL0,#0B0H;装入定时常数低8位 MOV IE,#82H;开放T0中断 SETB TR0 ;启动T0 MOV R7,#0AH;设置软件计数器 SJMP $任务: 1)恢复T0常数; 2)软件计数器减1; 3)判断软