单片机的定时器计数器.ppt
31页单片机的定时器/计数器 主讲 朱兆优,本章学习要点: (1) 定时器/计数器内部结构、工作原理; (2) 定时器/计数器的控制寄存器设置和工作方式选择; (3) 定时器/计数器初值计算、初始化和中断的应用单片机有2个可编程的定时器/计数器T1、T0 2种工作模式: (1)计数器工作模式 (2)定时器工作模式 4种工作方式 (方式0-方式3),6.1 定时器/计数器的结构 TMOD:选择定时器/计数器T0、T1的工作模式和工作方式 TCON:控制T0、T1的启动和停止计数,同时包含了T0、T1的状态6.1.1 工作方式控制寄存器TMOD 8位分为两组,高4位控制T1,低4位控制T0 (1)GATE——门控位 0:以TR0/TR1来启动定时器/计数器运行 1:用外中断引脚(INT0*或INT1*)上的高电平和TRX来启动定时器/计数器运行2)M1、M0——工作方式选择位 M1 M0 工 作 方 式 0 0 方式0,13位定时器/计数器 0 1 方式1,16位定时器/计数器 1 0 方式2,8位常数自动重新装载 1 1 方式3,仅适用于T0,T0分成两个8 位计数器,T1停止计数。
(3) C/T*——计数器模式和定时器模式选择位 0:定时器模式 1:计数器模式6.1.2 定时器/计数器控制寄存器TCON 低4位与外部中断有关,已介绍高4位的功能如下: (1) TF1、TF0——计数溢出标志位 (2) TR1、TR0——计数运行控制位 1:启动定时器/计数器工作 0:停止定时器/计数器工作,6.2 定时器/计数器的4种工作方式 6.2.1 方式0 (M1-M0为00)定时器/计数器的框图:,GATE位:一般GATE=0,定时器/计数器的运行由TR0/TR1决定 做外部信号脉宽测量时,GATE=1,置TR1=1, 则定时器/计数器运行由INT1决定,控制端=1,启动计数 控制端=0,停止计数,方式0为13位的计数器 ,C/T* 位决定工作模式: 0:开关打在上面,为定时器工作模式; 1:开关打在下面,为计数器工作模式,计数脉冲为P3.4、P3.5引脚上的外部输入脉冲,当引脚上发生负跳变时,计数器加16.2.2 方式1 M1-M0=01,16位的计数器6.2.3 方式2 计数满后自动装入计数初值 M1、M0=10 ,等效框图如下: TL1作为计数器,TH1作常数备份。
当TL1计数溢出时,自动将TH1中的值送至TLX,使TLX从初值开始重新计数6.2.4 方式3 增加一个附加的8位定时器/计数器,从而具有3个定时器/计数器 只适用于定时器/计数器T0T1不能工作在方式3, T1方式3时相当于TR1=0,停止计数(此时T1可用来作串行口波特率产生器)1.工作方式3下的T0 T0分为2个独立的8位计数器:TL0和TH0 TL0使用T0的状态控制位C/T*、GATE、TR0,TH0被固定为一个8位定时器(不能作外部计数模式),并使用T1的控制位TR1和TF1,同时占用T1的中断请求源TF1 各引脚与T0的逻辑关系如图所示:,,2.T0工作在方式3下T1的各种工作方式 当T1用作串行口的波特率发生器时, T0才工作在方式3 T0处于方式3时, T1可定为方式0、方式1和方式2,用来作为串行口的波特率发生器,或不需要中断的场合6.3 定时器/计数编程 6.3.1 定时器/计数器的初始化 1.初始化的步骤 (1) 确定工作方式(即对TMOD赋值) (2) 预置定时器/计数器的初值, (3) 定时器/计数器的中断 设置 (4) 启动定时器/计数器2.定时器/计数器初值的计算 计数器模式下:初值=最大计数值-计数值 定时器模式下:初值=最大计数值-定时时间/Tcy 方式0:最大计数值= 213 = 8192,最长定时8192Tcy。
方式1:最大计数值= 216 = 65536,最长定时 65536Tcy 方式2:最大计数值256,最长定时 256Tcy 方式3:定时器0分成两个8位计数器,其最大计数值均为256,最长定时时间均为256×Tcy6.3.2 定时器/计数器的编程示例 例6-1 假设系统晶振频率fosc=6 MHz,使用定时器/计数器1作定时,在P1.1上输出周期为1 ms方波 采用工作方式0 计算初值: 机器周期Tcy = 12/fosc = 12/(6×10 6) Hz = 2 ms 初值=最大计数值-定时时间/Tcy=213-500/2 =7942 D =1 1111 0000 0110B 所以(TH1)=11111000B=F8H, (TL1)=00000110B=06H参考程序如下: ORG 2000H MOV TMOD,#00H MOV TL1,#06H ;定时器/计数器1赋初值 MOV TH1,#0F8H SETB TR1 ;启动定时器/计数器1 LP1: JBC TF1,LP2 ;查询定时时间到否? AJMP LP1 ;定时时间未到,继续查询 LP2: MOV TL1,#06H ;定时时间到,重新赋初值 MOV TH1,#0F8H CPL P1.1 ;P1.1的状态取反 AJMP LP1 ;循环,(2) 采用工作方式1 TMOD可设置为10H。
计算初值: 机器周期Tcy = 12/fosc = 12/(6×10 6) Hz =2 ms 初值=最大计数值-定时时间/Tcy = 216-500/2 = 65286D = FF06H (TH1)= FFH,(TL1) = 06H,参考程序如下: ORG 0000H AJMP MAIN ORG 001BH ;定时器/计数器1中断入口 IT0P: MOV TL1,#06H ;重新赋初值 MOV TH1,#0FFH CPL P1.1 ;P1.1的状态取反 RETI ORG 0100H MAIN: MOV TMOD,#10H ;定时器/计数器1工作方式1 MOV TL1,#06H ;定时器/计数器1赋初值 MOV TH1,#0FFH SETB TR1 ;启动定时器/计数器1 MOV IE,#88H ;允许定时器/计数器1中断 SJMP $ ;等中断,6.4 定时器/计数器的应用实例 6.4.1 门控位GATE的应用 利用门控位GATE可对(x为0或1)引脚上正脉冲的宽度进行测量 例6-2 利用定时器/计数器测量,波形的正脉冲宽度如图6-7所示参考程序如下: ORG 0100H MAIN: MOV TMOD,#90H ;设置T1为门控方式1 MOV TL0,#00H MOV TH0,#00H JB P3.3,$ ;等待P3.3=0 SETB TR1 ;启动T1 JNB P3.3,$ ;等待P3.3=1 JB P3.3,$ ;等待P3.3=0 CLR TR1 ;停止T1计数 MOV 30H,TL1 ;保存T1的计数值 MOV 31H,TH1,6.4.2 实时时钟的设计 1.实时时钟实现的基本思想 如何获得1秒的定时,可把定时时间定为100ms,采用中断方式进行溢出次数的累计,计满10次,即得到秒计时。
片内RAM中规定3个单元作为秒、分、时单元,具体安排如下: 42H:“秒”单元 ;41H:“分”单元;40H:“时”单元 从秒到分,从分到时是通过软件累加并进行比较的方法来实现的2.程序设计 (1)主程序的设计 流程如图所示2)中断服务程序的设计 中断服务程序的主要功能是实现秒、分、时的计时处理参考程序略6.4.3 运行中读定时器/计数器 在读取运行中的定时器/计数器时,需注意:若恰好出现TLX溢出向THX进位的情况,则读得的(TLX)值就完全不对同样,先读(THX)再读(TLX)也可能出错 方法:先读(THX),后读(TLX),再读(THX)若两次读得(THX)相同,则读的内容正确若前后两次读的(THX)有变化,则再重复上述过程,这次重复读得的内容就应是正确的下面是有关的程序,读得的(TH0)和(TL0)放置在R1和R0内RDTIME:MOV A,TH0 ;读(TH0) MOV R0,TL0 ;读(TL0) CJNE A,TH0,RDTIME;比较2次读得的(TH0) ;不相等则重复读 MOV R1,A ;(TH0)送入R1中 RET,6.4.4 用定时器/计数器作外部中断 定时器/计数器工作在计数器模式时,T0(或T1)引脚上发生负跳变,定时器/计数器0(或1)加1,当定时器/计数器0(或1)出现计数溢出时,溢出中断标志TF0(或TF1)置1,向CPU申请中断。

卡西欧5800p使用说明书资料.ppt
锂金属电池界面稳定化-全面剖析.docx
SG3525斩控式单相交流调压电路设计要点.doc
话剧《枕头人》剧本.docx
重视家风建设全面从严治党治家应成为领导干部必修课PPT模板.pptx
黄渤海区拖网渔具综合调查分析.docx
2024年一级造价工程师考试《建设工程技术与计量(交通运输工程)-公路篇》真题及答案.docx
【课件】Unit+3+Reading+and+Thinking公开课课件人教版(2019)必修第一册.pptx
嵌入式软件开发流程566841551.doc
生命密码PPT课件.ppt
爱与责任-师德之魂.ppt
制冷空调装置自动控制技术讲义.ppt


