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

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

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

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

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

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

在工业检测、控制中,很多场合都要用到计数或者定时功能。例如对外部脉冲进行计数、产生精确的定时时间、作串行口的波特率发声器等。MCS-51单片机内部有两个可编程的定时器/计数器,以满足这方面的需要。它们具有两种工作模数(计数器模式、定时器模式)和四种工作方式(方式0、方式1、方式2、方式3),其控制字均在相应的特殊功能寄存器(SFR)中,通过对它的SFR的编程,可以方便的选择工作模数和工作方式。定时器/计数器:Timer/Counter 本质上都是加法计数器,当对固定周期的脉冲信号计数时是定时器,对脉冲长度不确定的信号计数时是计数器。 每接收到一个计数脉冲,加法计数器的值就加一,当计满时发生溢出,并从0开始继续计数。 加法计数器的计满溢出信号就是定时/计数器的输出,该信号使TCON的某位(TF0或TF1位)置一,作为定时器/计数器的溢出中断标志。图6.1定时器/计数器结构框图6.2方式和控制寄存器对TMOD的各个位的说明: GATE位:门控位。GATE=1时,T0、T1是否计数要受到外部引脚输入电平的控制,INT0引脚控制T0,INT1引脚控制T1。可用于测量在INT0和INT1引脚出现的正脉冲的宽度。若GATE=0,即不使能门控功能,定时计数器的运行不受外部输入引脚INT0、INT1的控制。C/T位:计数器模式和定时器模式的选择位。 C/T=0,为定时器模式,内部计数器对晶振脉冲12分频后的脉冲计数,该脉冲周期等于机器周期,所以可以理解为对机器周期进行计数。从计数值可以求得计数的时间,所以称为定时器模式。 C/T=1,为计数器模式,计数器对外部输入引脚T0(P3.4)或T1(P3.5)的外部脉冲(负跳变)计数,允许的最高计数频率为晶振频率的1/24。 M1M0:四种工作方式的选择位定时器初值的确定: 加法计数器是计满溢出时才申请中断,所以在给定时器/计数器赋初值时,不能直接输入所需的计数值,而应输入的是计数器计数的最大值与这一计数值的差值,设最大值为M,计数值为N,初值为X,则X的计算方法如下: 计数状态:X=M-N 定时状态:X=M-定时时间/T 而T=12÷晶振频率二、定时器/计数器控制寄存器TCON TF0、TF1分别是定时器/计数器T0、T1的溢出标志位,加法计数器计满溢出时置1,申请中断,在中断响应后自动复0。TF产生的中断申请是否被接受,还需要由中断是否开放来决定。 TR1、TR0分别是定时器/计数器T1、T0的运行控制位,通过软件置1后,定时器/计数器才开始工作,在系统复位时被清0。6.3工作方式在方式0下,T0和T1工作在13位的定时/计数器方式,由TH的高8位和TL的低5位组成。 当T0的13位计数器加到全部为1以后,再加1就产生溢出,这时置TCON的TF0为1,同时把计数器全部变0,然后从0开始继续计数。 方式0的计数长度M为2的13次方。 初值也是13位二进制数,但要注意是高8位赋值给TH0,低5位前面补足3个0凑成8位赋给TL0。 例如,如要求计数值为1000,则初值为 x=M-1000=8192-1000 =1C18H=1110000011000B 则赋初值时,TH0=0E0H,TL0=18H。 二、方式1方式1和方式0的工作原理基本相同,唯一不同是T0和T1工作在方式1时是16位的计数/定时器。 方式1时的计数长度M是2的16次方。16位的初值直接拆成高低字节,分别送入TH和TL即可。三、方式2工作方式0和工作方式1的最大特点就是计数溢出后,计数器为全0,因而循环定时或循环计数应用时就存在反复设置初值的问题,这给程序设计带来许多不便,同时也会影响计时精度。 工作方式2就针对这个问题而设置,它具有自动重装载功能,即自动加载计数初值,所以也称为自动重加载工作方式。在这种工作方式中,16位计数器分为两部分,即以TL0为计数器,以TH0作为预置寄存器,初始化时把计数初值分别加载至TL0和TH0中,当计数溢出时,不再象方式0和方式1那样需要“人工干预”,由软件重新赋值,而是由预置寄存器TH以硬件方法自动给计数器TL0重新加载。四、方式3在工作方式3模式下,定时/计数器0被拆成两个独立的8位计数器TL0和TH0。其中TL0既可以作计数器使用,也可以作为定时器使用,定时/计数器0的各控制位和引脚信号全归它使用。其功能和操作与方式0或方式1完全相同。TH0就没有那么多“资源”可利用了,只能作为简单的定时器使用,而且由于定时/计数器0的控制位已被TL0占用,因此只能借用定时/计数器1的控制位TR1和TF1,也就是以计数溢出去置位TF1,TR1则负责控制TH0定时的启动和停止。由于TL0既能作定时器也能作计数器使用,而TH0只能作定时器使用而不能作计数器使用,因此在方式3模式下,定时/计数器0可以构成二个