ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:159.84KB ,
资源ID:26930265      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26930265.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(定时计数器的四种工作方式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

定时计数器的四种工作方式.docx

1、定时计数器的四种工作方式在单片机中有两个特殊功能寄存器与定时/计数有关,这就是TMOD和TCON。顺便说一下,TMOD和TCON是名称,我们在写程序时就能直接用这个名称来指定它们,当然也能直接用它们的地址89H和88H来指定它们(其实用名称也就是直接用地址,汇编软件帮你翻译一下而已)。从图1中我们能看出,TMOD被分成两部份,每部份4位。分别用于控制T1和T0,至于这里面是什么意思,我们下面介绍。从图2中我们能看出,TCON也被分成两部份,高4位用于定时/计数器,低4位则用于中断(我们暂不管)。而TF1(0)我们上节课已提到了,当计数溢出后TF1(0)就由0变为1。原来TF1(0)在这儿!那么

2、TR0、TR1又是什么呢?看上节课的图。 希望大家常来本站学习单片机相关知识计数脉冲要进入计数器还真不不难,有层层关要通过,最起码,就是TR0(1)要为1,开关才能合上,脉冲才能过来。因此,TR0(1)称之为运行控制位,可用指令SETB来置位以启动计数器/定时器运行,用指令CLR来关闭定时/计数器的工作,一切尽在自已的掌握中。定时/计数器的四种工作方式工作方式0 定时器/计数器的工作方式0称之为13位定时/计数方式。它由TL(1/0)的低5位和TH(0/1)的8位组成13位的计数器,此时TL(1/0)的高3位未用。我们用这个图来讨论几个问题:M1M0:定时/计数器一共有四种工作方式,就是用M1

3、M0来控制的,2位正好是四种组合。 C/T:前面我们说过,定时/计数器即可作定时用也可用计数用,到底作什么用,由我们根据需要自行决定,也说是决定权在我们��编程者。如果C/T为0就是用作定时器(开关往上打),如果C/T为1就是用作计数器(开关往下打)。顺便提一下:一个定时/计数器同一时刻要么作定时用,要么作计数用,不能同时用的,这是个极普通的常识,几乎没有教材会提这一点,但很多开始学习者却会有此困惑。 GATE:看图,当我们选择了定时或计数工作方式后,定时/计数脉冲却不一定能到达计数器端,中间还有一个开关,显然这个开关不合上,计数脉冲就没法过去,那么开关什么时候过去呢?有两种情况

4、GATE=0,分析一下逻辑,GATE非后是1,进入或门,或门总是输出1,和或门的另一个输入端INT1无关,在这种情况下,开关的打开、合上只取决于TR1,只要TR1是1,开关就合上,计数脉冲得以畅通无阻,而如果TR1等于0则开关打开,计数脉冲无法通过,因此定时/计数是否工作,只取决于TR1。 GATE=1,在此种情况下,计数脉冲通路上的开关不仅要由TR1来控制,而且还要受到INT1管脚的控制,只有TR1为1,且INT1管脚也是高电平,开关才合上,计数脉冲才得以通过。这个特性能用来测量一个信号的高电平的宽度,想想看,怎么测? 为什 么在这种模式下只用13位呢?干吗不用16位,这是为了和51机的前辈

5、48系列兼容而设的一种工作式,如果你觉得用得不顺手,那就干脆用第二种工作方式。工作方式1 工作方式1是16位的定时/计数方式,将M1M0设为01即可,其它特性与工作方式0相同。工作方式2 在介绍这种式方式之前先让我们思考一个问题:上一次课我们提到过任意计数及任意定时的问题,比如我要计1000个数,可是16位的计数器要计到65536才满,怎么办呢?我们讨论后得出的办法是用预置数,先在计数器里放上64536,再来1000个脉冲,不就行了吗?是的,但是计满了之后我们又该怎么办呢?要知道,计数总是持续重复的,流水线上计满后马上又要开始下一次计数,下一次的计数还是1000吗?当计满并溢出后,计数器里面的

6、值变成了0(为什么,能参考前面课程的说明),因此下一次将要计满65536后才会溢出,这可不符合要求,怎么办?当然办法很简单,就是每次一溢出时执行一段程序(这常常是需要的,要不然要溢出干吗?)能在这段程序中做把预置数64536送入计数器中的事情。所以采用工作方式0或1都要在溢出后做一个重置预置数的工作,做工作当然就得要时间,一般来说这点时间不算什么,可是有一些场合我们还是要计较的,所以就有了第三种工作方式��自动再装入预置数的工作方式。既然要自动得新装入预置数,那么预置数就得放在一个地方,要不然装什么呢?那么预置数放在什么地方呢?它放在T(0/1)的高8位,那么这样高8位不就不能参与

7、计数了吗?是的,在工作方式2,只有低8位参与计数,而高8位不参与计数,用作预置数的存放,这样计数范围就小多了,当然做任可事总有代价的,关键是看值不值,如果我根本不需要计那么多数,那么就能用这种方式。看图4,每当计数溢出,就会打开T(0/1)的高、低8位之间的开关,计预置数进入低8位。这是由硬件自动完成的,不需要由人工干预。常常这种式作方式用于波特率发生器(我们将在串行接口中讲解),用于这种用途时,定时器就是为了供给一个时间基准。计数溢出后不需要做事情,要做的仅仅只有一件,就是重新装入预置数,再开始计数,而且中间不要任何延迟,可见这个任务用工作方式2来完成是最妙不过了。工作方式3 这种式作方式之

8、下,定时/计数器0被拆成2个独立的定时/计数器来用。其中,TL0能组成8位的定时器或计数器的工作方式,而TH0则只能作为定时器来用。我们知道作定时、计数器来用,需要控制,计满后溢出需要有溢出标记,T0被分成两个来用,那就要两套控制及、溢出标记了,从何而来呢?TL0还是用原来的T0的标记,而TH0则借用T1的标记。如此T1不是无标记、控制可用了吗?是的。一般情况处,只有在T1以工作方式2运行(当波特率发生器用)时,才让T0工作于方式3的。定时器/计数器的定时/计数范围工作方式0:13位定时/计数方式,因此,最多能计到2的13次方,也就是8192次。工作方式1:16位定时/计数方式,因此,最多能计

9、到2的16次方,也就是65536次。工作方式2和工作方式3,都是8位的定时/计数方式,因此,最多能计到2的8次方,也说是256次。预置值计算:用最大计数量减去需要的计数次数即可。例:流水线上一个包装是12盒,要求每到12盒就产生一个动作,用单片机的工作方式0来控制,应当预置多大的值呢?对了,就是8192-12=8180。以上是计数,明白了这个道理,定时也是一样。这在前面的课程已提到,我们不再重复,请参考前面的例程。1中断允许寄存器-IEIE在特殊功能寄存器中,字节地址为A8H,位地址(由低位到高位)分别是A8H-AFH。IE用来打开或关断各中断源的中断请求,基本格式如下图二所示:EA:全局中断

10、允许位。EA0,关闭全部中断;EA1,打开全局中断控制,在此条件下,由各个中断控制位确定相应中断的打开或关闭。:无效位。ES:串行IO中断允许位。ES1,打开串行IO中断;ES0,关闭串行IO中断。ETl;定时器计数器1中断允许位。ETl1,打开T1中断;ETlO,关闭T1中断。EXl:外部中断l中断允许位。EXl1,打开INT1;EXl0,关闭INT1。ET0:定时器计数器0中断允许位。ET01,打开T0中断;ET00,关闭TO中断。EXO:外部中断0中断允许位。Ex01,打开INT0;EX0=0,关闭INT0.中断优先寄存器-IP:IP在特殊功能寄存器中,字节地址为B8H,位地址(由低位到

11、高位)分别是B8H一BFH,IP用来设定各个中断源属于两级中断中的哪一级,IP的基本格式如下图三所示:无效位。PS:串行IO中断优先级控制位。PS1,高优先级;PS0,低优先级。PTl:定时器计数器1中断优先级控制位。PTl1,高优先级;PTl0,低优先级。Pxl:外部中断1中断优先级控制位。Pxl1,高优先级;PXlO,低优先级。PT0:定时器计数器o中断优先级控制位。PT01,高优先级;PTO0,低优先级。Px0:外部中断0中断优先级控制位。Px01,高优先级;Px00,伤优先级。在MCS-51单片机系列中,高级中断能够打断低级中断以形成中断嵌套;同级中断之间,或低级对高级中断则不能形成中

12、断嵌套。若几个同级中断同时向CPU请求中断响应,则CPU按如下顺序确定响应的先后顺序:INT0一T0-INT1一T1一RIT1.中断的响应过程若某个中断源通过编程设置,处于被打开的状态,并满足中断响应的条件,而且当前正在执行的那条指令已被执行完1、当前末响应同级或高级中断2、不是在操作IE,IP中断控制寄存器或执行REH指令则单片机响应此中断。在正常的情况下,从中断请求信号有效开始,到中断得到响应,通常需要3个机器周期到8个机器周期。中断得到响应后,自动清除中断请求标志(对串行IO端口的中断标志,要用软件清除),将断点即程序计数器之值(PC)压入堆栈(以备恢复用);然后把相应的中断入口地址装入

13、PC,使程序转入到相应的中断服务程序中去执行。各个中断源在程序存储器中的中断入口地址如下:中断源 入口地址INT0(外部中断0) 0003HTF0(TO中断) 000BHINT1(外部中断1) 0013HTFl(T1中断) 001BHRITI(串行口中断) 0023H由于各个中断入口地址相隔甚近,不便于存放各个较长的中断服务程序,故通常在中断入口地址开始的二三个单元中,安排一条转移类指令,以转入到安排在那儿的中断服务程序。以T1中断为例,其过程下如图四所示。由于5个中断源各有其中断请求标志0,TF0,IEl,TFl以及RITI,在中断源满足中断请求的条件下,各标志自动置1,以向CPU请求中断。

14、如果某一中断源提出中断请求后,CPU不能立即响应,只要该中断请求标志不被软件人为清除,中断请求的状态就将一直保持,直到CPU响应了中断为止,对串行口中断而言,这一过程与其它4个中断的不同之处在于;即使CPU响应了中断,其中断标志RITI也不会自动清零,必须在中断服务程序中设置清除RITI的指令后,才会再一次地提出中断请求。CPU的现场保护和恢复必须由被响应的相应中断服务程序去完成,当执行RETI中断返回指令后,断点值自动从栈顶2字节弹出,并装入PC寄存器,使CPU继续执行被打断了的程序。下面给出一个应用定时器中断的实例。现要求编制一段程序,使P10端口线上输出周期为2ms的方波脉冲。设单片机晶

15、振频率Fosc6MHZ1、方法:利用定时器T0作1ms定时,达到定时值后引起中断,在中断服务程序中,使P10的状态取一次反,并再次定时1ms。2、定时初值:机器周期MC12/fosc2us。所以定时lms所需的机器周期个数为500D,亦即0lF4H。设T0为工作方式1(16位方式),则定时初值是(01F4H)求补FEOCHSTART:MOV TMOD,#01H;T0为定时器状态,工作方式1MOV TL0,#0CH;T0的低位定时初值MOV TH0,#0FEH;T0的高位定时初值MOV TCON,#10H;打开T0SETB ET0;1ET0,即允许T0中断SETB EA;1EA,即充许全局中断A

16、JMP $;动态暂存000BH:AJMP IST0;转入T0中断服务程序入口地址IST0IST0:MOV TL0,#0CH;重置定时器初值MOV TH0,#0FEH;重置定时器初值CPL P1.0;P1.0取反RET1;中断返回串行端口的控制寄存器:串行端口共有2个控制寄存器SCON和PCON,用以设置串行端口的工作方式、接收发送的运行状态、接收发送数据的特征、波特率的大小,以及作为运行的中断标志等。串行口控制寄存器SCONSCON的字节地址是98H,位地址(由低位到高位)分别是98H一9FH。SCON的格式如图五所示。SMo,SMl:串行口工作方式控制位。00-方式0;01-方式1;10-方

17、式2;11-方式3。SM2:仅用于方式2和方式3的多机通讯控制位发送机SM21(要求程控设置)。当为方式2或方式3时:接收机 SM21时,若RB81,可引起串行接收中断;若RB80,不引起串行接收中断。SM20时,若RB81,可引起串行接收中断;若RB80,亦可引起串行接收中断。REN:串行接收允许位。0-禁止接收;1-允许接收。TB8:在方式2,3中,TB8是发送机要发送的第9位数据。RB8:在方式2,3中,RB8是接收机接收到的第9位数据,该数据正好来自发送机的TB8。TI:发送中断标志位。发送前必须用软件清零,发送过程中TI保持零电平,发送完一帧数据后,由硬件自动置1。如要再发送,必须用

18、软件再清零。RI:接收中断标志位。接收前,必须用软件清零,接收过程中RI保持零电平,接收完一帧数据后,由片内硬件自动置1。如要再接收,必须用软件再清零。电源控制寄存器PCONPCON的字节地址为87H,无位地址,PCON的格式如图六所示。需指出的是,对80C31单片机而言,PCON还有几位有效控制位。SMOD:波特率加倍位。在计算串行方式1,2,3的波特率时;0-不加倍;1-加倍。串行中断的应用特点:8031单片机的串行IO端口是一个中断源,有两个中断标志RI和TI,RI用于接收,TI用于发送。串行端口无论在何种工作方式下,发送接收前都必须对TIRI清零。当一帧数据发送接收完后,TI/RI自动

19、置1,如要再发送接收,必须先用软件将其清除。在串行中断被打开的条件下,对方式0和方式1来说,一帧数据发送接收完后,除置位TIRI外,还会引起串行中断请求,并执行串行中侧目务程序。但对方式2和方式3的接收机而言,还要视SM2和RB8的状态,才可确定RI是否被置位以及串行中断的开放:SM2 RB8 接收机中断标志与中断状态0 1 激活RI,引起中断1 0 不激活RI,不引起中断1 1 激活RI,引起中断单片机正是利用方式2,3的这一特点,实现多机间的通信。串行端口的常用应用方法见相关章节。波特率的确定:对方式0来说,波特率已固定成fosc12,随着外部晶振的频率不同,波特率亦不相同。常用的fosc

20、有12MHz和6MHz,所以波特率相应为1000103和500103位s。在此方式下,数据将自动地按固定的波特率发送接收,完全不用设置。对方式2而言,波特率的计算式为2SMODfosc64。当SMOD0时,波特率为fm64;当SMOD1时,波特率为fosc32。在此方式下,程控设置SMOD位的状态后,波特率就确定了,不需要再作其它设置。对方式1和方式3来说,波特率的计算式为2SMOD32T1溢出率,根据SMOD状态位的不同,波特率有Tl32溢出率和T116溢出率两种。由于T1溢出率的设置是方便的,因而波特率的选择将十分灵活。前已叙及,定时器Tl有4种工作方式,为了得到其溢出率,而又不必进入中断

21、服务程序,往往使T1设置在工作方式2的运行状态,也就是8位自动加入时间常数的方式。由于在这种方式下,T1的溢出率(次秒)计算式可表达成:下面一段主程序和中断服务程序,是利用串行方式l从数据00H开始连续不断增大地串行发送一片数据的程序例。设单片机晶振的频率为6MHZ,波特率为1200位秒。ORG 2000H;1200位/秒的定时器初值MOV TL1,#0F3HMOV TH1,#0F3H;使SMOD=0MOV PCON,#00H;T1方式2MOV TMOD,#20HSETB EACLR ET1;关闭T1中断SETB ES;开串行中断SETB TR1;开T1定时MOV SCON,#40H;串行方式1CLR AMOV SBUF,A;串行发送JNB T1,$;等待发送完CLR T1,;清标志SJMP $ORG 0023H;串行中断入口地址MOV SBUF,A;连续发送JNB T1,$INC ACLR T1RET1;中断返回 (注:本资料素材和资料部分来自网络,仅供参考。请预览后才下载,期待您的好评与关注!)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1