第六章 定时器及应用主要内容
1、定时器概述
2、定时器的控制
3、定时器的四种工作模式及应用
6.1 定时器概述
8051单片机内 有两个 16位定时器 /计数器,常称为定时器 0和定时器 1,简称为 T0和 T1;均可作定时器用也可计数器,为加 1计数器 ;用于定时控制、延时、
外部计数和检测等。其结构如下图所示。
外部控制门作为定时器用时的计时速度,一个机器周期计数器加 1,直至计满溢出。
如晶振为 12MHz的单片机,一个机器周期为 1μS,
其 计数频率为振荡频率的 1/12。
作为计数器用时的计数速度,每两个机器周期计数器加 1,计数频率最高为振荡频率的 1/24。
在 S5P2对计数输入引脚 T0,T1进行采样,下降沿计数 。
说明:
定时器 /计数器在工作期间不占用 CPU的时间。
6.2 定时器控制主要讨论两个定时器 /计数器的控制寄存器 TMOD
和 TCON。系统复位时其初值为 0。
6,2,1 工作模式寄存器 TMOD
TMOD的地址及格式如下:
TMOD的低 4位用于 T0,高 4位用于 T1。
TMOD各位的意义如下:
M1和 M0----工作模式控制位。其功能如下表:
C/T----定时器 /计数器方式选择位。
0:定时器; 1:计数器。
GATE----外部门控位。
0:不用外部门; 1:使用外部门。
TMOD各位的意义如下:
6,2,2 控制寄存器 TCON
TCON的地址及格式如下,可按位寻址 。
各位的意义如下:
TF1( TCON.7,8FH位) ----T1溢出标志位。
TF0( TCON.5,8DH位) ----T0溢出标志位。
TR1( TCON.6,8EH位) ----T1运行控制位。
0:关闭 T1; 1:启动 T1运行。
TR0( TCON.4,8CH位) ----T0运行控制位。
0:关闭 T0; 1:启动 T0运行。
TCON各位的意义如下图所示:
6.3 定时器的四种工作模式及应用定时器的四种工作模式称为:模式 0、模式 1、模式 2、模式 3,由特殊功能寄存器 TMOD确定 。
主要讨论各种工作模式的工作原理、特点和应用。
6,3,1 模式 0及其应用一、模式 0时的结构和工作原理
0
1
模式 0工作时的构成,
( 1)运行 控制部分 ;( 2)定时 /计数 信号源 ;
( 3) 13位 计数器 ;( 4) 溢出标志 。
二、特点
1、可定时( C/T=0)、可计数( C/T=1) ;
2,13位方式( TL0,1的低 5位和 TH0,1的 8位);
3,INT0,INT1是定时器 /计数器 0,1的外部门,
GATE=1允许使用外部门( TR0,1应置 1),此时用外部门控制运行
GATE=0禁止外部门,此时用 TR0,1控制运行;
4、计数值 N和定时时间 t的计算,
N= 213- 初值 X
t=( 213-初值 X) *振荡周期 *12
=( 213-初值 X) *机器周期 Tcy
最大计数值为,213 = 8192
三、应用举例例 6-1 设定时器 T0选择工作模式 0,定时时间为 1ms,
osc=6MHz。试确定 T0初值,计算最大定时时间 T。
解,( 1)求 T0的初值 X
由公式,t=(213-T0初值 )*机器周期 Tcy
t=1ms=1000μs
机器周期 Tcy=12/?osc=12/6000000s=2μs
得 1000=( 213 -X) *2
所以初值 X=8192-500=7692=1111000001100B
T0的低 5位,01100B=0CH
T0的高 8位,11110000B=F0H
( 2)最大定时时间 T
当 T0的初值 =0时为最大定时时间
T=( 213 -0) *2=8192*2μs =16384 μs =16.384ms
7692÷ 32
商为高 8位,
余数为低 5位例 6-2 设 T1以模式 0定时,定时时间为 1ms,
osc=6MHz,编程实现其定时功能。
解,( 1)计算初值(同上,略)
F0H?TH0,0CH?TL0
( 2)程序清单
ORG 0000H
RESET,AJMP MAIN
ORG 000BH
AJMP IT0P;主程序
ORG 0100H
MAIN,MOV SP,#5FH
MOV TL0,#0CH
MOV TH0,#0F0H
SETB TR0
SETB ET0
SETB EA
SJMP $;中断服务程序
ORG 0120H
IT0P,MOV TL0,#0CH
MOV TH0,#0F0H
CPL P1.0
RETI
例 6-3 利用 T0的工作模式 0产生 1ms的定时,编程实现在 P1.0引脚上输出周期为 2ms的方波。设单片机的晶振频率?osc=12MHz。
解,方法,定时 1ms,对 P1.0取反,然后继续定时
( 1)设置模式字
TMOD= **** 0000B
=00000000B=00H
( 2)计算初值由公式,t=(213-T0初值 )*机器周期
t=1ms=1000μs,
机器周期 Tcy=12/?osc=12/12000000s=1μs
得 1000=( 213 -X) *1=( 8192-X) *1
所以初值 X=7192=1110000011000B
T0的低 5位,11000B=18H
T0的高 8位,11100000B=E0H
1ms
2ms
7192÷ 32
商为高 8位,
余数为低 5位
( 3)程序清单方法一:中断方式
ORG 0000H
RESET,LJMP MAIN
ORG 000BH
LJMP CTC0;主程序
ORG 0030H
MAIN,MOV SP,#5FH
MOV TMOD,#0
MOV TL0,#18H
MOV TH0,#0E0H
SETB EA
SETB ET0
SETB TR0
SJMP $;中断服务程序
ORG 0100H
CTC0,MOV TL0,#18H
MOV TH0,#0E0H
CPL P1.0
RETI
方法二:查询方式
ORG 0000H
START,MOV SP,#5FH
MOV TMOD,#0
MOV TL0,#18H
MOV TH0,#0E0H
SETB TR0
LOOP,JBC TF0,NEXT
SJMP LOOP
NEXT,MOV TL0,#18H
MOV TH0,#0E0H
CPL P1.0
SJMP LOOP
可替换为,
LOOP,JNB TF0,$
CLR TF0
MOV TL0,#18H
:
6,3,2 模式 1及其应用一、模式 1时的结构和工作原理模式 1工作时的结构构成:
( 1)定时 /计数 信号源 ;( 2) 运行控制 部分;
( 3) 16位 计数器 ; ( 4) 溢出标志 。
0
1
二、特点
1、可定时( C/T=0)、可计数( C/T=1) ;
2,16位方式 (TL0,1为低 8位,TH0,1为高 8位 );
3,INT0,INT1是定时器 /计数器 0,1的外部门,
GATE=1允许使用外部门( TR0,1应置 1),此时用外部门控制运行
GATE=0禁止外部门,此时用 TR0,1控制运行;
4、计数值 N和定时时间 t的计算,
N= 216-初值 X
t=( 216-初值 X) *机器周期 Tcy
最大计数值为,216 =65536
例 6-4 用定时器 T1产生一个 50Hz的方波,由 P1.1
输出。使用程序查询方式,设?osc=12MHz。
解,
( 1)计算初值方波周期 T为,T=1/50s=0.02s=20ms
定时时间为,t=T/2=10ms=10000μs
由公式,t=( 216-X) *机器周期 Tcy
因 Tcy=1μs,得
10000= (216-X)*1,10000=65536-X
X=55536=D8F0H
55536÷ 256
商为高 8位,
余数为低 8位
( 2)模式字 TMOD
TMOD=0001****B=10H
( 3)源程序
ORG 0000H
MOV TMOD,#10H
SETB TR1
LP,MOV TH1,#0D8H
MOV TL1,#0F0H
JNB TF1,$
CLR TF1
CPL P1.1
SJMP LP
6,3,3 模式 2及其应用一、模式 2时的结构和工作原理模式 2工作时的结构构成:
( 1)定时 /计数 信号源 ; ( 2) 运行控制 部分;
( 3) 8位带装入 计数器 ; ( 4) 溢出标志 。
0
1
重新装入二、特点
1、可定时( C/T=0)、可计数( C/T=1) ;
2,8位自动装入方式( TL0和 TH0装入相同数);
3,INT0,INT1是定时器 /计数器 0,1的外部门,
GATE=1允许使用外部门( TR0,1应置 1),此时用外部门控制运行
GATE=0禁止外部门,此时用 TR0,1控制运行;
4、计数值 N和定时时间 t的计算,
N= 28- 初值 X
t=( 28- 初值 X) *机器周期 Tcy
最大计数值为,28 =256
说明,常用 T1以模式 2工作作为串口的波特率发生器。
例 6-5 当 P3.4引脚上输入的电平发生负跳变时,从
P1.0输出一个 500μs的同步脉冲,请编程实现该功能。
设?osc=6MHz。
解题思路:
先令 T0以模式 2计数,其初值设为 FFH,当 P3.4引脚上输入的电平发生负跳变时,计数器加 1使溢出标志置 1; 然后令 T0以模式 2定时,使 P1.0输出一个
500μs的同步负脉冲。
解,1,T0以模式 2计数
( 1)计数初值 X=0FFH
( 2)模式字 TMOD=****0110B=06H
2,T0以模式 2定时
( 1)定时初值 X计算
t=500 μs,Tcy=2 μs
由公式,t=( 28-X) *机器周期 Tcy
得 500=( 256-X) *2
X=6
( 2)模式字
TMOD=****0010B=02H
3、程序清单:
ORG 0000H
START,MOV TMOD,#6 ; T0以模式 2计数
MOV TH0,#0FFH
MOV TL0,#0FFH
SETB TR0
JNB TF0,$
CLR TF0
CLR TR0
MOV TMOD,#2; T0以模式 2定时
MOV TH0,#06
MOV TL0,#06
CLR P1.0
SETB TR0
JNB TF0,$
SETB P1.0
CLR TF0
CLR TR0
SJMP START
例 6-6 利用定时器 T1的模式 2对外部信号计数,要求每计满 100次对 P1.0端取反。
解,( 1)计算计数初值 X
100=28-X X=256-100=156=9CH
( 2)模式字
TMOD=0110****B=60H
( 3)程序清单 ;用中断方式
ORG 0000H
MAIN,MOV TMOD,#60H
MOV TL1,#156
MOV TH1,#156
MOV IE,#88H
SETB TR1
SJMP $;中断服务程序
ORG 001BH
CPL P1.0
RETI
6,3,4 模式 3及其应用一、模式 3时的结构和工作原理模式 3工作时的结构构成:
( 1)定时 /计数 信号源 ;( 2)两个 运行控制 部分;
( 3)两个 8位 计数器 ; ( 4)两个 溢出标志 。
0
1
二、特点
1、仅 T0具有模式 3,为 两个 8位方式,用 TL0和 TH0
( 1)用 TL0的既 可计数也可定时,与其它模式完全相同;
( 2)用 TH0的 仅能够定时,不能用外部控制门,且占用
T1的资源 TR1和 TF1,有运行控制 和溢出 中断请求 。
2,T1可以模式 0~2定时或计数,但溢出无中断请求,
且开关已经接通。 常以模式 2工作,作为串口的波特率发生器。如下图所示。
例 6-7 设某单片机系统中已经使用了两个外部中断源,并置定时器 T1为模式 2,作串行口波特率发生器用。现要求再增加一个外部中断源,并由 P1.0引脚输出一个 5kHz的方波。osc=12MHz。
解,1、确定定时器的工作方式将 T0设置为模式 3计数,T0的引脚接外部中断源,
TL0的计数初值设为 FFH,下降沿产生中断; T0的
TH0为 8位定时器,可产生方波,用中断方式; T1设为模式 2定时,作串行口的波特率发生器。
2、计算各个初值
( 1) TL0的初值 为 0FFH
( 2) TH0的初值产生 5kHz的方波的周期为,T=1/5000s=0.2ms=200 μs
因此 TH0的定时时间为,t=T/2=100 μs,Tcy=1 μs
得 100=( 256-X) *Tcy
X=256-100=156
TH1=TL1,由波特率值确定
3,TMOD值,00100111B=27H
TCON值,01010101B=55H
4、程序清单,
( 1)中断入口部分,
ORG 0000H
START,LJMP MAIN
LJMP E0INT
ORG 000BH
LJMP TL0INT
ORG 0013H
LJMP E1INT
ORG 001BH
LJMP TH0INT
( 2)主程序部分:
MAIN,MOV SP,#5FH
MOV TMOD,#27H
MOV TL0,#0FFH
MOV TH0,#156
MOV TH1,#data
MOV TL1,#data
MOV IE,#9FH ;开中断
:
( 3)中断处理程序部分:
TL0溢出中断服务程序,
TL0INT,MOV TL0,#0FFH
(外部中断处理)
RETI
TH0溢出中断服务程序:
TH0INT,MOV TH0,#156
CPL P1.0
ERTI
(其它外部中断服务程序略)
6,3,5 综合应用举例例 6-8 设某单片机系统的晶振频率为 6MHz,试编写利用 T0产生 1s定时的程序。
解,1、确定定时器 T0的工作模式 Tcy=2 μs
模式 0最长可定时,2μs*8192=16.384ms
模式 1最长可定时,2μs*65536=131.072ms
模式 2最长可定时,2μs*256=512μs
选模式 1,每隔 100ms中断一次,中断 10次为 1s。
2、计算初值 X
100000 μs=( 65536-X) *2 μs
X=65536-50000=15536=3CB0H
3、实现的方法,( 1)计数器法 ;( 2) 中断循环程序法
15536÷ 256
商为高 8位,
余数为低 8位
4、程序清单:
( 1)中断入口和主程序部分:
ORG 0000H
START,LJMP MAIN
ORH 000BH
LJMP SERVE
ORG 0030H
MAIN,MOV SP,#5FH
MOV B,#10
MOV TMOD,#01H
MOV TL0,#0B0H
MOV TH0,#3CH
SETB TR0 ;开运行
SETB ET0 ;开中断
SETB EA
SJMP $
( 2)中断服务程序部分:
SERVE:
MOV TL0,#0B0H
MOV TH0,#3CH
DJNZ B,LOOP
CLR TR0
LOOP,RETI
END
第六章作业
6 11 12
2 14 15
例 6-9 设计实时时钟程序。设?osc=6MHz。
解题思路:
用 T1定时 100ms,用模式 1,用中断 ;
在中断服务程序中:
计中断次数(在 20H中),用软件记录中断次数计秒(在 32H中),用软件记录中断次数,中断 10次为 1s;
计分钟(在 31H中),用软件计秒数,60秒计 1分钟;
计小时(在 30H中),用软件计分钟,60分计 1小时。
解,1、计算初值由公式,t=( 216-X) *机器周期 Tcy
t=100ms=100000μs,Tcy=2 μs
X=65536-50000=15536=3CB0H
2、定时器的模式字
TMOD=0001****B=10H
主程序流程图子程序流程图
3、源程序,( 1)中断入口和主程序
ORG 0000H ;
LJMP MAIN
LJMP SERVE
MAIN,MOV TMOD,#10H
MOV 20H,#10
CLR A
MOV 30H,A
MOV 31H,A
MOV 32H,A
SETB ET1
SETB EA
MOV TH1,#3CH
MOV TL1,#0B0H
SETB TR1
SJMP $
( 2)中断服务程序
SERVE,PUSH PSW
PUSH ACC
MOV TH1,#3CH
MOV TL1,#0B0H
DJNZ 20H,RETUN
MOV 20H,#10
MOV A,32H
ADD A,#1
DA A
MOV 32H,A
CJNE A,#60H,RETUN
MOV 32H,#0
MOV A,31H
ADD A,#1
DA A
MOV 31H,A
CJNE A,#60H,RETUN
MOV 31H,#0
MOV A,30H
ADD A,#1
DA A
MOV 30H,A
CJNE A,#60H,RETUN
MOV 30H,#0
RETUN,POP ACC
POP PSW
RETI
END
第六章作业
6 11 12
2 14 15
13 18
1、定时器概述
2、定时器的控制
3、定时器的四种工作模式及应用
6.1 定时器概述
8051单片机内 有两个 16位定时器 /计数器,常称为定时器 0和定时器 1,简称为 T0和 T1;均可作定时器用也可计数器,为加 1计数器 ;用于定时控制、延时、
外部计数和检测等。其结构如下图所示。
外部控制门作为定时器用时的计时速度,一个机器周期计数器加 1,直至计满溢出。
如晶振为 12MHz的单片机,一个机器周期为 1μS,
其 计数频率为振荡频率的 1/12。
作为计数器用时的计数速度,每两个机器周期计数器加 1,计数频率最高为振荡频率的 1/24。
在 S5P2对计数输入引脚 T0,T1进行采样,下降沿计数 。
说明:
定时器 /计数器在工作期间不占用 CPU的时间。
6.2 定时器控制主要讨论两个定时器 /计数器的控制寄存器 TMOD
和 TCON。系统复位时其初值为 0。
6,2,1 工作模式寄存器 TMOD
TMOD的地址及格式如下:
TMOD的低 4位用于 T0,高 4位用于 T1。
TMOD各位的意义如下:
M1和 M0----工作模式控制位。其功能如下表:
C/T----定时器 /计数器方式选择位。
0:定时器; 1:计数器。
GATE----外部门控位。
0:不用外部门; 1:使用外部门。
TMOD各位的意义如下:
6,2,2 控制寄存器 TCON
TCON的地址及格式如下,可按位寻址 。
各位的意义如下:
TF1( TCON.7,8FH位) ----T1溢出标志位。
TF0( TCON.5,8DH位) ----T0溢出标志位。
TR1( TCON.6,8EH位) ----T1运行控制位。
0:关闭 T1; 1:启动 T1运行。
TR0( TCON.4,8CH位) ----T0运行控制位。
0:关闭 T0; 1:启动 T0运行。
TCON各位的意义如下图所示:
6.3 定时器的四种工作模式及应用定时器的四种工作模式称为:模式 0、模式 1、模式 2、模式 3,由特殊功能寄存器 TMOD确定 。
主要讨论各种工作模式的工作原理、特点和应用。
6,3,1 模式 0及其应用一、模式 0时的结构和工作原理
0
1
模式 0工作时的构成,
( 1)运行 控制部分 ;( 2)定时 /计数 信号源 ;
( 3) 13位 计数器 ;( 4) 溢出标志 。
二、特点
1、可定时( C/T=0)、可计数( C/T=1) ;
2,13位方式( TL0,1的低 5位和 TH0,1的 8位);
3,INT0,INT1是定时器 /计数器 0,1的外部门,
GATE=1允许使用外部门( TR0,1应置 1),此时用外部门控制运行
GATE=0禁止外部门,此时用 TR0,1控制运行;
4、计数值 N和定时时间 t的计算,
N= 213- 初值 X
t=( 213-初值 X) *振荡周期 *12
=( 213-初值 X) *机器周期 Tcy
最大计数值为,213 = 8192
三、应用举例例 6-1 设定时器 T0选择工作模式 0,定时时间为 1ms,
osc=6MHz。试确定 T0初值,计算最大定时时间 T。
解,( 1)求 T0的初值 X
由公式,t=(213-T0初值 )*机器周期 Tcy
t=1ms=1000μs
机器周期 Tcy=12/?osc=12/6000000s=2μs
得 1000=( 213 -X) *2
所以初值 X=8192-500=7692=1111000001100B
T0的低 5位,01100B=0CH
T0的高 8位,11110000B=F0H
( 2)最大定时时间 T
当 T0的初值 =0时为最大定时时间
T=( 213 -0) *2=8192*2μs =16384 μs =16.384ms
7692÷ 32
商为高 8位,
余数为低 5位例 6-2 设 T1以模式 0定时,定时时间为 1ms,
osc=6MHz,编程实现其定时功能。
解,( 1)计算初值(同上,略)
F0H?TH0,0CH?TL0
( 2)程序清单
ORG 0000H
RESET,AJMP MAIN
ORG 000BH
AJMP IT0P;主程序
ORG 0100H
MAIN,MOV SP,#5FH
MOV TL0,#0CH
MOV TH0,#0F0H
SETB TR0
SETB ET0
SETB EA
SJMP $;中断服务程序
ORG 0120H
IT0P,MOV TL0,#0CH
MOV TH0,#0F0H
CPL P1.0
RETI
例 6-3 利用 T0的工作模式 0产生 1ms的定时,编程实现在 P1.0引脚上输出周期为 2ms的方波。设单片机的晶振频率?osc=12MHz。
解,方法,定时 1ms,对 P1.0取反,然后继续定时
( 1)设置模式字
TMOD= **** 0000B
=00000000B=00H
( 2)计算初值由公式,t=(213-T0初值 )*机器周期
t=1ms=1000μs,
机器周期 Tcy=12/?osc=12/12000000s=1μs
得 1000=( 213 -X) *1=( 8192-X) *1
所以初值 X=7192=1110000011000B
T0的低 5位,11000B=18H
T0的高 8位,11100000B=E0H
1ms
2ms
7192÷ 32
商为高 8位,
余数为低 5位
( 3)程序清单方法一:中断方式
ORG 0000H
RESET,LJMP MAIN
ORG 000BH
LJMP CTC0;主程序
ORG 0030H
MAIN,MOV SP,#5FH
MOV TMOD,#0
MOV TL0,#18H
MOV TH0,#0E0H
SETB EA
SETB ET0
SETB TR0
SJMP $;中断服务程序
ORG 0100H
CTC0,MOV TL0,#18H
MOV TH0,#0E0H
CPL P1.0
RETI
方法二:查询方式
ORG 0000H
START,MOV SP,#5FH
MOV TMOD,#0
MOV TL0,#18H
MOV TH0,#0E0H
SETB TR0
LOOP,JBC TF0,NEXT
SJMP LOOP
NEXT,MOV TL0,#18H
MOV TH0,#0E0H
CPL P1.0
SJMP LOOP
可替换为,
LOOP,JNB TF0,$
CLR TF0
MOV TL0,#18H
:
6,3,2 模式 1及其应用一、模式 1时的结构和工作原理模式 1工作时的结构构成:
( 1)定时 /计数 信号源 ;( 2) 运行控制 部分;
( 3) 16位 计数器 ; ( 4) 溢出标志 。
0
1
二、特点
1、可定时( C/T=0)、可计数( C/T=1) ;
2,16位方式 (TL0,1为低 8位,TH0,1为高 8位 );
3,INT0,INT1是定时器 /计数器 0,1的外部门,
GATE=1允许使用外部门( TR0,1应置 1),此时用外部门控制运行
GATE=0禁止外部门,此时用 TR0,1控制运行;
4、计数值 N和定时时间 t的计算,
N= 216-初值 X
t=( 216-初值 X) *机器周期 Tcy
最大计数值为,216 =65536
例 6-4 用定时器 T1产生一个 50Hz的方波,由 P1.1
输出。使用程序查询方式,设?osc=12MHz。
解,
( 1)计算初值方波周期 T为,T=1/50s=0.02s=20ms
定时时间为,t=T/2=10ms=10000μs
由公式,t=( 216-X) *机器周期 Tcy
因 Tcy=1μs,得
10000= (216-X)*1,10000=65536-X
X=55536=D8F0H
55536÷ 256
商为高 8位,
余数为低 8位
( 2)模式字 TMOD
TMOD=0001****B=10H
( 3)源程序
ORG 0000H
MOV TMOD,#10H
SETB TR1
LP,MOV TH1,#0D8H
MOV TL1,#0F0H
JNB TF1,$
CLR TF1
CPL P1.1
SJMP LP
6,3,3 模式 2及其应用一、模式 2时的结构和工作原理模式 2工作时的结构构成:
( 1)定时 /计数 信号源 ; ( 2) 运行控制 部分;
( 3) 8位带装入 计数器 ; ( 4) 溢出标志 。
0
1
重新装入二、特点
1、可定时( C/T=0)、可计数( C/T=1) ;
2,8位自动装入方式( TL0和 TH0装入相同数);
3,INT0,INT1是定时器 /计数器 0,1的外部门,
GATE=1允许使用外部门( TR0,1应置 1),此时用外部门控制运行
GATE=0禁止外部门,此时用 TR0,1控制运行;
4、计数值 N和定时时间 t的计算,
N= 28- 初值 X
t=( 28- 初值 X) *机器周期 Tcy
最大计数值为,28 =256
说明,常用 T1以模式 2工作作为串口的波特率发生器。
例 6-5 当 P3.4引脚上输入的电平发生负跳变时,从
P1.0输出一个 500μs的同步脉冲,请编程实现该功能。
设?osc=6MHz。
解题思路:
先令 T0以模式 2计数,其初值设为 FFH,当 P3.4引脚上输入的电平发生负跳变时,计数器加 1使溢出标志置 1; 然后令 T0以模式 2定时,使 P1.0输出一个
500μs的同步负脉冲。
解,1,T0以模式 2计数
( 1)计数初值 X=0FFH
( 2)模式字 TMOD=****0110B=06H
2,T0以模式 2定时
( 1)定时初值 X计算
t=500 μs,Tcy=2 μs
由公式,t=( 28-X) *机器周期 Tcy
得 500=( 256-X) *2
X=6
( 2)模式字
TMOD=****0010B=02H
3、程序清单:
ORG 0000H
START,MOV TMOD,#6 ; T0以模式 2计数
MOV TH0,#0FFH
MOV TL0,#0FFH
SETB TR0
JNB TF0,$
CLR TF0
CLR TR0
MOV TMOD,#2; T0以模式 2定时
MOV TH0,#06
MOV TL0,#06
CLR P1.0
SETB TR0
JNB TF0,$
SETB P1.0
CLR TF0
CLR TR0
SJMP START
例 6-6 利用定时器 T1的模式 2对外部信号计数,要求每计满 100次对 P1.0端取反。
解,( 1)计算计数初值 X
100=28-X X=256-100=156=9CH
( 2)模式字
TMOD=0110****B=60H
( 3)程序清单 ;用中断方式
ORG 0000H
MAIN,MOV TMOD,#60H
MOV TL1,#156
MOV TH1,#156
MOV IE,#88H
SETB TR1
SJMP $;中断服务程序
ORG 001BH
CPL P1.0
RETI
6,3,4 模式 3及其应用一、模式 3时的结构和工作原理模式 3工作时的结构构成:
( 1)定时 /计数 信号源 ;( 2)两个 运行控制 部分;
( 3)两个 8位 计数器 ; ( 4)两个 溢出标志 。
0
1
二、特点
1、仅 T0具有模式 3,为 两个 8位方式,用 TL0和 TH0
( 1)用 TL0的既 可计数也可定时,与其它模式完全相同;
( 2)用 TH0的 仅能够定时,不能用外部控制门,且占用
T1的资源 TR1和 TF1,有运行控制 和溢出 中断请求 。
2,T1可以模式 0~2定时或计数,但溢出无中断请求,
且开关已经接通。 常以模式 2工作,作为串口的波特率发生器。如下图所示。
例 6-7 设某单片机系统中已经使用了两个外部中断源,并置定时器 T1为模式 2,作串行口波特率发生器用。现要求再增加一个外部中断源,并由 P1.0引脚输出一个 5kHz的方波。osc=12MHz。
解,1、确定定时器的工作方式将 T0设置为模式 3计数,T0的引脚接外部中断源,
TL0的计数初值设为 FFH,下降沿产生中断; T0的
TH0为 8位定时器,可产生方波,用中断方式; T1设为模式 2定时,作串行口的波特率发生器。
2、计算各个初值
( 1) TL0的初值 为 0FFH
( 2) TH0的初值产生 5kHz的方波的周期为,T=1/5000s=0.2ms=200 μs
因此 TH0的定时时间为,t=T/2=100 μs,Tcy=1 μs
得 100=( 256-X) *Tcy
X=256-100=156
TH1=TL1,由波特率值确定
3,TMOD值,00100111B=27H
TCON值,01010101B=55H
4、程序清单,
( 1)中断入口部分,
ORG 0000H
START,LJMP MAIN
LJMP E0INT
ORG 000BH
LJMP TL0INT
ORG 0013H
LJMP E1INT
ORG 001BH
LJMP TH0INT
( 2)主程序部分:
MAIN,MOV SP,#5FH
MOV TMOD,#27H
MOV TL0,#0FFH
MOV TH0,#156
MOV TH1,#data
MOV TL1,#data
MOV IE,#9FH ;开中断
:
( 3)中断处理程序部分:
TL0溢出中断服务程序,
TL0INT,MOV TL0,#0FFH
(外部中断处理)
RETI
TH0溢出中断服务程序:
TH0INT,MOV TH0,#156
CPL P1.0
ERTI
(其它外部中断服务程序略)
6,3,5 综合应用举例例 6-8 设某单片机系统的晶振频率为 6MHz,试编写利用 T0产生 1s定时的程序。
解,1、确定定时器 T0的工作模式 Tcy=2 μs
模式 0最长可定时,2μs*8192=16.384ms
模式 1最长可定时,2μs*65536=131.072ms
模式 2最长可定时,2μs*256=512μs
选模式 1,每隔 100ms中断一次,中断 10次为 1s。
2、计算初值 X
100000 μs=( 65536-X) *2 μs
X=65536-50000=15536=3CB0H
3、实现的方法,( 1)计数器法 ;( 2) 中断循环程序法
15536÷ 256
商为高 8位,
余数为低 8位
4、程序清单:
( 1)中断入口和主程序部分:
ORG 0000H
START,LJMP MAIN
ORH 000BH
LJMP SERVE
ORG 0030H
MAIN,MOV SP,#5FH
MOV B,#10
MOV TMOD,#01H
MOV TL0,#0B0H
MOV TH0,#3CH
SETB TR0 ;开运行
SETB ET0 ;开中断
SETB EA
SJMP $
( 2)中断服务程序部分:
SERVE:
MOV TL0,#0B0H
MOV TH0,#3CH
DJNZ B,LOOP
CLR TR0
LOOP,RETI
END
第六章作业
6 11 12
2 14 15
例 6-9 设计实时时钟程序。设?osc=6MHz。
解题思路:
用 T1定时 100ms,用模式 1,用中断 ;
在中断服务程序中:
计中断次数(在 20H中),用软件记录中断次数计秒(在 32H中),用软件记录中断次数,中断 10次为 1s;
计分钟(在 31H中),用软件计秒数,60秒计 1分钟;
计小时(在 30H中),用软件计分钟,60分计 1小时。
解,1、计算初值由公式,t=( 216-X) *机器周期 Tcy
t=100ms=100000μs,Tcy=2 μs
X=65536-50000=15536=3CB0H
2、定时器的模式字
TMOD=0001****B=10H
主程序流程图子程序流程图
3、源程序,( 1)中断入口和主程序
ORG 0000H ;
LJMP MAIN
LJMP SERVE
MAIN,MOV TMOD,#10H
MOV 20H,#10
CLR A
MOV 30H,A
MOV 31H,A
MOV 32H,A
SETB ET1
SETB EA
MOV TH1,#3CH
MOV TL1,#0B0H
SETB TR1
SJMP $
( 2)中断服务程序
SERVE,PUSH PSW
PUSH ACC
MOV TH1,#3CH
MOV TL1,#0B0H
DJNZ 20H,RETUN
MOV 20H,#10
MOV A,32H
ADD A,#1
DA A
MOV 32H,A
CJNE A,#60H,RETUN
MOV 32H,#0
MOV A,31H
ADD A,#1
DA A
MOV 31H,A
CJNE A,#60H,RETUN
MOV 31H,#0
MOV A,30H
ADD A,#1
DA A
MOV 30H,A
CJNE A,#60H,RETUN
MOV 30H,#0
RETUN,POP ACC
POP PSW
RETI
END
第六章作业
6 11 12
2 14 15
13 18