最新定时器计数器3PPT课件.ppt

上传人:豆**** 文档编号:56695579 上传时间:2022-11-03 格式:PPT 页数:66 大小:620.50KB
返回 下载 相关 举报
最新定时器计数器3PPT课件.ppt_第1页
第1页 / 共66页
最新定时器计数器3PPT课件.ppt_第2页
第2页 / 共66页
点击查看更多>>
资源描述

《最新定时器计数器3PPT课件.ppt》由会员分享,可在线阅读,更多相关《最新定时器计数器3PPT课件.ppt(66页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、定时器计数器定时器计数器3 3在工业检测、控制中,很多场合都要用到计数或者定时功能。例如对外部脉冲进行计数、产生精确的定时时间、作串行口的波特率发声器等。MCS51单片机内部有两个可编程的定时器/计数器,以满足这方面的需要。它们具有两种工作模数(计数器模式、定时器模式)和四种工作方式(方式0、方式1、方式2、方式3),其控制字均在相应的特殊功能寄存器(SFR)中,通过对它的SFR的编程,可以方便的选择工作模数和工作方式。定时器初值的确定定时器初值的确定:加法计数器是计满溢出时才申请中断,所以在给定时器/计数器赋初值时,不能直接输入所需的计数值,而应输入的是计数器计数的最大值与这一计数值的差值,

2、设最大值为M,计数值为N,初值为X,则X的计算方法如下:计数状态:X=MN定时状态:X=M定时时间/T而T=12晶振频率 二、二、定时器定时器/计数器控制寄存器计数器控制寄存器TCONTF0、TF1分别是定时器/计数器T0、T1的溢出标志位,加法计数器计满溢出时置1,申请中断,在中断响应后自动复0。TF产生的中断申请是否被接受,还需要由中断是否开放来决定。TR1、TR0分别是定时器/计数器T1、T0的运行控制位,通过软件置1后,定时器/计数器才开始工作,在系统复位时被清0。TF1TF1TR1TR1TF0TF0TR0TR0IE1IE1IT1IT1IE0IE0IT0IT06.3 工作方式工作方式

3、一、一、方式方式 0 图图6.3方式0(13位计数器)在方式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,则初值为xM1000819210001C18H1110000011000B则赋初值时,TH00E0H,TL018H。二、二、方式方式1 图6.4方式1(16位计数器)方式1

4、和方式0的工作原理基本相同,唯一不同是T0和T1工作在方式1时是16位位的计数/定时器。方式1时的计数长度计数长度M是2的16次方。16位的初值初值直接拆成高低字节,分别送入TH和TL即可。三、方式三、方式 2图6.5方式2(初始常数自动重装载)工作方式0和工作方式1的最大特点就是计数溢出后,计数器为全0,因而循环定时或循环计数应用时就存在反复设置初值的问题,这给程序设计带来许多不便,同时也会影响计时精度。工作方式2就针对这个问题而设置,它具有自动重装载功能,即自动加载计数初值,所以也称为自动重加载工作方式。在这种工作方式中,16位计数器分为两部分,即以TL0为计数器,以TH0作为预置寄存器,

5、初始化时把计数初值分别加载至TL0和TH0中,当计数溢出时,不再象方式0和方式1那样需要“人工干预”,由软件重新赋值,而是由预置寄存器TH以硬件方法自动给计数器TL0重新加载。四、四、方式方式 3 图6.6方式3(两个8位独立计数器)在工作方式3模式下,定时/计数器0被拆成两个独立的8位计数器TL0和TH0。其中TL0既可以作计数器使用,也可以作为定时器使用,定时/计数器0的各控制位和引脚信号全归它使用。其功能和操作与方式0或方式1完全相同。TH0就没有那么多“资源”可利用了,只能作为简单的定时器使用,而且由于定时/计数器0的控制位已被TL0占用,因此只能借用定时/计数器1的控制位TR1和TF

6、1,也就是以计数溢出去置位TF1,TR1则负责控制TH0定时的启动和停止。由于TL0既能作定时器也能作计数器使用,而TH0只能作定时器使用而不能作计数器使用,因此在方式3模式下,定时/计数器0可以构成二个定时器或者一个定时器和一个计数器。如果定时/计数器0工作于工作方式3,那么定时/计数器1的工作方式就不可避免受到一定的限制,因为自己的一些控制位已被定时/计数器借用,只能工作在方式0、方式1或方式2下,如果设置T1工作在方式3,则T1停止工作,相当于其他方式时令TR10。6.4 定时器定时器/计数器应用举例计数器应用举例 一、一、方式方式 0 的应用的应用 例例 1利用定时器输出周期为2ms的

7、方波,设单片机晶振频率为6MHz。选用定时器/计数器T0作定时器,输出为P1.0引脚,2ms的方波可由间隔1ms的高低电平相间而成,因而只要每隔1ms对P1.0取反一次即可得到这个方波。定时1ms的初值:因为机器周期=126MHz=2s所以1ms内T0需要计数N次:N=1ms2s=500由此可知:使用方式0的13位计数器即可,T0的初值X为X=MN=8192500=7692=1E0CH但是,因为13位计数器中,低8位TL0只使用了5位,其余码均计入高8位TH0的初值,则T0的初值调整为TH0=0F0H,TL0=0CHTMOD初始化:TMOD=00000000B=00H(GATE=0,C/T=0

8、,M1=0,M0=0)TCON初始化:启动TR0=1IE初始化:开放中断EA=1,定时器T0中断允许ET0=1程序清单如下:ORG0000HAJMPSTART;复位入口ORG000BHAJMPTOINT;T0中断入口ORG0030HSTART:MOVSP,60H;初始化程序MOVTH0,0F0H;T0赋初值MOVTL0,0CHMOVTMOD,00HSETBTR0;启动T0SETBET0;开T0中断SETBEA;开总允许中断MAIN:AJMPMAIN;主程序T0INT:CPLP1.0MOVTL0,0CHMOVTH0,0F0HRETI 二、二、方式方式 1应用应用方式1与方式0基本相同,只是方式1

9、改用了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中断。程序清单如下

10、:ORG0000HAJMPSTART;复位入口ORG001BHAJMPT1INT;T1中断入口ORG0100HSTART:MOVSP,60H;初始化程序MOVTCON,00HMOVTMOD,0D0HMOVTH1,00HMOVTL1,00HMOVR0,00H;清中断次数计数单元MOVP3,28H;设置P3.5第二功能SETBTR1;启动T1SETBET1;开T1中断SETBEA;开总中断MAIN:ACALLDISP;主程序,调显示子程序ORG0A00HT1INT:INCR0;中断服务子程序RETIDISP:;显示子程序RET 三、三、方式方式 2 应用应用方式2是定时器自动重装载的操作方式,在这

11、种方式下,定时器0和1的工作是相同的,它的工作过程与方式0、方式1基本相同,只不过在溢出的同时,将8位二进制初值自动重装载,即在中断服务子程序中,不需要编程送初值,这里不再举例。定时器T1工作在方式2时,可直接用作串行口波特率发生器,四、四、方式方式 3 的应用的应用定时器T0工作在方式3时是2个8位定时器/计数器。且TH0借用了定时器T1的溢出中断标志TF1和运行控制位TR1。例例 3假设有一个用户系统中已使用了两个外部中断源,并置定时器T1于方式2,作串行口波特率发生器用,现要求再增加一个外部中断源,并由P1.0口输出一个5KHz的方波(假设晶振频率为6MHz)。在不增加其它硬件开销时,可

12、把定时器/计数器T0置于工作方式3,利用外部引脚T0端作附加的外部中断输入端,把TL0预置为0FFH,这样在T0端出现由1至0的负跳变时,TL0立即溢出,申请中断,相当于边沿激活的外部中断源。在方式3下,TH0总是作8位定时器用,可以靠它来控制由P1.0输出的5kHz方波。由P1.0输出5kHz的方波,即每隔100s使P1.0的电平发生一次变化。则TH0中的初始值 X=MN=256100/2=206。下面是有关的程序。MOVTL0,0FFHMOVTH0,206MOVTL1,BAUD;BAUD根据波特率要求设置常数MOVTH1,BAUDMOVMOD,27H;置T0工作方式3;TL0工作于计数器方

13、式MOVTCON,55H;启动定时器T0、T1,置外部中断0和1;为边沿激活方式MOVIE,9FH;开放全部中断TL0溢出中断服务程序(由000BH单元转来):TL0INT:MOVTL0,0FFH;外部引脚T0引起中断处理程序RETITH0溢出中断服务程序(由001BH转来):TH0INT:MOVTH0,206CPLP1.0RETI此处串行口中断服务程序、外中断0和外中断1的中断服务程序没有列出。6.5 MCS-51单片机的串行接口单片机的串行接口 6.5.1 串行通信的基本概念串行通信的基本概念 并行并行 和和 串行串行并行通信的优点是速度快,效率高,确点是不适合远距离通信。串行通信刚好相反

14、。单工、半双工单工、半双工 和和 全双工全双工单工:信息只能沿着一个方向传播半双工:信息可以沿一条线双向传播,但不能同时实现双向传播。全双工:使用两条独立的数据通道,收发可同时进行。同步方式和异步方式同步方式和异步方式(1)同步方式是将一大批数据分成几个数据块,数据块之间用同步字符予以隔开,而传输的各位二进制码之间都没有间隔。其基本特征是发送与接收时钟始终保持严格同步。(2)异步通信是按帧传送数据,它利用每一帧的起、止信号来建立发送与接收之间的同步,每帧内部各位均采用固定的时间间隔,但帧与帧之间的时间间隔是随机的。其基本特征是每个字符必须用起始位和停止位作为字符开始和结束的标志,它是以字符为单

15、位一个个地发送和接收的。6.5.2 与串行口有关的特殊功能寄存器与串行口有关的特殊功能寄存器 1.数据缓冲器数据缓冲器SBUF串行口缓冲器SBUF是可直接寻址的特殊功能寄存器,其内部RAM字节地址是99H。在物理上,它对应着两个独立的寄存器,一个发送寄存器,一个接收寄存器。发送时,就是CPU写SBUF的时候(51系列单片机没有专门的启动发送状态的指令);接收时,就是读取SBUF的过程,接收寄存器是双缓冲的,以避免在接收下一帧数据之前,CPU未能及时响应接收器的中断,没有把上一帧数据读走,而产生两帧数据重叠的问题。2.串行口控制寄存器串行口控制寄存器SCONSCON用于控制和监视串行口的工作状态

16、,其各位定义如图5.3所示。相应的各位功能介绍如下:SM0、SM1:用于定义串行口的操作模式,两个选择位对应4种模式,见表6.2。其中fOSC是振荡器频率,UART为通用异步接收和发送器的英文缩写。SM2:多机通信时的接收允许标志位。在模式2和3中,若SM2=1,且接收到的第9位数据(RB8)是0,则接收中断标志(RI)不会被激活。在模式1中,若SM2=1且没有接收到有效的停止位,则RI不会被激活。在模式0中,SM2必须是0。表6.2串行口操作模式选择SM0SM1 模式功能波特率000110110101同步移位寄存器8位UART9位UART9位UARTfOSC/12可变(T1溢出率)fOSC/

17、64或fOSC/32可变(T1溢出率)3.电源控制寄存器电源控制寄存器PCON特殊功能寄存器PCON中,只有一位(最高位)SMOD与串行口的工作有关,该位是串行口波特率系数的控制位:SMOD=1时,波特率加倍,否则不加倍。PCON的地址为87H,不可位寻址,因此初始化时需要字节传送。6.5.3 串行口的串行口的 4 种工作模式种工作模式 1.模式模式 0 同步移位寄存器输入输出模式,可外接移位寄存器,以扩展I/O口。2.(1)模式模式 0 输出状态。输出状态。图6.8外接移位寄存器输出(2)模式模式 0 输入状态。输入状态。当满足RI=0且REN0时,就启动一次接收过程。图6.9外接移位寄存器

18、输入2.模式模式 1串行口工作于模式1时,为波特率可变的8 位位异异步步通信接口。数据位由P3.0(RXD)端接收,由P3.1(TXD)端发送。传送一帧信息为10位:一位起始位(0),8位数据位(低位在前)和一位停止位(1)。波特率是可变的,它取决于定时器T1的溢出速率及SMOD的状态。(1)模式1发送过程。用软件清除TI后,CPU执行任何一条以SBUF为目标寄存器的指令,就启动发送过程。数据由TXD引脚输出,此时的发送移位脉冲是由定时器/计数器T1送来的溢出信号经过16或32分频而取得的。一帧信号发送完时,将置位发送中断标志TI=1,向CPU申请中断,完成一次发送过程。(2)模式1接收过程。

19、用软件清除RI后,当允许接收位REN被置位1时,接收器以选定波特率的16倍的速率采样RXD引脚上的电平,即在一个数据位期间有16个检测脉冲,并在第7、8、9个脉冲期间采样接收信号,然后用三中取二的原则确定检测值,以抑制干扰。并且采样是在每个数据位的中间,避免了信号边沿的波形失真造成的采样错误。当检测到有从“1”到“0”的负跳变时,则启动接收过程,在接收移位脉冲的控制下,接收完一帧信息。当最后一次移位脉冲产生时能满足下列两个条件:RI=0;接收到的停止位为1或SM2=0。则停止位送入RB8,8位数据进入SBUF,并置RI1,完成一次接收过程。否则,所接收到的一桢信息将丢失,接收器复位,并从新开始

20、检测负跳变,以便接收下一桢信息。注意:接收中断标志RI应由软件清除。3.模式模式 2 和模式和模式 3。串行口工作于模式2和模式3时,被定义为9 位位异异步步通信接口。它们的每帧数据结构是11位的:最低位是起始位(0),其后是8位数据位(低位在先),第10位是用户定义位(SCON中的TB8或RB8),最后一位是停止位(1)。模式2和模式3工作原理相似,唯一的差别是模式2的波特率是固定的,即为f/32或fOSC/64;而模式3的波特率是可变的,与定时器T1的溢出率有关。(1)模式2和模式3的发送过程。发送过程是由执行任何一条SBUF为目的寄存器的指令来启动的。由“写入SBUF”信号把8位数据装入

21、SBUF,同时还把TB8装入发送移位寄存器的第9位,并通知发送控制器要求进行一次发送。发送开始,把一个起始位(0)送到TXD端。移位后,数据由移位寄存器送到TXD端。再过一位,出现第一个移位脉冲。第一次移位时,把一个停止位“1”由控制器的停止位发生端送入移位寄存器的第9位。此后,每次移位时,把0送入第9位。因此,当TB8的内容送到移位寄存器的输出位置时,其左面一位是停止位“1”,而再往左的所有位全为“0”。这种状态由零检测器检测到后,就通知发送控制器作最后一次移位,然后置TI=1,请求申请中断。第9位数据(TB8)由软件置位或清零,可以作为数据的奇偶校验位,也可以作为多机通信中的地址、数据标志

22、位。如把TB8作为奇偶校验位,可以在发送程序中,在数据写入SBUF之前,先将数据位写入TB8。(2)模式2和模式3接收过程。与模式1类似,模式2和模式3接收过程始于在RXD端检测到负跳变时,为此,CPU以波特率16倍的采样速率对RXD端不断采样。一检测到负跳变,16分频计数器就立刻复位,同时把1FFH写入输入移位寄存器。计数器的16个状态把一位时间等分成16份,在每一位的第7、8、9个状态时,位检测器对RXD端的值采样。如果所接收到的起始位无效(为1),则复位接收电路,等待另一个负跳变的到来。若起始位有效(为0)则起始位移入移位寄存器,并开始接收这一帧的其余位。当起始位0移到最左面时,通知接收

23、控制器进行最后一次移位。把8位数据装入接收缓冲器SBUF,第9位数据装入SCON中的RB8,并置中断标志RI=1。装入SBUF和RB8以及置位RI的信号只有在产生最后一个移位脉冲且同满足下列两个条件,才会产生:RI=0;SM2=0或接收到的第9位数据为“1”。上述两个条件中任一个不满足,所接收的数据帧就会丢失,不再恢复。两者都满足时,第9位数据装入TB8,前8位数据装入SBUF。请注意:与模式1不同,模式2和3中装入RB8的是第9位数据,而不是停止位。所接收的停止位的值与SBUF、RB8和RI都没有关系,利用这一特点可用于多机通信中。6.5.4 多机通信多机通信 图6.10多处理机通信系统 6

24、.5.5 波特率波特率串行口每秒钟发送或接收的数据位数称为波特率。假设发送一位数据所需时间为T,则波特率为1/T。(1)模式0的波特率等于单片机晶振频率的1/12,即每个机器周期接收或发送一位数据。(2)模式2的波特率与电源控制器PCON的最高位SMOD的写入值有关:即 SMOD=0,波 特 率 为(1/64)fOSC;SMOD=1,波 特 率 为(1/32)fOSC。(3)模式1和模式3的波特率除了与SMOD位有关之外,还与定时器T1的溢出率有关。定时器T1作为波特率发生器,常选用定时方式2(8位重装载初值方式),并且禁止T1中断。此时TH1从初值计数到产生溢出,它每秒钟溢出的次数称为溢出率

25、。于是表表 6.3 定时器定时器T1产生的常用波特率产生的常用波特率 假设某MCS-51单片机系统,串行口工作于模式3,要求传送波特率为1200Hz,作为波特率发生器的定时器T1工作在方式2时,请求出计数初值为多少?设单片机的振荡频率为6MHz。因为串行口工作于模式3时的波特率为所以当SMOD=0时,初值TH1=256-6106/(12001232/1)=243=0F3H当SMOD=1时,初值TH1=256-6106/(12001232/2)=230=0E6H6.6 串行口的应用串行口的应用 一、一、串行口的编程串行口的编程串行口需初始化后,才能完成数据的输入、输出。其初始化过程如下:(1)按

26、选定串行口的操作模式设定SCON的SM0、SM1两位二进制编码。(2)对于操作模式2或3,应根据需要在TB8中写入待发送的第9位数据。(3)若选定的操作模式不是模式0,还需设定接收/发送的波特率。设定SMOD的状态,以控制波特率是否加倍。若选定操作模式1或3,则应对定时器T1进行初始化以设定其溢出率。二、二、串行口的应用串行口的应用 例例1 用8051串行口外接74LS165移位寄存器扩展8位输入口,输入数据由8个开关提供,另有一个开关K提供联络信号。电路示意如图6.11所示。当开关K合上时,表示要求输入数据。输入8位开关量,处理不同的程序。图6.11程序如下程序如下:START:JBP1.0

27、,$;开关K未合上,等待SETBP1.1;165并行输入数据CLRP1.1;开始串行移位MOVSCON,10H;串行口模式0并启动接收JNBRI,$;查询RICLRRI;查询结束,清RIMOVA,SBUF;输入数据;根据A处理不同任务SJMPSTART;准备下一次接收。例例 2 利用串行口进行双机通信。利用串行口进行双机通信。图6.12双机通信系统甲机发送(采用查询方式):MOVSCON,80H;设置工作方式2MOVPCON,00;置SMOD=0,波特率不加倍MOVR0,40H;数据区地址指针MOVR2,10H;数据长度LOOP:MOVA,R0;取发送数据MOVC,P;奇偶位送TB8MOVTB

28、8,CMOVSBUF,A;送串口并开始发送数据WAIT:JBCTI,NEXT;检测是否发送结束并清TISJMPWAITNEXT:INCR0;修改发送数据地址指针DJNZR2,LOOPRET乙机接收(查询方式):MOVSCON,90H;模作模式2,并允许接收MOVPCON,00H;置SMOD=0MOVRO,60H;置数据区地址指针MOVR2,10H;等待接收数据长度LOOP:JBCRI,READ;等待接收数据并清RISJMPLOOPREAD:MOVA,SBUF;读一帧数据MOVC,PJNCLP0;C不为1转LP0JNBRB8,ERR;RB8=0,即RB8不为P转ERRAJMPLP1LP0:JBR

29、B8,ERR;RB8=1,即RB8不为P转ERRLP1:MOVR0,A;RB8=P,接收一帧数据INCR0DJNZR2,LOOPRETERR:;出错处理程序 例例 2 单片机和单片机和PC之间利用串行口进行通信之间利用串行口进行通信51单片机有一个全双工的串行通讯口,和PC机之间可以方便地进行串口通讯。电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,可以采用专用芯片MAX232,也可以用几个三极管进行转换,但还是用专用芯片简单可靠。一般采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。TTL电平和电平和RS-232电平的转换电平的转换结束语结束语谢谢大家聆听!谢谢大家聆听!66

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