单片机第六章

上传人:n**** 文档编号:93086289 上传时间:2019-07-16 格式:PPT 页数:55 大小:993.50KB
返回 下载 相关 举报
单片机第六章_第1页
第1页 / 共55页
单片机第六章_第2页
第2页 / 共55页
单片机第六章_第3页
第3页 / 共55页
单片机第六章_第4页
第4页 / 共55页
单片机第六章_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《单片机第六章》由会员分享,可在线阅读,更多相关《单片机第六章(55页珍藏版)》请在金锄头文库上搜索。

1、6.1 定时/计数器概述,定时器可以实现的功能:, 定时操作:产生定时中断,实现定时采样输入信号, 定时扫描键盘、显示器等定时操作。,测量外部输入信号:对输入信号累加统计或测量输入 信号的周期参数。,定时输出:定时触发输出引脚的电平,使输出脉冲的 宽度、占空比、周期达到预定值。,在单片机的内部结构中,有两个16位可编程的定时/计数器,各有2种工作模式: (1)计数器工作模式 对外来脉冲(外部事件)进行计数,外部脉冲由T0(P3.4)和T1(P3.5)的两个输入引脚输入到单片机内部。每输入一个脉冲,计数器加1 (2)定时器工作模式 也是通过计数来实现的,计数脉冲来自单片机的工作时钟。,6.2 定

2、时/计数器的结构和工作原理,一、逻辑框图,二、工作原理,1、 加1计数器 2、定时/计数器的工作状态 3、定时/计数器的计数速率 4、计数器的容量 5、溢出,6.3 定时/计数器的控制,定时器控制寄存器(可以按位操作),TCON 88H,TF0、TF1 分别是定时、计数器T0、T1的溢出标志位。,TR0 定时 / 计数器0运行控制位。=0 停止,=1 开始工作,软件置位,软件复位。,TR1 定时 / 计数器1运行控制位。(用法与TR0类似), 工作方式控制寄存器 (不可以按位操作),TMOD 89H,GATE : 门控位. GATE = 0 启动不受 /INT0或 /INT1的控制;GATE

3、= 1 启动受 /INT0 或 /INT1 的控制。,C/T : 外部计数器 / 定时器方式选择位C/T = 0 定时方式;C /T = 1 计数 方式,M1M0:工作模式选择位(编程可决定四种工作模式)。,0 0 13位定时/计数器 方式0 0 1 16位定时/计数器 方式1 0 8 位自动重装定时/计数器 方式2 1 1 TL0 8位定时/计数器 方式3 TH0 8位定时器 T1 停止计数,6.4 定时器/计数器的4种工作方式 6.4.1 方式0 M1、M0为00 ,定时器/计数器的框图:,6.4.2 方式1 M1、M0=01,16位的计数器。 6.4.3 方式2 计数满后自动装入计数初值

4、。 M1、M0=10 ,等效框图如下:,TLX作为常数缓冲器,当TLX计数溢出时,在置“1”溢出标志TFX的同时,还自动的将THX中的初值送至TLX,使TLX从初值开始重新计数。,6.4.4 方式3 增加一个附加的8位定时器/计数器,从而具有3个定时器/计数 器。,只适用于定时器/计数器T0。T1不能工作在方式3 T1方式3时相当于TR1=0,停止计数(此时T1可用来作串行口波特率产生器)。 1工作方式3下的T0 T0分为两个独立的8位计数器:TL0和TH0 。TL0使用T0的状态控制位C/T*、GATE、TR0、,而TH0被固定为一个8位定时器(不能作外部计数模式),并使用定时器T1的状态控

5、制位TR1和TF1,同时占用定时器T1的中断请求源TF1。 各引脚与T0的逻辑关系如图所示:,2T0工作在方式3下T1的各种工作方式 当T1用作串行口的波特率发生器时, T0才工作在方式3。T0处于方式3时, T1可定为方式0、方式1和方式2,用来作为串行口的波特率发生器,或不需要中断的场合。 (1)T1工作在方式0,(2) T1工作在方式1 (3) T1工作在方式2,6.5 定时器/计数器对输入信号的要求 1、定时器模式 计数脉冲为内部时钟脉冲,即每个机器周期计数器增1,因此 定时/计数器的输入脉冲周期与机器周期一样,为振荡频率的 1/12。 2、计数模式 计数脉冲来自外部输入引脚T0或T1

