本帖最后由 Kxuan163 于 2020-12-18 20:24 编辑
【第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
|