
1s等于多少ms
-基础理论研究
2023年2月15日发(作者:婚礼邀请文案)第4部分定时器及应用
1、定时器模式2有什么特点?适用于什么应用场合?
答:(1)模式2时把TL0或TL1配置成一个可以自动重装载的8位定时器/
计数器。TL担任8位计数器,TH保存初值,TL溢出时不仅使TF0置1,而
且还自动将TH中的内容重新装载在TL中。
定时时间t=(28-初值)×振荡周期×12;最大计数长度为28=256
个外部脉冲。
(2)这种模式可省去用户软件重装初值的语
句,并可产生相当精确定时时间,特别适合于作串
行波特率发生器。
2、单片机用内部定时方法产生频率为100KHz等宽距形波,假
定单片机的晶振频率为12MHz。请编程实现。
答:f=100KHz,t=1×10
-5
秒(采用定时器T1选择
工作模式1)
0.5×10
-5
=(2
16
-X)×12/(12×10
6
)
(2
16
-X)=5
X=FFFBH
程序清单:
ORG0100H
MOVTMOD,#01H
MOVTL0,#0FBH
MOVTH0,#0FFH
SETBTR0;启动T0
LOOP:JBCTF0,L1;查询定
时时间到否?时间到转L1,并对TF0清0.
SJMPLOOP;时间
未到转LOOP,继续查询
L1:MOVTL0,#0FBH;重置定
时初值
MOVTH0,#0FFH
CPLP1.0;输出取
反,形成等宽矩形波
SJMPLOOP;重复循
环
3、89C51定时器有哪几种工作模式?有何区别?
答:89C51定时器的四种工作模式有,模式1,模式2,模式3。
模式0时:选择定时器的高8位和低5位组成13位定时器/计数器。TL
低5位溢出时向TL进位,TH溢出时向中断标志位TF0进位,并申请中断。
定时时间t=(213-初值)×振荡周期×12;计数长度为
213=8192个外部脉冲。
模式1时:当TMOD中的M1M0置成01时,定时器工作于方式1,构成16
位定时器/计数器。
定时时间t=(216-初值)×振荡周期×12;计数长度为
216=65536个外部脉冲。
模式2时:把TL0和TL1配置成一个可以自动重装载的8位定时器/计
数器。TL担任8位计数器,TH保存初值,TL溢出时不仅使TF0置1,而且
还自动将TH中的内容重新装载在TL中。
定时时间t=(28-初值)×振荡周期×12;计数长度为
28=256个外部脉冲。
模式3时:方式3是两个8位定时/计数器模式,只适用于T0。TH0和
TL0成为两个独立的8位计数器。TL0为8位计数器,功能与模式0和模式1
相同,可定时可计数。TH0仅用作简单的内部定时功能,它占用了定时
器T1的控制位TR1和中断标志位TF1,启动和关闭受TR1的控制。T1无此
模式,但T0在工作模式3时T1仍可设置为模式0~2。
4、89C51单片机内部设有几个定时器/计数器?它们是由哪些
特殊功能寄存器组成?
答:89C51单片机内有两个16位定时器/计数器,即T0
和T1。
T0有两个特殊功能寄存器TH0和TL0组成;T1有
TH1和TL1组成。
5、定时器用作定时器时,其定时时间与哪些因素有关?作计
数器时,对外界计数频率有何限制?
答:定时时间与定时器的工作模式、初值及振荡周期
有关。
作计数器时对外界计数频率要求最高为机器振荡
频率的1/24。
6、简述定时器四种工作模式的特点,如何选择和设定?
答:(1)模式0时:选择定时器的高8位和低5位组成13位定时器/
计数器。TL低5位溢出时向TL进位,TH溢出时向中断标志位TF0进位,并
申请中断。
定时时间t=(213-初值)×振荡周期×12;计数长度为
213=8192个外部脉冲。
(2)模式1时:当TMOD中的M1M0置成01时,定时器工作于方式
1,构成16位定时器/计数器。
定时时间t=(216-初值)×振荡周期×12;计数长度为
216=65536个外部脉冲。
(3)模式2时:把TL0和TL1配置成一个可以自动重装载的8位
定时器/计数器。TL担任8位计数器,TH保存初值,TL溢出时不仅使TF0
置1,而且还自动将TH中的内容重新装载在TL中。
定时时间t=(28-初值)×振荡周期×12;计数长度为
28=256个外部脉冲。
(4)模式3时:方式3是两个8位定时/计数器模式,只适用于
T0。TH0和TL0成为两个独立的8位计数器。TL0为8位计数器,功能与模
式0和模式1相同,可定时可计数。TH0仅用作简单的内部定时功能,它
占用了定时器T1的控制位TR1和中断标志位TF1,启动和关闭受TR1的控
制。T1无此模式,但T0在工作模式3时T1仍可设置为模式0~2。
选择和设定:由定时器的2个控制寄存器TMOD和
TCON,由软件写入TMOD和TCON两个8位寄存器,设
置各个定时器的操作模式和控制功能。
7、当定时器T0用作模式3时,由于TR1位已被T0占用,如何控
制定时器T1的开启和关闭?
答:用T1控制位C/T切换其定时器或计数器工作方
式就可以是T1运行。
定时器T1无工作模式3,将T1设置成模式3,就
会使T1立即停止计数,关闭。
8、以定时器/计数器1进行外部事件计数。每计数1000个脉
冲后,定时器T1转为定时工作方式。定时10ms后,又转为计
数方式,如此循环不止。假定单片机晶振频率为6MHz,请使
用模式1编程实现。
答:T1为定时器时初值:
10×10-3=(216-X)×12/(6×106)
X=216-10×10-3×(6×106)/12=65536-5000=EC78H
T1为计数器时初值:
X+1000=216
X=64536=FC18H
程序清单:用查询方式设计
ORG0100H
L1:MOVTMOD,#50H
MOVTH1,#0FCH
MOVTL1,#18H
SETBTR1
LOOP1:JBCTF1,L2
SJMPLOOP1
L2:CLRTR1
MOVTMOD,#10H
MOVTH1,#0ECH
MOVTL1,#78H
SETBTR1
LOOP2:JBCTF1,L1
SJMPLOOP2
9、一个定时器的定时时间有限,如何实现两个定时器的串行
定时,以满足较长定时时间的要求?
答:当一个定时器定时溢出时,设置另一个定时器的
初值为0开始定时。
10、使用一个定时器,如何通过软、硬件结合的方法,实现
较长时间的定时?
答:设定好定时器的定时时间,采用中断方式用软件
设置计数次数,进行溢出次数累计,从而得到较长
的时间。
11、89C51定时器作定时和计数时,其计数脉冲分别由谁提
供?
答:作定时器时计数脉冲由89C51片内振荡器输出经
12分频后的脉冲提供;作计数器时计数脉冲由外部
信号通过引脚P3.4和P3.5提供。
12、89C51定时器的门控制信号GATE设置为1时,定时器如何
启动?
答:只有/INT0(或/INT1)引脚为高电平且由软件使
TR0(或TR1)置1时,才能启动定时器工作。
13、已知89C51单片机的fosc=6MHz,请利用T0和P1.0输出矩
形波。矩形波高电平宽50μs,低电平宽300μs.
答:T0采用模式2作50μs定时时的初值:
50×10
-6
=(2
8
-X)×12/(6×10
6
)
X=256-50×10
-
6
×(6×10
6
)/12=231=E7H
作300μs定时时的初值:
300×10
-6
=(2
8
-X)×12/(6×10
6
)
X=256-300×10
-
6
×(6×10
6
)/12=106=6AH
程序清单:用查询方式设计
ORG0200H
MOVTMOD,#02H
L2:CLRP1.0
MOVTH0,#6AH
MOVTL0,#6AH
SETBTR0
LOOP1:JBCTF0,L1
SJMPLOOP1
L1:SETBP1.0
CLRTR0
MOVTH0,#0E7H
MOVTL0,#0E7H
SETBTR0
LOOP2:JBCTF0,L2
SJMPLOOP2
14、已知89C51单片机的fosc=12MHz,用T1定时。试编程由
P1.0和P1.1引脚分别输出周期为2ms和500μs的方波。
解:采用模式1作500/2×μs定时初值:
250×10
-6
=(2
16
-X)×12/(12×10
6
)
X=2
16
-250×10
-6
×10
6
=FF06H
程序清单:
MOVR2,#04H;R2为“250μs”计数器,置入
初值4(计1ms)
CLRP1.0
CLRP1.1
MOVTMOD,#00H
L2:MOVTH1,#0FFH
MOVTL1,#06H
SETBTR1
LOOP:JBCTFO,L1
SJMPLOOP
L1:CPLP1.1
CLRTR1
DJNZR2,L2
CPLP1.0
MOVR2,#04H
LJMPL2
15、单片机8031的时钟频率为6MHz,若要求定时值分别为
0.1ms,1ms,10ms,定时器0工作在模式0、模式1和模式2时,
其定时器初值各应是多少?
解:(1)0.1ms
模式0:0.1×10
-3
=(2
13
-X)×12/(6×10
6
)
X=8142=10B
T0低5位:01110B=OEH
T0高8位:11111110B=FEH
模式1:0.1×10
-3
=(2
16
-X)×12/(6×10
6
)
X=65486=FFCEH
模式2:0.1×10
-3
=(2
8
-X)×12/(6×10
6
)
X=206=CEH
(2)1ms
模式0:1×10
-3
=(2
13
-X)×12/(6×10
6
)
X=7692=00B
T0低5位:01100B=OCH
T0高8位:11110000B=F0H
模式1:1×10
-3
=(2
16
-X)×12/(6×10
6
)
X=65036=FE0CH
模式2:在fOSC=6MHz时,最长定时为512ms,无
法一次实现定时1ms,可用0.1ms循环10次。
(3)10ms
模式0:10×10
-3
=(2
13
-X)×12/(6×10
6
)
X=3192=11B
T0低5位:11000B=18H
T0高8位:01100011B=63H
模式1:10×10
-3
=(2
16
-X)×12/(6×10
6
)
X=60536=EC78H
模式2:在fOSC=6MHz时,最长定时为512ms,无
法一次实现定时10ms,可用0.1ms循环100次。
16、89C51单片机的定时器在何种设置下可提供三个8位计数
器定时器?这时,定时器1可作为串行口波特率发生器。若波
特率按9600b/s,800b/s,2400b/s,
1200b/s,600b/s,100b/s来考虑,则此时可选用的波特率是
多少(允许存在一定误差)?设fosc=12MHz。
解:当T0为模式3,T1为模式2时,可提供3个8位定
时器。
Tmax=256×12/12=256μs
fmin=3906.25b/s(T1溢出率)
可选100bps
17、试编制一段程序,功能为:当P1.2引脚的电平上跳时,
对P1.1的输入脉冲进行计数;当P1.2引脚的电平下跳时,停
止计数,并将计数值写入R6,R7。
解:设使用T0,工作方式是计数,工作模式为1。
ORG0200H
JISHU:MOVTMOD,#05H
JNBP1.2,$;等待P1.2引脚电平上跳
MOVTH0,#00H
MOVTL0,#00H
SETBTR0
JBP1.2,$;等待P1.2引脚电平下跳
CLRTR0
MOVR7,TH0
MOVR6,TLO
SJMP$
18、设fosc=6MHz。试编制一段程序,功能为:对定时器T0
初始化,使之工作在模式2,产生200μs定时,并用查询T0溢
出标志的方法,控制P1.0输出周期为2ms的方波。
解:T0作定时器时初值:200×10
-6
=(2
8
-X)×12/
(12×10
6
)
X=56=38H
所以:程序1:
CLRP1.0
MOVR2,#05H
MOVTMOD,#02H
L2:MOVTH0,#38H
MOVTL0,#38H
SETBTR0
LOOP:JBCTF0,L1
SJMPLOOP
L1:CLRTR0
DJNZR2,L2
CPLP1.0
MOVR2,#05H
LJMPL2
程序2:
MAIN:MOVTMOD,#02H
LOOP1:MOVR2,#05H
LOOP:MOVTH0,#38H
MOVTL0,#38H
SETBTR0
JNBTF0,L1
CLRTR0
DJNZR2,L2
CPLP1.0
SJMPLOOP1
19、以中断方式设计单片机秒、分脉冲发生器,假定P1.0每
秒产生一个机器周期的正脉冲,P1.1每分钟产生一个机器周
期的正脉冲。
解:1S=10ms×64H=10ms×100
1min=1S×64H=1s×100
设:fosc=12MHzt=0.01S=10ms
10×10
-3
=(2
12
-X)×12/(12×10
6
)
X=55536=D8F0H
ORG0000H
AJMPMAIN
ORG000BH
AJMPINSER
ORG0100H
MAIN:MOVR0,#00H
MOVR1,#00H
MOVTMOD,#01H
MOVTH0,#0D8H
MOVTL0,#0F0H
SETBEA
SETBET0
SETBTR0
CLRC
LOOP:AJMPLOOP
ORG0200H
INSER:MOVTH0,#0D8H
MOVTL0,#0F0H
INCR0
MOVA,#64H
SUBBA,R0
JNZL1
CLRP1.0;到1S发一个正脉冲
SETBP1.0
CLRP1.0
MOVR0,#00H
INCR1
MOVA,#3CH
SUBBA,R1
JNZL1;到1min发一个正脉冲
CLRP1.1
SETBP1.1
CLRP1.1
MOVR1,#00H
L1:RETI
20、编程实现在P1.0引脚接一驱动放大电路驱动扬声器,利
用T1产生1000Hz的音频信号从扬声器输出。设f
OSC
=12MHz。
解:1000Hz信号的周期为1ms,即要求每500μs,P1.0变反一次,使用
T1模式1
定时初值:X==65036=FE0CH
ORG0000H
AJMPMAIN
ORG001BH
AJMPDSHI
ORG0030H
MAIN:MOVTMOD,#10H
MOVTH1,#0FEH
MOVTL1,#0CH
SETBTR0
SETBEA
SETBET1
HERE:SJMPHERE
中断服务程序:
DSHI:MOVTH1,#0FEH
MOVTL1,#0CH
CPLP1.0
RETI