当前位置:
文档之家› 第8章-STC11F定时器计数器
第8章-STC11F定时器计数器
2)确定TMOD内容:T0工作于定时器方式0,M1M0=00H、C/-T=0、GATE=0;定时 器T1不用,取为全0,于是TMOD = 00000000B = 00H。
7.4 定时器/计数器的应用举例
3) 程序设计(查询方式)
ORG 0000H AJMP MIAIN MAIN: ORG 0030H ;主程序 MOV TMOD,#00H MOV TH0,#0E0H ;E018H ;1mS初值 MOV TL0,#18H SETB TR0 ;启动T0 Check_TF0: JBC TF0 Time_overflow ;查询T0溢出标志 SJMP Check_TF0 Time_overflow: CPL P1.0 ;输出方波 ;重装计数初值 MOV TH0,#0E0H MOV TL0,#18H
方式0(13位方式):C =(64H)求补=0000001100100+1=1F9CH 方式1(16位方式):C =(64H)求补=0000000001100100+1=FF9CH
方式2(8位方式) : C =(64H)求补 = 01100100+1 = 9CH 注意:定时器/计数器在工作方式0时的初值装入方法!(低5位,高8位)
如果分频设定T0x12=0, 则12分频, Tcy=12/fosc;
分频设定T0x12=1, 则不分频, Tcy=1/fosc。
7.3 定时器/计数器的工作方式
3.方式2
当M1M0=10 时,方式2为自动重装载的8位定时器/计数器模式。
÷ 12 f0sc
不分频 S3
T0X12
0 1 C/T=0 C/T=1 “1”闭合
7.3 定时器/计数器的工作方式
4. 方式3
当M1M0=11 时,定时器/计数器0 设定为工作方式3。将T0分成为两个独立的8位 计数器TL0和TH0 。方式3 只适用于定时器T0,当定时器T1 处于方式3 时,相当于 TR1=0,T1 将停止工作。
÷ 12 f0sc
不分频 S3
T0X12
0 1 C/T=0 C/T=1
M1 0 0 1 M0 0 1 0 工作方式 0 1 2 方式说明 13位定时/计数器 16位定时/计数器 可自动重装入的8位定时/计数器 T0分为2个8位定时器,T1无此方式
1
1
3
注意 :TMOD 不能位寻址!
7.2 定时器/计数器的控制
2. 定时器/计数器控制寄存器TCON
B7 TF1 B6 TR1 B5 TF0 B4 TR0 B3 IE1 B2 IT1
f0sc
S2 TL0 低 5位 “1”闭合 & TH0 8位 TF0
S1 T0引脚 TR0 1 ≥1
中断 请求
断引脚信号引脚的高电平启动计数,外 GATE 中断引脚信号引脚的低电平停止计数。 INT0 这种方式常用来测量外中断引脚上正脉 冲的宽度。
图7.3 定时器/计数器0工作方 式0的逻辑结构图
●定时模式时,定时值 T=(213-X) Tcy
1ms产生一次中断,在中断服务程序中将输出信号取反即可。
解:1)计算计数初值:要定时1ms,用方式0(13位定时器)就可实现。
由于晶振为12MHz,所以机器周期Tcy为1s。 所以:X=t/ Tcy =1×10
-3
/1×10
-6
=1000=3E8H
计数常数为:C=(3E8H)补= 0001111101000 +1= 1110000011000B=1C18H 初值=1110,0000,XXX1,1000B =E018H
解: C =(0003H)补 =(0000,0000,0000,0011B)补=1111,1111,1111,1101B=FFFDH
0000001100 100B
7.3 定时器/计数器的工作方式
又例: T0运行于定时器状态,时钟振荡周期为12MHz,要求定时 100µs。求不同工 作方式时的定时初值。(设T0x12=0) 解: 因为机器周期Tcy =(T0x12)/ 12MHZ = 1µs 所以要计数的机器周期个数为100,即64H。 ;(T0x12)是分频值1、12
因为,计数器溢出的含义是指加满到计数器的模值2n(n位计数位数),即 X + C = 模=2n 所以, C = 2n–X =2n +(–X)=(X)补 可见,计数初值的大小等于需要计数的个数X求补运算µ s,则计数脉冲个数为X=t/Tcy,(Tcy为
考虑分频系数后的时钟周期),同理可知,定时初值为 (t/Tcy )求补。 例: T0运行于计数器状态,工作于方式1(16位方式),要求外部引脚出现3个脉 冲后,T0计满溢出而申请中断,试求计数初值C。
计数模式时,计数值为N=213-X 初值还可以采用计数个数直接取补法获得 。
● 注:STC15系列改进为16位 重装常数方式
7.3 定时器/计数器的工作方式
2.方式1
当 M1M0=01 时方式, 1为 16位定时器 /计数器模式,由 TL0+TH0,其它控 制逻辑与方式0相同 。 (上图TL0改8位全用)
7.2 定时器/计数器的控制
3. 辅助寄存器AUXR (8EH单元,STC11F增加)
B7 T0x12 B6 T1x12 B5 B4 B3 -B2 B1 B0
UART_MOx6 BRTR
BRTx12 XRAM S1BRS
设置T1分频系数:0--foscd的12分频 1--不分频 设置T0分频系数:0--foscd的12分频 1--不分频
T1引脚 T0引脚
机器周 期脉冲
TH1
TL1
TH0
TL0
内部总线
T0x12
TF1
TR1
TF0
TR0
C/T
C/T
M1
M0
M1
T1方式
T0方式
M0
TCON
TMOD
AUXR
T1x12
GATE
GATE
7.2 定时器/计数器的控制
1 . 工作方式寄存器TMOD (89H) B7 GATE
B6
C/T
B5
M1 控制T1
7.4 定时器/计数器的应用举例
课后作业,准备下节课堂调试要求
在例题7.1基础上,晶振24MHz, 修改程序,调试到LED在0.3~0.6秒之间频率 闪烁。可通过查询方式和中断方式分别实现。
下一节课先讲例题7.2、7.3, 然后调试示例5 和示例6
7.4 定时器/计数器的应用举例
对定时器/计数器初始化编程一般包括以下5个步骤: ◆对TMOD赋值,以确定工作方式; ◆对AUXR赋值,以确定分频系数; ◆计算定时初值,并写入寄存器TH0、TL0或TH1、TL1中。 ◆置位EA、置位ETX,设置IP,允许中断及确定优先级(需要时)。 ◆置位TRX启动定时器/计数器。
7.4 定时器/计数器的应用举例
例7.1
若STC11F单片机的晶振频率为12MHz,要求利用T0方式0,定时分频系数 12 ,P1.0引脚输出周期为2ms的方波(课本用T1方式1,10ms)。
思路:若要产生周期为2ms的方波,只要每1ms将信号的幅值由0变到1或由1变到0即
可,可采用取反指令CPL来实现。为了提高CPU的效率,可采用定时方式0中断,每
◆T0和T1,可由程序选择作为定时器或作为计数器使用,定时时间或计数值也可程
序设定。定时频率是振荡频率的1/12,计数是负跳变时加1。 ◆ 定时器/计数器可用程序选择不同的工作方式,T0具有4种方式,T1具有3种方式。 ◆任一定时器/计数器在定时时间到或计数值到时,可由程序安排产生中断请求信号
或不产生中断请求信号。
RETI
END
;中断返回
7.4 定时器/计数器的应用举例
课堂调试示例工程5_定时器控制P0口输出
7.4 定时器/计数器的应用举例
第7章 STC11F单片机的定时器/计数器
7.1 单片机定时器/计数器结构与原理 7.2 单片机定时器/计数器的控制 7.3 单片机定时器/计数器的工作方式 7.4 单片机定时器/计数器的应用举例 7.5 单片机定时器/计数器的可编程 时钟输出功能
7.1 定时器/计数器的结构与原理
◆ 两个16位加1计数器,THx+TLx成。TMOD工作方式寄存器;TCON控制寄存器, 控制Tx的启、停及设置溢出标志;AUXR辅助寄存器设定内部计数脉冲的分频系数。
7.3 定时器/计数器的工作方式
定时器/计数器T0有4种工作方式,T1没有工作方式3。 1. 方式0
当M1M0=00 时,方式0为13位定时器/计数器模式,由TL0的低5位+TH0的8位组成。
÷ 12 T0X12
S3 不分频 0 1 C/T=0 C/T=1
●门控位GATE具有特殊的作用:
当GATE=0时,此时仅由TR0=1控 制与门的开启,计数开始; 当 GATE=1 时,当 TR0=1 时,外中
SJMP Check_TF0
END
7.4 定时器/计数器的应用举例
4) 程序设计(中断方式)
ORG 0000H AJMP MIAIN ORG 000BH ;T0中断服务程序入口 LJMP Time0_ISR ORG 0030H ;主程序 MAIN: MOV TMOD,#00H MOV TH0,#0E0H ;E018H ;1mS初值 MOV TL0,#18H SETB EA ;开全局中断 SETB ET0 ;允许T0中断 SETB TR0 ;启动T0 SJMP $ ;暂停,等待中断 Time0_ISR :CPL P1.0 ;输出方波 ;重装计数初值 MOV TH0,#0E0H MOV TL0,#18H
÷ 12 f0sc
不分频 S3
T0X12
0 1 C/T=0 C/T=1
S2 TL0 8位 “1”闭合 & TH0 8位 TF0