第6章定时器/计数器 6.1定时器控制、状态寄存器 6.2定时器工作方式 6.3计算时间常数 6.4定时器应用
第6章 定时器/计数器 6.1 定时器控制、状态寄存器 定时器控制、状态寄存器 6.2 定时器工作方式 定时器工作方式 6.3 计算时间常数 6.4 定时器应用
MCS51计数定时器的实质 实质是计数器,脉冲每一次下降沿,计数寄存器数值将加1 计数的脉冲如果来源于单片机内部的晶振由于其周期极为 准确,这时称为定时器。 计数的脉冲如果来源于单片机外部的引脚,由于其周期一般 不准确,这时称为计数器。 脉冲 0++1计数器溢出中断 控制 开关 8031有2个可独立控制的16位定时器计数器:T0、T1
MCS-51 计数/定时器的实质 实质是计数器,脉冲每一次下降沿,计数寄存器数值将加1. 计数的脉冲如果来源于单片机内部的晶振,由于其周期极为 准确,这时称为定时器。 计数的脉冲如果来源于单片机外部的引脚,由于其周期一般 不准确,这时称为计数器。 脉冲 +1计数器 溢出 中断 控制 开关 8031 有2个可独立控制的16位定时器/计数器:T0、T1
6.1定时器控制、状态寄存器 1)TMOD定时器方式寄存器(89H) GATE C/T M1 MO GATE C/T M1 MO TO 1)功能选择位C/: =0,定时功能,计数内部机器周期脉冲; 1,计数功能,计数引脚T0(T1)输入的负脉冲。 2)方式选择位M1、M0: MIM0方式功能描述 00 4种工作方式:0 0 13 位位 3)门控方式选择位GATE 1028位自动重装 计数器启动方式的选择 3|T为两个8位 确定定时器工作方式指令: MOV TMOD,#方式字 例:设T0用方式2非门控定时,T1用方式1门控计数。 MOv TMOD, #0D2H: 1101 0010 B
6.1定时器控制、状态寄存器 1)TM OD定时器方式寄存器(89H) 1)功能选择位C/T: =0,定时功能,计数内部机器周期脉冲; =1,计数功能,计数引脚T0(T1)输入的负脉冲。 2)方式选择位M1、M0: 4种工作方式: 3)门控方式选择位GATE 计数器启动方式的选择 确定定时器工作方式指令: M OV TM OD,#方式字 例:设T0用方式2非门控定时,T1用方式1门控计数。 M OV TM OD,#0D2H ; 1101 0010 B G AT E C / T M 1 M 0 G AT E C/T M1 M0 T1 T0 M1 M0 方式 功能 描 述 0 0 0 13 位 0 1 1 16 位 1 0 2 8 位自动 重 装 1 1 3 T0 为两 个 8 位
定时/计数控制寄存器(TCON tcon 8fh 8eh 8dh 8ch 8bH 8ah 89h 88H (88H) TF1 TRI TFO TROIE1ITIIE0ITO 计数器11计数计数器0T0计数外中断1触发方式外中断0触发方式 溢出标记允许控制溢出标记允许控制 计数器允许计数控制:TR0、TR1=1允许计数;=0禁止计数; 中断标志位:TF1、TF0、E1、|E0 中断源请求信号:=1,有中断请求;=0,无中断请求。 cPU响应中断后,该中断标志自动清零。 外部中断触发方式选择位: T0、T1=1:边沿触发中断请求; 0:低电平触发中断请求
定时/计数控制寄存器 (TCON) TCON 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H (88H) TF1 TF0 IE1 IT1 IE0 IT0 计数器 1 溢出标记 计数器 0 溢出标记 外中断 1 触发方式 外中断 0 触发方式 TR1 TR0 T1 计数 允许控制 T0 计数 允许控制 计数器允许计数控制:TR0、TR1=1允许计数;=0禁止计数; 中断标志位: TF1 、TF0 、IE1 、IE0 中断源请求信号:=1,有中断请求;= 0,无中断请求。 CPU响应中断后,该中断标志自动清零。 外部中断触发方式选择位: IT0 、IT1 =1:边沿触发中断请求; =0:低电平触发中断请求
62定时器工作方式 由方式选择位M1、M0设定 1方式0 13位定时/计数器。THX8位和Tx低5位组成13位加1计数器, 此种方式与MCS-48系列兼容,如果不是为了兼容的目的,一般不 用方式0 方式0的全部功能,方式1都可以代替。 振荡器 12 C=0 0~40~7 THOTLO TFO 中断 0脚 C/T=1 控制=0omf TRO =l on GAtE
6.2 定时器工作方式 由方式选择位M1、M0设定 1.方式0 13位定时/计数器。 THx 8位和TLx低5位组成13位加1计数器, 此种方式与MCS-48系列兼容,如果不是为了兼容的目的,一般不 用方式0. 方式0的全部功能,方式1都可以代替。 控制 =0 off & =1 on ≥ 振荡器 ÷12 TH0 TL0 TF0 中断 GATE INT0 TR0 T0 脚 C/T=0 C/T=1 0~4 0~7
2.方式1 16位定时/计数器。THX8位和们X8位组成16位加1计数器 最大计数脉冲个数:1~6556(216 最长定时时间(晶振12MHzT=1us):Tx65536=65.54ms 振荡器÷12 C/T=0 0~70~7 THO TLO TFO 中断 T0脚 C/T=1 控制=0omf TRO =l on GAtE 启动计数方式: 非门控方式:当GATE=0, 门控方式:当GATE=1、TRx=1 控制权由INTx决定 控制权由TRx决定 TRx=1计数开始 INTx=1计数开始 TRx=0计数停止 INTX=0计数停止
2. 方式1 16位定时/计数器。 THx8位和TLx8位组成16位加1计数器 最大计数脉冲个数:1~65536(216) 最长定时时间(晶振12MHz T=1µs): T x 65536 = 65.54ms 非门控方式:当GATE=0, 控制权由 TRx 决定 TRx=1 计数开始 TRx =0 计数停止 门控方式:当GATE=1、TRx=1 控制权由 INTx 决定 INTx=1 计数开始 INTx =0 计数停止 启动计数方式: & ≥ 振荡器 ÷12 TH0 TL0 TF0 中断 GATE INT0 TR0 T0 脚 C/T=0 C/T=1 0~7 0~7 控制 =0 off =1 on
3.方式2 用于需要重复定时和计数的场合。 最大计数值:256(28) 最大定时时间(晶振12MHz时T=1μs):256us 自动恢复初值8位定时/计数器。TLx为8位加1计数器, THx为8位初值暂存器。 振荡器÷12 C/T=0 0~7 TLO TFO 中断 T0脚 C/T=1 控制 TRO TH0重新装入 GATE
3. 方式2 用于需要重复定时和计数的场合。 最大计数值:256 (28) 最大定时时间(晶振12MHz时 T=1µs): 256µs 自动恢复初值8位定时/计数器。TLx为8位加1计数器, THx为8位初值暂存器。 控制 & ≥ 振荡器 ÷12 TL0 TH0 TF0 中断 GATE INT0 TR0 T0 脚 C/T=0 C/T=1 0~7 重新装入
4方式3 T0分成2个8位定时器:们L0定时/计数器和TH定时器 TL0占用T0控制位:C/T,TR0,GATE; TH0占用T1控制位:TR1 T1不能使用方式3工作 振荡器小÷12 C/T=0 0~7 TLO TFO 中断 T0脚 C/T=1 控制 TRO GATE INTO 0~7 1/12 fosc THO TFI 中断 控制
4.方式3 T0分成2个8位定时器:TL0定时/计数器和TH0定时器 TL0占用T0控制位:C/T,TR0,GATE; TH0占用T1控制位:TR1. T1不能使用方式3工作. 控制 & ≥ 振荡器 ÷12 TL0 TF0 中断 GATE INT0 TR0 T0 脚 C/T=0 C/T=1 0~7 TH0 TF1 中断 0~7 TR1 控制 1/12 fosc
6.3计算时间常数X(计算初值) 计数功能:X=2n-计数值n:8/13/16 定时功能:X=2n-t/T t:定时时间(s) T:机器周期=12/晶振频率 如:晶振为12MHz时, T=12/12Mz=12÷(12×106)(秒)=1us 44MCS-51定时器的应用 定时器初始化编程:使用定时器工作之前,先写入控制寄存 器,确定好定时器工作方式 初始化编程格式: MOV TMOD,#方式字;选择方式 MoⅤTHx,#H ;装入Tx时间常数 MOV TLX, #XL SETB EA ;开Tx中断 SETB ETX ;允许Tx定时器中断 SETB TRX ;启动Tx定时器
6.3 计算时间常数X(计算初值) 计数功能:X= 2n -计数值 n:8/13/16 定时功能:X= 2n - t/T t:定时时间(s) T:机器周期 =12/晶振频率 如:晶振为12MHz时, T=12/12 MHz=12÷(12×10-6)(秒)=1us 4.4 MCS-51定时器的应用 定时器初始化编程:使用定 时器工作之前,先写入控制寄存 器,确定好定时器工作方式 初始化编程格式: MOV TMOD,# 方式字 ;选择方式 MOV THx,#X H ;装入Tx时间常数 MOV TLx,#X L SETB EA ;开Tx中断 SETB ETx ;允许Tx定时器中断 SETB TRx ;启动Tx定时器
例:由P1.0输出方波信号,周期为2ms,设 f=12MHz。 2ms 解:每隔1m改变一次P1.0的输出状态,即形成方波,用T0非门控方式1定时。 计算初值: X=216-t/T=216-(1/1000)/106=65536-1000=64536=FC18H ORG 0000H AMP MAIN ORG 000BH ;T0中断硬件入口地址 MOV TL0,#18H;中断服务程序;置初值 MOV THO, #OFCH CPL P1.0 ;取反,产生方波 RETI ;中断返回 ORG 0030H MAIN: MOV TMOD,#1H;中断方式 MOV TL0,#18H;计数初值 MOV THO, #OFCH SETB EA 开放总中断 SETB ETO ;开放T0中断 SETB TRO ;启动定时器 HERE: SJMP HERE;等待中断,相当于执行其它任务
例:由P1.0输出方波信号,周期为2ms,设 fosc=12MHz。 2ms 解:每隔1ms改变一次P1.0的输出状态,即形成方波,用T0非门控方式1定时。 计算初值: X=216 - t/T=216 –(1/1000)/10-6 =65536-1000 = 64536 = FC18H ORG 0000H AJMP MAIN ORG 000BH ;T0中断硬件入口地址 MOV TL0,#18H ; 中断服务程序;置初值 MOV TH0,#0FCH CPL P1.0 ;取反,产生方波 RETI ;中断返回 ORG 0030H MAIN: MOV TMOD,#01H ;中断方式 MOV TL0,#18H ;计数初值 MOV TH0,#0FCH SETB EA ;开放总中断 SETB ET0 ;开放T0中断 SETB TR0 ;启动定时器 HERE: SJMP HERE ;等待中断,相当于执行其它任务