《单片机原理及应用设计》-胡辉-电子教案 单片机系统6

上传人:E**** 文档编号:89402369 上传时间:2019-05-24 格式:PPT 页数:46 大小:446.50KB
返回 下载 相关 举报
《单片机原理及应用设计》-胡辉-电子教案 单片机系统6_第1页
第1页 / 共46页
《单片机原理及应用设计》-胡辉-电子教案 单片机系统6_第2页
第2页 / 共46页
《单片机原理及应用设计》-胡辉-电子教案 单片机系统6_第3页
第3页 / 共46页
《单片机原理及应用设计》-胡辉-电子教案 单片机系统6_第4页
第4页 / 共46页
《单片机原理及应用设计》-胡辉-电子教案 单片机系统6_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《《单片机原理及应用设计》-胡辉-电子教案 单片机系统6》由会员分享,可在线阅读,更多相关《《单片机原理及应用设计》-胡辉-电子教案 单片机系统6(46页珍藏版)》请在金锄头文库上搜索。

1、第6章 单片机的定时器/ 计数器,北华航天工业学院 电子工程系,Prof. 胡辉 Tel:2083013,Email: ,本章学习目标,定时器/计数器的结构及原理 定时器/计数器的各种工作方式 掌握定时器计数器的应用,6.1 单片机的定时器/计数器的工作原理,定时/实现方式: 1.软件定时; 2.不可编程硬件定时; 3.可编程定时 。,在TMOD中,各有一个控制位(CT),分别用于控制定时/计数器T0和T1是工作在定时器方式还是计数器方式。,1. 定时功能-计数输入信号是内部时钟脉冲,每个机器周期使寄存器的值加1。所以,计数频率是振荡频率的1/12。,2. 计数功能-计数脉冲来自相应的外部输入

2、引脚,T0为P3.4,T1为P3.5。,定时/计数器的核心部件是二进制加1计数器(TH0、TL0或TH1、TL1) 。,定时/计数器的功能,6.1.1 定时/计数器的结构,T1控制,T0控制,GATE门控位,M1 M0工作方式选择,6.1.2 定时/计数器的方式寄存器和控制寄存器 1模式控制寄存器TMOD TMOD用于控制T0、T1的工作方式和4种工作模式。其中低4位用于控制T0,高4位用于控制T1。其格式如下:,GATE位:门控位。 当GATE=1时,只有或引脚为高电平且TR0或TR1置1时,相应的定时/计数器才被选通工作,这时可用于测量在端出现的正脉冲宽度;当GATE=0,则只要TR0和T

3、R1置1,定时/计数器就被选通,而不管或的电平是高还是低。 位:计数/定时功能选择位。 =0,设置定时/计数器为定时器方式,计数器的输入是内部时钟脉冲,其周期等于机器周期。 =1,设置定时/计数器为计数器方式,计数器的输入来自T0(P3.4)或T1(P3.5)端的外部脉冲。 M1、M0位:工作方式选择位。,定时/计数器工作方式,2控制寄存器TCON,中断请求标志,触发方式选择,启动定时/计数器,0 低电平1 下降沿,0 停止 1 启动,TF1位:定时器1溢出标志位。 当定时/计数器1溢出时,由硬件置1。使用查询方式时,此位做状态位供查询,查询有效后需由软件清零;使用中断方式时,此位做中断申请标

4、志位,进入中断服务后被硬件自动清零。 TR1位:定时器1运行位。 该位靠软件置位或清零,置位时,定时/计数器接通工作,清零时,停止工作。 TF0位:定时器0溢出标志位,其功能和操作情况同TF1。 TR0位:定时器0运行控制位,其功能和操作类同于TR1。,计数脉冲输入,6.1.3 定时器计数器的工作方式,定时器计数器共有四种工作方式,1. 方式013位方式,13位计数器,定时器,计数器,当 =0时,控制开关接通内部振荡器,T0对机器周期进行计数,其定时时间为: t=(213-T0初值)机器周期 当 =1时,控制开关接通外部输入信号,当外部信号电平从“1”到“0”跳变时,加1计数器加1,处于计数工