6、。单片机需要2个机器周 期确认1次负跳变。因此外部计数脉冲的最高频率为系统振荡 器频率的1/24,例如选用12MHz频率的晶体,则可输入 500KHz的外部脉冲。 输入信号的高、低电平至少要保持一个机器周期。 如图6-10所示,图中Tcy为机器周期。,6.6 定时器/计数器的编程和应用 对定时/计数器的编程包括以下几个步骤 1、确定工作方式,对TMOD寄存器进行赋值。 2、计算计数初值,并写入寄存器TH0、TL0或TH1、TL1。 3、根据需要,置位ETx允许中断 4、置位EA允许总中断。,5、置位TRx启动计数。 计数初值的计算: (1)定时模式 假设定时时间为T,机器周期为Tp, 则需要的

7、计数脉冲 个数为T/ Tp,应装入定时/计数器的初值为 X=2n- T/ Tp (n为计数器的位数) (2)计数模式 假设计数值为N,则计数初值为 X=2n-N 4种工作方式中,方式0与方式1基本相同,由于方式0是 为兼容MCS-48而设,初值计算复杂,在实际应用中,一 般不用方式0,而采用方式1。,6.6.1 方式1应用 例1 假设系统时钟频率采用6MHz,要在P1.0上输出频率为50Hz、占空比为50%的方波信号。,方波的周期用T0来确定,让T0每隔10ms计数溢出1次,既T0 每隔10ms产生一次中断,CPU相应中断后,在中断服务程序 中对P1.0取反。,(1)计算初值X 设初值为X,则

8、有: (216-X)210-6=110-2 216-X=5000 X=60536 X化为16进制,即X=EC78H。 所以,T0的初值为: TH0=0ECH TL0=78H (2)初始化程序设计 主要是对寄存器IP、IE、TCON、TMOD的相应位进行正确 设置,将计数初值送入定时器中。 (3)中断服务程序设计 中断服务程序除了完成要求的产生方波这一工作之外,还要注 意将计数初值重新装入定时器中,为下一次产生中断作准备。,参考程序: ORG 0000H RESET: AJMP MAIN ;转主程序 ORG 000BH ;T0的中断入口 AJMP ITOP ;转T0中断处理程序IT0P ORG

9、0100H MAIN: MOV SP,#60H ;设堆栈指针 MOV TMOD,#01H ;设置T0为方式1 MOV TL0,#78H ;T0置初值 MOV TH0,#0ECH SETB TR0 ;启动T0 SETB ET0 ;允许T0中断 SETB EA ;CPU开中断 HERE: AJMP HERE,ITOP: MOV TL0,#78H ;T0中断服务子程序,T0置初值 MOV TH0,#0ECH CPL P1.0 ;P1.0的状态取反 RETI,例2 假设系统时钟频率采用6MHz,要在P1.0上输出频率为50Hz、占空比为25%的方波信号。 一个周期中,高电平时间5ms,低电平时间15m

10、s X1=65536-5000/2=F63CH X2=65536-15000/2=E2B4H ORG 0000H LJMP START ORG 0100H START: MOV SP,#30H MOV TMOD,#01H SETB TR0 LOOP: SETB P1.0 MOV TH0,#0F6H MOV TL0, #3CH,JNB TF0,$ CLR TF0 CLR P1.0 MOV TH0,#0E2H MOV TL0, #0B4H JNB TF0,$ CLR TF0 SJMP LOOP END,例3 假设系统时钟频率采用6MHz,编写程序实现与P1口相连的8个LED灯间隔1s闪烁。,(1)

