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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(第6章 单片机原理及接口技术讲稿第三版李朝青.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第6章 单片机原理及接口技术讲稿第三版李朝青.docx

1、第6章 单片机原理及接口技术讲稿第三版李朝青第6章 定时器及应用6.1 定时器概述6.1.1 8051定时器结构8051定时器的结构如 图6-1 所示。图6-1 89C51定时器有两个16位的定时器/计数器,即定时器0(T0)和定时器1(T1)。它们实际上都是16位加1计数器。T0由两个8位特殊功能寄存器TH0和TL0构成;T1由TH1和TL1构成。6.1.2 8051定时器功能每个定时器都可由软件设置为 定时工作方式或 计数工作方式及其他灵活多样的可控功能方式。这些功能由特殊功能寄存器TMOD和TCON所控制。定时器工作不占用CPU时间,除非定时器/计数器溢出,才能中断CPU的当前操作。每个

2、定时器/计数器还有四种工作模式。其中模式0-2对T0和T1是一样的,模式3对两者不同。定时工作方式定时器计数8051片内振荡器输出经12分频后的脉冲,即每个机器周期使定时器(T0或T1)的数值加1直至计满溢出。当8051采用12MHz晶振时,一个机器周期为1s,计数频率为1MHz。计数工作方式通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数。当输入脉冲信号产生由1至0的下降沿时定时器的值加1。CPU检测一个1至0的跳变需要两个机器周期,故最高计数频率为振荡频率的1/24。为了确保某个电平在变化之前被采样一次,要求电平保持时间至少是一个完整的机器周期。对输入脉冲信号的基本要求如 图6

3、-2所示。6.2 定时器的控制 6.2.1 工作模式寄存器 TMODTMOD用于控制T0和T1的工作模式。TMOD不能位寻址,只能用字节设置定时器的工作模式,低半字节设置T0,高半字节设置T1。8051系统复位时,TMOD的所有位被清0。TMOD各位的定义格式如 图6-3 所示。TMOD各位定义及具体的意义归纳如 图6-4所示。 M1和M0操作模式控制位。 两位可形成四种编码,对应于四种模式。见 表6-1。M1 M0工作模式功能描述0 0模式013位计数器0 1模式116位计数器1 0模式2自动再装入8位计数器1 1模式3定时器0:分成二个8位计数器 定时器1:停止计数 C/T计数器/定时器方

4、式选择位。 C/T=0,设置为定时方式。定时器计数8051片内脉冲,即对机器周期计数。 C/T=1,设置为计数方式。计数器的输入来自T0(P3.4)或T1(P3.5)端的外部脉冲 。 GATE门控位。 GATE=0,只要用软件使TR0(或TR1)置1就可以启动定时器,而不管INT0(或INT1)的电平是高还是低。 GATE=1,只有INT0(或INT1)引脚为高电平且由软件使TR0(或TR1)置1时,才能启动定时器工作。6.2.2 控制器寄存器 TCONTCON除可字节寻址外,各位还可位寻址。8051系统复位时,TCON的所有位被清0。 TCON各位的定义格式如 图6-5所示。TCON各位定义

5、及具体的意义归纳如 图6-6所示。 TF1(TCON.7) T1溢出标志位。 当T1溢出时,由硬件自动使中断触发器TF1置1,并CPU申请中断。 当CPU响应中断进入中断服务程序后,TF1由被硬件自动清0。TF1也可以用软件清0。 TF0 (TCON.5)T0溢出标志位。 其功能和操作情况同TF1。 TR1(TCON.6)T1运行控制位。 可通过软件置1(TR1=1)或清0(TR1=0)来启动或 关闭 T1。 在程序中用指令“SETB TR1”使TR1位置1,定时器T1便开始计数。 TR0(TCON.4)T0运行控制位。 其功能和操作情况同TR1。 IE1,IT1,IE0,IT0(TCON.3

6、TCON.0)外部中断INT1,INT0请求及请求方式控制位。前一章已经讲过。6.3 定时器的四种模式及应用 6.3.1 模式 0 及其应用一、模式 0 的逻辑电路结构T0在模式 0 的逻辑电路结构如图所示。(T1相同)二、模式 0 工作特点在这种模式下,16位寄存器(TH0和TL0)只用了13位。其中TL0的高3位未用,其余5位为整个13位的低5为,TH0占高8位。当TL0的低5位溢出时,向TH0进位;TH0溢出时,向中断标志TF0进位(硬件置位TF0),并申请中断。定时时间为: t=(213T0初值)振荡周期12三、模式 0 的应用举例(例6-1)例6-1:设定时器T0选择工作模式0,定时

7、时间为1ms,fosc=6MHz。试确定T0初值,计算最大定时时间T。解:当T0处于工作模式0时,加1计数器为13位。(1)试确定T0初值 设T0的初值位X。则:(213X)1/6 10-612=110-3 s X=7692D =1 1110 0000 1100B T0的低5位:01100B=0CH即(TL0)=0CH T0的高8位:11110000B=F0H即(TH0)=F0H(2)计算最大定时时间T T0的最大定时时间对应于13位计数器T0的各位全为1,即(TL0)=1FH,(TH0)=FFH.则:T=2131/6 10-612=16.384ms三、模式 0 的应用举例(例6-2)例6-2

8、:设T0工作在模式0,定时时间为1ms,fosc=6MHz。编程实现其定时功能。定时时间到,P1.0取反。 解:(1)计算T0初值X 计算步骤见例6-1。 结果:(TH0)=0F0H,(TL0)=0CH。(2)程序清单: 初始化引导程序 ORG 0000HRESET: AJMP MAIN ; 跳过中断服务程序区 ORG 000BH ;中断服务程序入口 AJMP ITOP主程序: ORG 0100H MAIN: MOV SP,#60H ;设堆栈指针 ACALL PTOMD HERE: AJMP HERE ;等待时间到,转入中断服务程序PTOMD: MOV TMOD,#00H;选择工作模式 MOV

9、 TL0,#0CH;送初值 MOV TH0,#0F0H SETB TR0 ;启动定时 SETB ET0 ;T0开中断 SETB EA ;CPU开中断 RET中断服务程序 ORG 0120H ITOP: MOV TL0,#0CH ;重新装如初值 MOV TH0,#0F0H CPL P1.0 ;P1.0取反 RETI三、模式 0 的应用举例(例6-3)例6-3:利用T0的工作模式0产生1ms定时,在P1.0引脚输出周期为2ms的方波。设单片机晶振频率fosc=12MHz。编程实现其功能。解: 要在P1.0引脚输出周期为2ms的方波,只要使P1.0每隔1ms取反一次即可。 (1)选择工作模式 T0的

10、模式字为TMOD=00H,即 M1M0=00,C/T=0,GATE=0,其余位为0。(2)计算1ms定时时T0的初值 (213X)1/12 10-612=110-3 s X=7193D=11100000 11000B T0的低5位:11000B=18H即 (TL0)=18H T0的高8位:11100000B=E0H即 (TH0)=E0H (3)采用查询方式的程序程序清单: MOV TMOD,#00H ;设置T0为模式0 MOV TL0,#18H ;送初值 MOV TH0,#0E0H SETB TR0 ;启动定时 LOOP:JBC TF0,NEXT ;查询定时时间到否 SJMP LOOP NEX

11、T:MOV TL0,#18H ;重装计数初值 MOV TH0,#0E0H CPL P1.0 ;取反 SJMP LOOP ;重复循环(4)采用定时器溢出中断方式的程序程序清单: 主程序 ORG 0000H RESET: AJMP MAIN ; 跳过中断服务程序区 ORG 0030H MAIN: MOV TMOD,#00H ;设置T0为模式0 MOV TL0,#18H ;送初值 MOV TH0,#0E0H SETB EA ;CPU开中断 SETB ET0 ;T0中断允许 SETB TR0 ;启动定时 HERE:SJMP HERE ;等待中断,虚拟主程序中断服务程序 ORG 000BH AJMP C

12、TC0 ORG 0120H CTC0: MOV TL0,#18H ;重新装如初值 MOV TH0,#0E0H CPL P1.0 ;P1.0取反 RETI6.3.2 模式 1 及其应用一、模式 1 的逻辑电路结构T0在模式 1 的逻辑电路结构如 图6-7所示。(T1相同)二、模式 1 工作特点该模式对应的是一个16位的定时器/计数器。用于定时工作方式时,定时时间为: t=(216T0初值)振荡周期12用于计数工作方式时,计数长度最大为: 216=65536(个外部脉冲)三、模式 1 的应用举例(例6-4)例6-4:用定时器T1产生一个50Hz的方波,由 P1.1输出。,使用程序查询方式,fosc

13、=6MHz。解: 方波周期T=1/50=0.02s =20ms 用T1定时10ms 计数初值X为: X=21612101000/12 =6553610000=55536=D8F0H源程序清单: MOV TMOD,#10H ;设置T1为模式1 SETB TR1 ;启动定时LOOP: MOV TL1,#0D8H ;送初值 MOV TH1,#0F0H JNB TF1,$ ;查询定时时间到否 CLR TF1 ;产生溢出,清标志位 CPL P1.1 ;取反 SJMP LOOP ;重复循环6.3.3 模式 2 及其应用一、模式 2 的逻辑电路结构T0在模式 2 的逻辑电路结构如 图6-8所示。(T1相同)

14、TL0计数溢出时,不仅使溢出中断标志位TF0置1,而且还自动把TH0中的内容重新装载到TL0中。TL0用作8位计数器,TH0用以保存初值。二、模式 2 工作特点该模式把TL0(TL1)配置成一个可以自动重装载的8位定时器/计数器。在程序初始化时,TL0和TH0由软件赋予相同的初值。用于定时工作方式时,定时时间为:t=(28TH0初值)振荡周期12用于计数工作方式时,计数长度最大为:28=256(个外部脉冲)该模式可省去软件中重装常数的语句,并可产生相当精确的定时时间,适合于作串行口波特率发生器。三、模式 2 的应用举例(例6-5)例6-5:当P3.4引脚上的电平发生负跳变时, 从P1.0输出一

15、个500s的同步脉冲。请编程序实现该功能。查询方式,fosc=6MHz。解:(1)模式选择 选T0为模式2,外部事件计数方式。 当P3.4引脚上的电平发生负跳变时,T0计数器加1,溢出标志TF0置1;然后改变T0为500s定时工作方式,并使P1.0输出由1变为0。T0定时到产生溢出,使P1.0输出恢复高电平,T0又恢复外部事件计数方式。 如 图6-9 所示。(2)计算初值 T0工作在外部事件计数方式,当计数到28时,再加1计数器就会溢出。设计数初值为X,当再出现一次外部事件时,计数器溢出。 则: X+1=28 X= 28 1=11111111B=0FFH T0工作在定时工作方式,设晶振频率为6

16、MHz,500s相当于250个机器周期。因此,初值X为 (28X)2s=500s X=6=06H(3)程序清单START: MOV TMOD,#06H ;设置T0为模式2,外部计数方式 MOV TL0,#0FFH ;T0计数器初值 MOV TH0,#0FFH SETB TR0 ;启动T0计数 LOOP1:JBC TF0,PTFO1 ;查询T0溢出标志, ;TF0=1时转,且清TF0=0 SJMP LOOP1 ; PTFO1:CLR TR0 ;停止计数 MOV TMOD,#02H ;设置T0为模式2,定时方式 MOV TL0,#06H ;送初值,定时500s MOV TH0,#06H CLR P

17、1.0 ; P1.0清0 SETB TR0 ;启动定时500s LOOP2 : JBC TF0,PTFO2 ;查询T0溢出标志, ;TF0=1时转,且清TF0=0 ; (第一个500s到否?) SJMP LOOP2 ;等待中断,虚拟主程序 PTFO2 : SETB P1.0 ; P1.0置1 CLR TR0 ;停止计数 SJMP START三、模式 2 的应用举例(例6-6)例6-6:利用定时器T1的模式2对外部信号计数。要求没计满100次,将 P1.0端取反。解:(1)选择模式 外部信号由T1(P3.5)引脚输入,每发生一次负跳变计数器加1,每输入100个脉冲,计数器发生溢出中断,中断服务程

18、序将P1.0取反一次。 T1计数工作方式模式2的模式字为(TMOD)=60H。 T0不用时,TMOD的低4位可任取,但不能进入模式3,一般取0。(2)计算T1的计数初值 X= 28 100=156=9CH 因此:TL1的初值为9CH, 重装初值寄存器TH1=9CH。(3)程序清单 MAIN: MOV TMOD,#60H ;设置T1为模式2,外部计数方式 MOV TL1,#9CH ;T1计数器初值 MOV TH1,#9CH MOV IE,#88H ; 定时器开中断 SETB TR1 ;启动T1计数 HERE:SJMP HERE ;等待中断 ORG 001BH ;中断服务程序入口 CPL P1.0

19、 RETI6.3.4 模式 3 及其应用一、模式 3 的逻辑电路结构1、T0模式3的逻辑电路结构T0模式3的逻辑电路结构如 图6-10所示。T0设置为模式3,TL0和TH0被分成两个相互独立的8位计数器。TL0用原T0的各控制位、引脚和中断源,即C/T,GATE,TR0,TF0,T0(P3.4)引脚,INT0(P3.2)引脚。TL0可工作在定时器方式和计数器方式。其功能和操作与模式0、模式1相同(只是8位)。它占用了定时器T1的控制位TR1和T1的中断标志TF1,其启动和关闭仅受TR1的控制。TH0只可用作简单的内部定时功能。2、T0模式3下T1的逻辑电路结构定时器T1无工作模式3状态。在T0

20、用作模式3时,T1仍可设置为模式02。T0模式3下T1的逻辑电路结构如 图6-12 所示。由于TR1和TF1被定时器T0占用,计数器开关K已被接通,此时,仅用T1控制位,C/T切换其定时或计数器工作方式就可使T1运行。当计数器溢出时,只能将输出送入串行口或用于不需要中断的场合。一般作波特率发生器二、模式 3 的应用举例(例6-7)例6-7:设某用户系统已使用了两个外部中断源,并置定时器T1工作在模式2,作串行口波特率发生器用。现要求再增加一个外部中断源,并由P1.0引脚输出一个5kHz的方波。Fosc=12MHz. 解:(1)工作模式 可设置T0工作在模式3计数器方式,把T0的引脚作附加的外部

21、中断输入端,TL0的计数初值为FFH,当检测到T0引脚电平出现由1至0的负跳变时,TL0产生溢出,申请中断。 T0模式3下,TL0作计数用,而TH0用作8位的定时器,定时控制P1.0引脚输出5kHz的方波信号。 (2)计算初值TL0的计数初值为FFH。TH0的计数初值X为: P1.0方波周期T=1/(5kHz)=0.2ms=200s 用TH0作定时100s时, X=256-100 12/12=156(3)程序清单 MOV TMOD,#27H ;T0为模式3,计数方式 ; T1为模式2,定时方式 MOV TL0,#0FFH ;TL0计数初值 MOV TH0,#156 ;TH0计数初值 MOV T

22、L1,#data ;data是根据波特率 ;要求设置的常数(初值) MOV TH1,#data MOV TCON,#55H ;外中断0,外中断1边沿触发, ;启动T0,T1 MOV IE,#9FH ; 开放全部中断 TL0溢出中断服务程序(由000BH转来)TL0INT:MOV TL0,#0FFH ;TL0重赋初值 (中断处理) RETI TH0溢出 TH0溢出中断服务程序(由001BH转来)TH0INT:MOV TH0,#156 ;TH0重赋初值 CPL P1.0 ;P1.0取反输出 RETI串行口及外部中断0,外部中断1的服务程序略。6.3.5 综合应用举例(例6-8)例6-8:设时钟频率

23、为6MHz。编写利用T0产生1s定时的程序。 解:(1)定时器T0工作模式的确定模式0最长可定时16.384ms; 模式1最长可定时131.072ms; 模式2最长可定时512s;定时1s,可选用模式1,每隔100ms中断一 次,中断10次为1s。 (2)求计数器初值X (216X)12/(6 106) =10010-3 s X=15536=3CB0H 因此:(TL0)=0B0H (TH0)=3CH (3)实现方法 对于中断10次计数,可使T0工作在计数方式,也可用循环程序的方法实现。本例采用循环程序法。(4)源程序清单 ORG 0000H AJMP MAIN ; 上电,转向主程序 ORG 0

24、00BH ;T0的中断服务程序入口地址 AJMP SERVE ;转向中断服务程序 ORG 2000H ;主程序MAIN : MOV SP,#60H ;设堆栈指针 MOV B,#0AH ;设循环次数 MOV TMOD,#01H ;设置T0工作于模式1 MOV TL0,#0B0H ;装计数值低8位 MOV TH0,#3CH ;装计数值高8位 SETB TR0 ;启动定时 SETB ET0 ;T0开中断 SETB EA ;CPU开中断 SJMP $ ;等待中断SERVE: MOV TL0,#0B0H ;重新赋初值 MOV TH0,#3CH DJNZ B,LOOP ;B-1不为0,继续定时 CLR T

25、R0 ;1s定时到,停止T0工作LOOP: RETI ;中断返回 END6.3.5 综合应用举例(例6-9)例6-9:设计实时时钟程序。时钟 就是以秒、分、时为单位进行计时。用定时器与中断的联合应用。解:(1)实现时钟计时的基本方法 计算计数初值。 时钟计时的最小单位是秒,但使用单片机定时器/计数器进行定时,即使按方式1工作,其最大定时时间也只能达131ms。因此,可把定时器的定时时间定为100ms,计数溢出10次即得到时钟计时的最小单位秒;而10次计数可用软件方法实现。假定使用定时器T0,以工作模式1进行100ms的定时。如fosc=6MHz,则计数初值X为: (216X)12/(6 106

26、 )=10010-3 s X=15536=3CB0H因此 : (TL0)=0B0H (TH0)=3CH 采用定时方式进行溢出次数的累计,计满10次即得到秒计时。 从秒到分和从分到时的计时是通过累计和数值比较实现的。 时钟显示即及显示缓冲区部分在这里略,可自行设计。(2)程序流程及程序清单 主程序(MAIN)的主要功能 是进行定时器T1的初始化编程并启动T1,然后通过反复调用显示子程序,等待100ms定时中断的到来。其流程如 图6-13所示。 中断服务程序(PITO)的主要功能 是进行计时操作。程序开始先判断计数溢出时候满了10次,不满表明还没达到最小计时单位秒,中断返回;如满10次则表示已达到

27、最小计时单位秒,程序继续向下运行,进行计时操作。 要求满1秒则“秒位”32H单元内容加1,满60s则“分位”31H单元内容加1,满60min则“时位”30H单元内容加1,满24h则30H,31H,332H单元内容全部清0。中断服务程序流程如 图6-14所示。 源程序如下: ORG 0000H AJMP MAIN ; 上电,转向主程序 ORG 001BH ;T1的中断服务程序入口地址 AJMP SERVE ;转向中断服务程序 ORG 2000H ;主程序MAIN: MOV SP,#60H ;设堆栈指针 MOV TMOD,#10H ;设置T1工作于模式1 MOV 20H,#0AH ;设循环次数 C

28、LR A MOV 30H,A ;时单元清0 MOV 31H,A ;分单元清0 MOV 32H,A ;秒单元清0 SETB ET1 ;T1开中断 SETB EA ;CPU开中断 MOV TL1,#0B0H ;装计数值低8位 MOV TH1,#3CH ;装计数值高8位 SETB TR1 ;启动定时 SJMP $ ;等待中断(可反复调用显示子程序)SERVE: PUSH PSW ;保护现场 PUSH ACC MOV TL1,#0B0H ;重新赋初值 MOV TH1,#3CH DJNZ 20H,RETUNT ;1s未到,返回 MOV 20H,#0AH ;重置中断次数 MOV A,#01H ADD A,

29、32H ;“秒位”加1 DA A ;转换为BCD码 MOV 32H,A CJNE A,#60H,RETUNT ;未满60s,返回 MOV 32H,#00H ;计满60s,“秒位”清0 MOV A,#01H ADD A,31H ;“分位”加1 DA A ;转换为BCD码 MOV 31H,A CJNE A,#60H,RETUNT ;未满60min,返回 MOV 31H,#00H ;计满60min,“分位”清0 MOV A,#01H ADD A,30H ;“时位”加1 DA A ;转换为BCD码 MOV 30H,A CJNE A,#24H,RETUNT ;未满24h,返回 MOV 30H,#00H ;计满24h,“时位”清0RETUNT: POP ACC ;恢复现场 POP PSW RETI ;中断返回 END

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

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