第8章-STC11F定时器计数器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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
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启动定时器/计数器。
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
B4
M0
B3
GATE
B2
C/T 控制T0
B1 M1
B0
M0
● GATE:门控位。GATE=0时,TRx置1,启动工作; GATA=1时,TRx置1,同时外部中断-INTx高电平时,启动工作。 ● C/-T:定时/计数模式选择位。C/-T=0定时;C/-T=1计数。 ● M1M0:工作方式设置位。具体定义方式如下表:
f0sc
S2 TL0 低 5位 “1”闭合 & TH0 8位 TF0
S1 T0引脚 TR0 1 ≥1
中断 请求
断引脚信号引脚的高电平启动计数,外 GATE 中断引脚信号引脚的低电平停止计数。 INT0 这种方式常用来测量外中断引脚上正脉 冲的宽度。
图7.3 定时器/计数器0工作方 式0的逻辑结构图
●定时模式时,定时值 T=(213-X) Tcy
◆T0和T1,可由程序选择作为定时器或作为计数器使用,定时时间或计数值也可程
序设定。定时频率是振荡频率的1/12,计数是负跳变时加1。 ◆ 定时器/计数器可用程序选择不同的工作方式,T0具有4种方式,T1具有3种方式。 ◆任一定时器/计数器在定时时间到或计数值到时,可由程序安排产生中断请求信号
或不产生中断请求信号。
(88H)
B1 IE0 B0 IT0
中断请求标志 (已讲)
启动定时/计数器 0 停止,1 启动
触发方式(已讲) 0 低电平,1下降沿
TRx:Tx运行控制位。TRx=1,Tx开始工作; TRx=0,Tx停止工作。 TRx由软件置1或清0。 TFx:溢出中断请求标志位。T0、T1计数溢出时,由硬件自动置位 TFx=1。在中断允 许下,发出中断请求信号;在中断禁止下,可查询TFx状态;响应中断后硬件 自动清0。 TFx也可有软件置位或清0,实现软中断。
TH0借用了T1的控制位TR1、TF1,此 时 TH0 只能作为非门控方式的定时器使用。
S2 TH0 8位 TF1 中断 请求
T0X12
0 1
T1只能作为串口波特率发生器使用。
TR1
图7.7 定时器/计数器0工作方式3的逻辑结构图
7.3 定时器/计数器的工作方式
5 计数初值的计算方法
设Tx运行于计数器模式,要求计数X个外部脉冲后T0(或T1)回零,则计 数初值C的求取方法如下:
÷ 12 f0sc
不分频 S3
T0X12
0 1 C/T=0 C/T=1
S2 TL0 8位 “1”闭合 & TH0 8位 TF0
S1 T0引脚 TR0 GATE INT0 1 ≥1
中断 请求
★定时/计数值 工作方式1计数时:计数值N由式N=65536–X 决定,计数范围为1~65536(216)。 工作方式1定时时:定时时间t 由式t=(65536-X)Tcy 决定。
第7章 STC11F单片机的定时器/计数器
7.1 单片机定时器/计数器结构与原理 7.2 单片机定时器/计数器的控制 7.3 单片机定时器/计数器的工作方式 7.4 单片机定时器/计数器的应用举例 7.5 单片机定时器/计数器的可编程 时钟输出功能
7.1 定时器/计数器的结构与原理
◆ 两个16位加1计数器,THx+TLx成。TMOD工作方式寄存器;TCON控制寄存器, 控制Tx的启、停及设置溢出标志;AUXR辅助寄存器设定内部计数脉冲的分频系数。
如果分频设定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”闭合
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
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 时,外中
注意!
1)在正确编写中断服务程序,除考虑如何实现要求的定时/计数功能外,应 注意是否需要恢复定时器的时间常数。 2)对于较长范围的定时/计数,可以结合软件计数的方法予以扩展。 3)外部输入脉冲的最高频率不能超过振荡频率的1/24,脉冲宽度应不小于一 个机器周期。
4)计算定时初值不要忘记分频系数(1、12)。
解: 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
S2 TL0 8位 & TF0
重装载信号 中断 请求
S1 T0引脚 TR0 GATE INT0 1 ≥1
TH0 8位
TL0 作为8 位加法计数器使用,TH0 作为初值寄存器用。TH0、TL0 初
值都由软件预置。TL0 计数溢出时,置位TF0且重装载TL0。
方式2 的计数范围为M=1~256(28); 方式2特别适合于用作较精确的脉冲信号发生器。
计数模式时,计数值为N=213-X 初值还可以采用计数个数直接取补法获得 。
● 注:STC15系列改进为16位 重装常数方式
7.3 定时器/计数器的工作方式
2.方式1
当 M1M0=01 时方式, 1为 16位定时器 /计数器模式,由 TL0+TH0,其它控 制逻辑与方式0相同 。 (上图TL0改8位全用)
7.4 定时器/计数器的应用举例
例7.1
若STC11F单片机的晶振频率为12MHz,要求利用T0方式0,定时分频系数 12 ,P1.0引脚输出周期为2ms的方波(课本用T1方式1,10ms)。
思路:若要产生周期为2ms的方波,只要每1ms将信号的幅值由0变到1或由1变到0即
可,可采用取反指令CPL来实现。为了提高CPU的效率,可采用定时方式0中断,每
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
方式0(13位方式):C =(64H)求补=0000001100100+1=1F9CH 方式1(16位方式):C =(64H)求补=0000000001100100+1=FF9CH
方式2(8位方式) : C =(64H)求补 = 01100100+1 = 9CH 注意:定时器/计数器在工作方式0时的初值装入方法!(低5位,பைடு நூலகம்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--不分频
S2 TL0 8位 “1”闭合 & TF0
S1 T0引脚 TR0 GATE INT0 ÷ 12 f0sc
不分频 S3
中断 请求
控制资源的占用: TL0 占 用 T0 的 全 部 控 制 位 C/-T 、 GATE、TR0、TF0及-INT0 ,TL0 既可作 为定时器使用,也可作为计数器使用。
1
≥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
RETI
END
;中断返回
7.4 定时器/计数器的应用举例
课堂调试示例工程5_定时器控制P0口输出
7.4 定时器/计数器的应用举例
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
因为,计数器溢出的含义是指加满到计数器的模值2n(n位计数位数),即 X + C = 模=2n 所以, C = 2n–X =2n +(–X)=(X)补 可见,计数初值的大小等于需要计数的个数X求补运算后的结果。
设Tx运行于定时器模式,需定时tµ s,则计数脉冲个数为X=t/Tcy,(Tcy为
考虑分频系数后的时钟周期),同理可知,定时初值为 (t/Tcy )求补。 例: T0运行于计数器状态,工作于方式1(16位方式),要求外部引脚出现3个脉 冲后,T0计满溢出而申请中断,试求计数初值C。
相关文档
最新文档