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

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

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

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

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

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

单片机与控制技术第6章:MCS-51的定时器/计数器MCS51单片机的定时/计数器资源定时/计数器的工作原理说明: ①当用作定时器功能时,加1计数器每经过一个机器周期的时间加1,所以定时器可看作计算机器周期的计数器。由于每个机器周期包含12个振荡信号周期,所以加1计数器的计数脉冲频率为振荡器信号的1/12,当振荡器频率为6MHz时计数脉冲的最高频率为500KHz,或周期为2µs。 ②当用作计数器功能时,加1计数器的计数脉冲取自外部输入引脚T0、T1(8052还有T2),只要这些引脚上有一个从“1”到“0”的负跳变,加1计数器就加1。CPU在每个机器周期对外部输入状态进行采样。计数器加1的执行是在检测到跳变后的那个机器周期时刻。由于需要两个机器周期(24个振荡信号周期)来识别一个从“1”到“0”的负跳变,所以最大计数速率为振荡信号频率的1/24。显而易见,为了保障外部输入状态在改变之前至少采样一次,因此,信号必须至少保持一个完整的机器周期。图6-1MCS-51定时器/计数器逻辑结构框图51系列单片机中有两个特殊功能寄存器(TMOD/TCON),用于 定义定时/计数器的工作方式和控制定时/计数器的有关功能. 1)定时器方式寄存器TMOD(只能按字节地址访问!) TMOD用于定义工作方式以及操作方式。其格式为:1)定时器方式寄存器TMOD由M1、M0决定的定时/计数器的工作方式2)定时器控制寄存器TCON用于外部中断(中断系统中已介绍)3)定时器初值的确定? 加法计数器是计满溢出时才申请中断,所以在给定时器/计数器赋初值时,不能直接输入所需的计数值,而应输入的是计数器计数的最大值与这一计数值的差值,设最大值为M,初值为X,则X的计算方法如下: 计数状态:X=M-计数值 定时状态:X=M-定时时间/Tcy 而Tcy=12÷晶振频率 每一种工作方式对应的最大计数值:2定时器/计数器的4种工作方式1)方式0(13位计数器)当定时/计数器工作于定时功能且选为方式0时,应按照定时的时间选择一个时间常数作为计数器的初值,需要连续定时时,应在每次溢出产生中断后,在程序(ISR)中为TL和TH装入初值。 方式0的计数长度M为2的13次方。初值也是13位二进制数,但要注意是高8位赋值给THx,低5位前面补足3个0凑成8位赋给TLx。 举例:如要求T0的计数值为1000,则初值为 x=M-1000=8192-1000 =1C18H=1110000011000B 则赋初值时,TH0=11100000B=0E0H, TL0=00011000B=18H。2)方式1(16位计数器)3)方式2(8位计数器,初始值自动重装) 工作方式2就针对这个问题而设置,它具有自动重装载功能,即自动加载计数初值,所以也称为自动重加载工作方式。 在这种工作方式中,16位计数器分为两部分,即以TL0为计数器,以TH0作为预置寄存器,初始化时把计数初值分别加载至TL0和TH0中,当计数溢出时,不再象方式0和方式1那样需要“人工干预”,由软件重新赋值,而是由预置寄存器TH以硬件方法自动给计数器TL0重新加载。4)方式3(两个独立8位计数器,仅限T0)在工作方式3模式下,定时/计数器0被拆成两个独立的8位计数器TL0和TH0。其中TL0既可以作计数器使用,也可以作为定时器使用,定时/计数器0的各控制位和引脚信号全归它使用。其功能和操作与方式0或方式1完全相同。 TH0就没有那么多“资源”可利用了,只能作为简单的内部定时器使用,而且由于定时/计数器0的控制位已被TL0占用,因此只能借用定时/计数器1的控制位TR1和TF1,也就是以计数溢出去置位TF1,TR1则负责控制TH0定时的启动和停止。 由于TL0既能作定时器也能作计数器使用,而TH0只能作定时器使用而不能作计数器使用,因此在方式3模式下,定时/计数器0可以构成二个定时器或者一个定时器和一个计数器。 T0工作于方式3时,T1的工作方式就不可避免受到一定的限制,因为自己的一些控制位已被定时/计数器0借用,只能工作在方式0、方式1或方式2下,不同的是定时/计数器1不能使用溢出标志和中断! 如果设置T1工作在方式3,则T1停止工作,相当于其他方式时令TR1=0。 T0工作在方式3下T1的各种工作方式(1)T1工作在方式0(2)T1工作在方式1(3)T1工作在方式2(3)定时/计数器的初始化补充:定时器/计数器应用举例由此可知:使用方式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=