单片机 > 单片机程序设计 > 详情

为网友解答的51单片机波特率计算习题

发布时间:2022-07-04 发布时间:
|


【第1题】

已知51单片机串行通信口在串口方式1,波特率为9600bps,

系统晶振频率为11.0592MHZ,求TL1和TH1中装入的数值是多少?

【答】:

方式1是16位计数器, 2^16=65536d

当SMOD取0,波特率=F/[32x12x(65536-N)],

预装值N=256-F/(波特率x32x12)=65536-11059200/(9600x32x12)=65533d=FFFDh

TH1←0FFh, TL1←0FDh

=======================================

【第2题】

已知51单片机使用晶振为11.0592MHZ,用T1的工作方式2作波特率发生器,

串口通信的波特率为9600bps,要求:

1.写出T1定时器的初值计算过程,

2.写出程序。

【答】:

1.T1定时器的初值计算:

方式2是8位计数器,

波特率=(2的SMOD次方x F)/(32x12x(256-N),

SMOD取0(波特率不倍增),

N是置入定时器TH1的时间常数初值,F是晶振频率,

当SMOD取0,波特率=F/(32x12x(256-N)),

计数初装值N=256-F/(波特率x32x12)=256-11059200/(9600x32x12)=253d=0FDh

2.汇编语言源程序:

INIT: MOV TMOD,#20H ;定时器T1工作方式2

MOV TH1,#0FDH ;置入时间常数

MOV TL1,#0FDH

SETB TR1 ;启动T1

MOV PCON,#00H ;SMOD=0,波特率不倍增

MOV SCON, #50H ;串行口工作方式1

=======================================

【第3题】

有a、b两台51单片机,使用晶振不相同,Fa=11.0592MHz,Fb=12MHz,

a与b用T1方式2作串行通信,波特率为2400bps,a,b各自的初装值是多少?

答:

方式2是8位计数器,

SMOD取0(波特率不倍增),波特率=F/(32x12x(256-N)),

计数初装值N=256-F/(波特率x32x12)

a的计数初装值Na=256-11059200/(2400x32x12)≈244d=0F4h

b的计数初装值Nb=256-12000000/(2400x32x12)≈243d=0F3h

=======================================

【第4题】

80C51串行口使用定时器T1作波特率发生器,工作方式2即( )方式。

假定晶振频率为12MHZ,则可设定的波特率范围为( )~( ),为什么?

【答】:

方式2即(8位计数器,最大值=2的8次方=256),

可设定的波特率范围为(122bps)~(62500bps),理由如下:

波特率=(2的SMOD次方x F)/(32x12x(256-N),

F=12000000Hz是晶振频率,N是8位计数器TH1,TL1的初装值,

SMOD是特殊功能寄存器PCON的第7位,取1或0(波特率倍增、或不倍增),

当SMOD=0,N=0, 波特率=(1x12000000)/(32x12x(256-0)=122bps

当SMOD=1,N=255, 波特率=(2x12000000)/(32x12x(256-255)=62500bps

.

补充知识:

顾及单片机与PC机串行通信, 常用波特率见下表:

晶振频率 SMOD1 TH1=TL1初装值 波特率(取整数)

--------------------------------------------------

12MHZ 0 204d即CCh 600bps

12MHZ 1 204d即CCh 1200bps

12MHZ 0 243即F3h 2400bps

12MHZ 1 243即F3h 4800bps



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
PIC单片机基础知识之二