5、作方式。,2. 方式116位方式 其定时时间为: t=(216-T0初值)机器周期,3. 方式28位自动装入时间常数方式 其定时时间为: t=(28-T0初值)机器周期,4. 方式32个8位方式,仅T0可以工作在方式3此时T0分成2个独立的计数器TL0和TH0 ,前者用原来T0的控制信号(TR0、TF0),后者用原来T1的控制信号(TR1、TF1)。,6.2 单片机定时器/计数器的应用,计算计数器的计数初值: 编程时将计数初值送THi、 TLi;,可编程器件在使用前需要进行初始化:,确定TMOD控制字:编程时将控制字送TMOD;,6.2 单片机定时器/计数器的应用,计算计数器的计数初值: 编程

6、时将计数初值送THi、 TLi;,可编程器件在使用前需要进行初始化:,确定TMOD控制字:编程时将控制字送TMOD;,例题1:设晶振频率fOSC=6MHz,使用定时器1以方式1产生周期为500s的方波脉冲,并由P1.0 输出。试以中断方式实现。, 开中断(如果使用中断方式): 编程实置位EA、ETi, TRi位置位控制定时器的启动和停止。, TMOD确定,T1控制,T0控制,控制字10H,要产生500s 的方波脉冲,只需在P1.0端以250s为间隔,交替输出高低电平即可实现。为此,定时间应为250s 。使用6z晶振,则一个机器周期为2s,设待求计数初值为,则:, 计算计数器的计数初值;,(21

7、6X)210 -6 =25010 -6 即216X=125 X216-125=10000H-7DH 0FF83H 所以,初值为: TH1=0FFH,TL1=83H, 采用中断方式:编程时打开全局和局部中断。, 由定时器控制寄存器TCON中的TR1位控制定时器的启动和停止。 TR11,启动; TR10,停止。,程序设计,ORG 0000H LJMP MAIN ;主程序入口 ORG 001BH LJMP INTT1 ;T1中断入口,INTT1: MOV TH1,#0FFH ;重新设置初值 MOV TL1,#83H CPL P1.0 ;输出取反 RETI,ORG 1000H MAIN:MOV TMO

8、D, #10H ;T1为方式1 MOV TH1, #0FFH MOV TL1,#83H ;初值 SETB EA ;允许中断 SETB ET1 SETB TR1 ;启动定时 SJMP $ ;等待中断,主程序:,中断处理程序:,例题2:设晶振频率fOSC=6MHz,分别讨论各种工作方式下最长定时时间。,解: 1.由fOSC=6MHz可知,MC=2us; 2.由于是加1计数,所以最长定时应是计数初值最小时(即为0时)的定时时间。 所以此时有: 方式0: (2130)2us= 214us=16384us=16.384ms,方式1: (2160)2us= 217us=131.072ms,方式2、3 (2

9、80)2us= 29us=0.512ms,注意:以上是当fOSC=6MHz,即MC=2us时各种方式下的定时时间,若fOSC=12MHz,则最长定时时间将缩短一半。,五、定时计数器用作外部中断扩展 在计数方式下,如果把计数器预置为全1,则只要在计数输入端(T0或T1输入端)加一脉冲就可以使计数器溢出,产生溢出中断。这就是定时计数器实现外部中断扩展的思想。具体方法是: 置定时计数器为工作方式,即自动加载式位计数,以便在一次中断响应后,自动为下一次中断作准备; TH和TL均置为FFH; 扩展的外部中断请求信号接计数脉冲输入端(T0或T1); 把扩展的外中断服务程序存放在所占用的定时计数器中断入口地

10、址处(000BH或001BH)。,例:以T0 实现一个外部中断扩展。 则初始化程序为: MOV TMOD,#06H ;00000110 MOV TH0,#0FFH MOV TL0,#0FFH SETB EA ;开全局中断 SETB ET0 ;开T0中断 SETB TR0 ;准备计数 将中断子程序放在T0中断入口处(000BH)。,T0计数器方式,T0方式2,课堂练习,P95 题6、11、13,题6略,题11 思路: 1.1000Hz方波,即周期是1ms, 定时时间为500us, P1.1交替输出0、1 电平,即可得到该方波。 2.由定时时间知,用哪种方式都可实现500us 定时。可用方式2(自

