✅ 操作成功!

1s等于多少ms

发布时间:2023-06-04 作者:admin 来源:文学

1s等于多少ms

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

👁️ 阅读量:0