11、T0工作方式的确定 因定时时间较长,采用哪一种工作方式? 由各种工作方式的特性,可计算出: 方式0最长可定时16.384ms; 方式1最长可定时131.072ms; 方式2最长可定时512s。 选方式1,每隔100ms中断一次,中断10次为1s。 (2)计算计数初值 因为:(216-X)210-6 = 10-1 所以:X=15536=3CB0H 因此:TH0=3CH,TL0=B0H,(4)程序设计 参考程序 : ORG 0000H RESET: LJMP MAIN ;上电,转主程序入口MAIN ORG 000BH ;T0的中断入口 LJMP T0INT ORG 0100H MAIN: MOV

12、SP,#30H ;设堆栈指针 CLR A MOV P1,A MOV R0,#0AH ;设循环次数10次 MOV TMOD,#01H ;设T0工作在方式1 MOV TL0,#0B0H ;给T0设初值 MOV TH0,#3CH,SETB EA SETB ET0 SETB TR0 LOOP: SJMP LOOP T0INT: MOV TL0,#0B0H MOV TH0,#3CH DJNZ R0,NEXT MOV R0,#0AH CPL A MOV P1,A NEXT: RETI END,6.6.2 方式2的应用 例1 利用T1的方式2对外部信号计数,要求每计满100个数, 将P1.0取反。 本例是方

13、式2计数模式的应用。 (1)选择工作方式 外部信号由T1(P3.5) 脚输入,每发生一次负跳变计数器加1,每输入100个脉冲,计数器产生溢出中断,在中断服务程序中将P1.0取反一次。 T1 方式2的控制字为TMOD=60H。不使用T0时,TMOD的低4位可任取,但不能使T0进入方式3,这里取全0。 (2)计算T1的初值 X=28-100=156=9CH 因此,TL1的初值为9CH,重装初值寄存器TH1=9CH,ORG 0000H LJMP MAIN ORG 001BH ;T1中断服务程序入口 CPL P1.0 ;P1.0位取反 RETI ORG 0100H MAIN:MOV TMOD,#60H

14、 ;设T1为方式2计数 MOV TL0,#9CH ;T0置初值 MOV TH0,#9CH SETB ET1 SETB EA SETB TR1 ;启动T1 HERE: AJMP HERE,例2 当T0(P3.4)引脚上发生负跳变时,从P1.0引脚上输出一 个周期为1ms的方波,如图所示。(系统时钟为6MHz),(1)工作方式选择 T0为方式1计数,初值 0FFFFH,即外部计数输入端T0 (P3.4)发生一次负跳变时,T0加1且溢出,溢出标志TF0置 “1”,发中断请求。 T1定义为方式2定时,在进入T0中断程序 后,启动T1每500s产生一次中断,在T1中断服务程序中对 P1.0求反,使P1.

15、0产生周期1ms的方波。 (2)计算T1初值 设T1的初值为X: 则 (28-X)210-6=510-4 X=28-250=6=06H,(3)程序设计 ORG 0000H RESET: LJMP MAIN ;复位入口转主程序 ORG 000BH LJMP IT0P ;转T0中断服务程序 ORG 001BH LJMP IT1P ;转T1中断服务程序 ORG 0100H MAIN: MOV SP,#60H MOV TMOD,#25H ;初始化,T1为方式2定 ;时,T0为方式1计数 MOV TL0,#0FFH ;T0置初值 MOV TH0,#0FFH,SETB TR0 ;启动T0 SETB ET0 ;允许T0中断 MOV TL1,#06H ;T1置初值 MOV TH1,#06H SETB EA HERE: AJMP HERE IT0P: CLR TR0 ;T0中断服务程序,停止T0计数 SETB TR1 ;启动T1 SETB ET1 ;允许T1中断 RETI IT1P: CPL P1.0 ;T1中断服务,P1.0位取反 RETI,例2 利用定时器T0扩展外部中断 要求:将外部中断请求信号连接到P3.4脚上;定时器T0设置为 计数模式;T0工作在方式 2,初值设为FFH。 MOV TMOD,#06H MOV TH0,#0FFH MOV

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

当前位置:首页 > 大杂烩/其它

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