11、动装入时间常数), 比较简单。,第五章上机实验(1),1.分别用2种定时方式使P1口输出信号,轮流点亮8个LED,每个LED点亮时间为50ms。 方式1:利用调用延时子程序方式; 方式2:利用定时器定时50ms,设晶振频率为12MHz;参考习题13。 2.每个LED点亮时间为2s。 参考P9596 接口实训(一)一.定时器/计数器应用实训。,T1控制,T0控制,控制字02H,3.题目中没有指明用T0还是T1,可任意,我 们用T0。,确定TMOD控制字, 计算计数器的计数初值;,(28X)210 -6 =50010 -6 即28X=250 X28-250=100H-FAH 06H 所以,初值为:

12、 TH0=06H,TL0=06H, 采用中断方式: 编程时打开全局中断:置位EA 局部中断:置位ET0。, 置位TR0位控制定时器的启动。,程序设计,ORG 0000H LJMP MAIN ;主程序入口 ORG 000BH LJMP INTT0 ;T0中断入口,INTT0: CPL P1.1 ;输出取反 RETI,ORG 1000H MAIN:MOV TMOD, #02H ;T0为方式2 MOV TH0, #06H MOV TL0,#06H ;初值 SETB EA ;允许中断 SETB ET0 SETB TR0 ;启动定时 SJMP $ ;等待中断,主程序:,中断处理程序:,8051,P1.0

13、,P1.7,R,LED7,. . . . .,R,LED0,. . . . .,题13 思路: 1.通过P1.0P1.7分别送“1”给8个灯;,2.每次持续时间20分之一秒,即50ms,,由定时器T0来定时,又知fOSC=6MHz,由例题2可知可用方式1。,T1控制,T0控制,控制字01H,确定TMOD控制字, 计算计数器的计数初值;,(216X)210 -6 =5010 -3 即216X=25000 X216-25000=10000H-61A8H 9E58H 所以,初值为: TH1=9EH,TL1=58H, 采用中断方式: 编程时打开全局中断:置位EA 局部中断:置位ET0。, 置位TR0位

14、控制定时器的启动。,程序设计,ORG 0000H LJMP MAIN ;主程序入口 ORG 000BH LJMP INTT0 ;T0中断入口,ORG 1000H MAIN:MOV TMOD, #01H ;T0为方式1 MOV TH0, #9EH MOV TL0,#58H ;初值 SETB EA ;允许中断 SETB ET0 SETB TR0 ;启动定时 MOV A,#01H ; LED0先亮 MOV P1,A ; SJMP $ ;等待中断,主程序:,中断处理程序:,INTT0: MOV TH0,#9EH ;重新设置初值 MOV TL0,#58H RL A ;依次点亮 RETI,P1.0,P1.

15、7,R,LED3,R,LED0,R,LED1,R,LED2,R,LED4,R,LED5,R,LED6,R,LED7,P1.6,P1.5,P1.4,P1.3,P1.2,P1.1,8051,上机实验1: 方法1.调用50ms延时子程序。设晶振频率为12MHz,则机器周期为1us。下面为延时子程序清单:,DEL: MOV R7,#200 ;1MC DEL1:MOV R6,#123 ;1MC NOP ;1MC DJNZ R6,$ ;2MC DJNZ R7,DEL1 ;2MC RET ;2MC,延时时间:t=1+200(1+1+2*123+2)+2 50000us=50ms,程序清单:,ORG 1000H MOV A,#01H LOOP:MOV P1,A LCALL DEL RL A SJMP LOOP,ORG 1100H DEL: MOV R7,#200 DEL1:MOV R6,#123 NOP DJNZ R6,$ DJNZ R7,DEL1 RET,主程序,子程序,上机实验2

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

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号