4.答:由于确认1次负跳变要花2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为系统振荡器频率的1/24。
5.答:定时器/计数器T0在计数和定时工作完成后,均采用中断方式工作。除了第一次计数工作方式设置在主程序完成外,后面的定时或计数工作方式分别在中断程序完成,用一标志位识别下一轮定时器/计数器T0的工作方式。参考程序如下:
ORG 0000H LJMP MAIN ORG 000BH LJMP IT0P
MAIN: MOV TMOD,#06H ;定时器/计数器T0为计数方式2
MOV TL0,#156 MOV TH0,#156 SETB GATE SETB TR0 SETB ET0 SETB EA CLR
F0
;打开计数门 ;启动T0,开始计数
;允许T0中断
;计数100个脉冲的初值赋值
;CPU开中断
;设置下一轮为定时方式的标志位
WAIT: AJMP WAIT IT0P: CLR
JB
EA
;CPU关中断
;F0=1,转计数方式设置
F0,COUNT
MOV TMOD,#00H ;定时器/计数器T0为定时方式0 MOV TH0,#0FEH MOV TL0,#0CH SETB EA RETI
;定时1ms初值赋值
COUNT: MOV TMOD,#06H
MOV TL0,#156
SETB EA RETI
6. 答:定时器/计数器的工作方式2具有自动恢复初值的特点,适用于精确定时,比如波特率的产生。
7. 答:根据题意,从P1.0输出的矩形脉冲的高低电平的时间为10:1,则高低电平的时间分别为363.63μs和36.37μs。如果系统采用6MHz晶振的话,Tcy=2μs,因此高低电平输出取整,则约为364μs和36μs。参考程序如下:
ORG 0000H
LJMP MAIN ORG 000BH LJMP IT0P
MAIN: MOV TMOD,#02H ;定时器/计数器T0为定时方式2
MOV TL0,#4AH SETB TR0 SETB ET0 SETB EA SETB P1.0
;定时364μs初值赋值 ;启动T0,开始计数
;允许T0中断
;CPU开中断
WAIT:AJMP WAIT IT0P: CLR
EA
;关中断
CLR P1.0
MOV R0,#9
DLY: DJNZ R0,DLY
;延时36μs
MOV TL0,#4AH SETB P1.0 SETB EA RETI
;定时364μs初值赋值
8. 答:方法1,在第一个定时器的中断程序里关闭本定时器的中断程序,设置和打开
另一个定时器;在另一个定时器的中断程序中关闭本定时中断,设置和打开另一个定时器。这种方式的定时时间为两个定时器定时时间的和。
方法2,一个作为定时器,在定时中断后产生一个外部计数脉冲(比如由P1.0接INT0产生),另一个定时器工作在计数方式。这样两个定时器的定时时间为一个定时器的定时时间乘以另一个定时器的计数值。
9. 答:由TMOD寄存器的D6位“C/T*”来控制定时器T1的启动和关闭。 10. 答:采用方式1定时工作方式。最大脉冲宽度为131.072ms。
11. 答:将P1.1的输入脉冲接入INT0,即使用T0计数器完成对P1.1口的脉冲计数。参考程序如下:
ORG 0000H
LJMP MAIN ORG 000BH LJMP IT0P
P1.0,MAIN
;定时器/计数器T0为计数方式1 ;启动T0,开始计数
;允许T0中断
MAIN: JNB
MOV TMOD,#05H
SETB TR0 SETB ET0 SETB EA
;CPU开中断
WAIT: JB
CLR CLR
P1.2,WAIT EA TR0
MOV R1,TH0 MOV R0,TL0 AJMP $
R2
IT0P: INC
RETI
12. 答:THx与TLx (x=0,1)是由特殊功能寄存器构成的计数器,其内容可以随时用
指令更改,更改后的新值是立即刷新。但在读THx、TLx的值时,应该先读THx值,后读TLx,再读THx。若两次读得THx相同,则可确定读得的内容正确。若前后两次读得的THx有变化,再重复上述过程。
第7章 AT89S51的串行口
参考答案
1.答:方式1。 2.答:相等的。
3.答:A.对;B.对;C.错;D.对;E.对。 4.答:C 5.答:C
6.答:当接收方检测到RXD端从1到0的跳变时就启动检测器,接收的值是3次连续采样,取其中2次相同的值,以确认是否是真正的起始位的开始,这样能较好地消除干扰引起的影响,以保证可靠无误的开始接受数据。
7.答:串行口有4种工作方式:方式0、方式1、方式2、方式3;有3种帧格式,方式2和3具有相同的帧格式;方式0的发送和接收都以fosc/12为固定波特率,
方式1的波特率=2SMOD/32×定时器T1的溢出率 方式2的波特率=2SMOD/64×fosc
方式3的波特率=2SMOD/32×定时器T1的溢出率 8.答:字符“B”的ASCII码为“42H”,帧格式如下:
9.答:因为定时器/计数器在方式2下,初值可以自动重装,这样在做串口波特率发生器设置时,就避免了执行重装参数的指令所带来的时间误差。
设定时器T1方式2的初值为X,计算初值X可采用如下公式: