当前位置:文档之家› 串行口习题答案.pdf

串行口习题答案.pdf

串行口习题答案.pdf
串行口习题答案.pdf

MCS-51的串行口

7.3 帧格式为1个起始位,8个数据位和1个停止位的异步串行通信方式是方式(1)。

7.4 串行口有几种工作方式?有几种帧格式?各种工作方式的波特率如何确定?

答:串行口有四种工作方式:方式0、方式1、方式2、方式3

有三种帧格式:

方式0帧格式D1 D2 D3 D4 D5 D6 D7 D0

方式0波特率=Fosc/12

方式1帧格式

方式1波特率=2定时器T1的溢出率/32 SMOD

起始位

D0

停止

D7

D6

D5

D4

D3

D2

D1

方式2和方式3帧格式D1 D2 D3 D4 D5 D6 D7 D0 停止起始位D8

方式2的波特率=2*Fosc/64 MOD

方式3的波特率=2 *定时器T1的溢出率/32 MOD

7.5 假定串行口发送的字符格式为1个起始位,8个数据位,1个奇校验位,1个停止位,请画

出传送字符“A”的帧格式?0 0 0 0 0 1 0 1 0 1 1

7.6 判断下列说法是否正确

(A)串行口通行的第9数据位的功能可由用户定义。(T)

(B)发送数据的第9数据位的内容在SCON寄存器的TB8位中预先准备好的。(T)

(C)串行通讯帧发送时,指令把TB8位的状态送入发送SBUF中。(F)

(D)串行通讯接收到的第9位数据送SCON寄存器的RB8中保存。(T)

(E)串行口方式1的波特率是口变的,通过定时器/计数器T1的溢出率设定。(T)

7.7通过串行口发送或接收数据时,在程序中应使用:(C)

(A)MOVC指令(B)MOVX指令(C)MOV指令(D)XCHD指令

7.8 为什么定时器/计数器T1用作串行口波特率发生器时,常采用方式2?若已知时钟频率,通讯波特率,如何计算器初值?

答:定时器T1工作方式2是一种自动重装方式,无需在中断服务程序中送数,没有由于中断引起的误差。定时器工作在方式2是一种既省事又精确的产生串行口波特率的方法。设定时器T1方式2的初值为X,则有:

定时器T1的溢出率=计数速率/(256-X)=Fosc/(256-X)*12

则方式2的波特率=2 *F/(256-X)*12*32 MODosc

故计数器初值为X=2 *F/12*32*波特率MODosc

7.9 串行口工作方式1的波特率是:C

(A)固定的,为F osc/32。

(B)固定的,为F osc/16。

(C)可变得,通过定时器/计数器T1的溢出率设定。

(D)固定的,为F osc/64。

7.10 在串行通讯中,收发双方对波特率的设定应该是相同的。

7.11 若晶体振荡器为11.0592MHZ,串行口工作于方式1,波特率为4800b/s,写出用T1作为波特率发生器的方式控制字和计数初值。

答:方式字为01000000。Fosc=11.0592MHz SMOD=1 SCON=40H

X=65536-11.0592*2/(384*4800)

=65524=0FFF4H

ORG 0000H MOV SCON,#40H

MOV PCON,#80H MOV TMOD,#10H MOV TL1,#0F4H MOV TH1,#0FFH END

7.14使用8031的串行口按工作方式3进行串行口数据通讯,假定波特率为1200b/s,第9数据位作奇偶校验位,以中断方式传送数据,请编写通讯程序。

方法一:中断方式

发送程序

ORG 0000H LJMP MAIN ORG 0023H LJMP SSEND ORG 0100H

MAIN: MOV SP,#60H MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H MOV

R2,#0FFH MOV 87H,#80H MOV SCON,#0C0H MOV DPTR,#2000H SETB TR1 SETB ES SETB EA SEND: MOVX A,@DPTR MOV C,P MOV TB8,C MOV SBUF,A HERE: AJMP HERE SSEND: DJNZ R2,SEND1 AJMP RETURN SEND1: PUSH DPH PUSH DPL PUSH PSW PUSH ACC SETB 0D4H SETB 0D3H CLR TI INC DPTR MOVX A,@DPTR MOV C,P MOV TB8,C MOV SBUF,A POP ACC POP PSW POP DPL POP DPH CLR 0D4H CLR 0D3H RETURN: RETI END

接收程序:

ORG 0000H LJMP MAIN ORG 0023H LJMP RRES ORG 0100H

MAIN: MOV SP,#60H MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H MOV

R2,#0FFH SETB TR1 MOV DPTR,#3000H MOV 87H,#80H MOV SCON,#0D0H SETB ES SETB EA SJMP $ RRES: DJNZ R2,RES AJMP RETURN RES: CLR RI MOV A,SBUF MOV C,P JNC L1 JNB RB8,ERP AJMP L2 L1: JB RB8,ERP L2: MOVX @DPTR,A INC DPTR AJMP RETURN ERP: SETB P1.0 CPL P1.0 RETURN: RETI END

查询方式:

发送程序

ORG 0000H MAIN: MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H MOV 87H,#80H MOV SCON,#0C0H MOV DPTR,#2000H MOV R2,#0FFH SETB TR1 SEND: MOVX

A,@DPTR MOV C,P MOV TB8,C

MOV SBUF,A STI: JNB TI,STI CLR TI INC DPTR DJNZ R2,SEND END

接收程序:

ORG 0000H MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H SETB TR1 MOV DPTR,#3000H MOV 87H,#80H MOV SCON,#0D0H MOV R2,#0FFH RES: JNB RI,RES CLR RI MOV A,SBUF MOV C,P JNC L1 JNB RB8,ERP AJMP L2 L1: JB RB8,ERP L2: MOVX

@DPTR,A INC DPTR DJNZ R2,RES ERP: SETB P1.0 CPL P1.0 END

7.15 某8031串行口,传送数据的帧格式为1个起始位(0),7个数据位,1个偶校验位和1个停止位(1)组成。当该串行口每分钟传送1800个字符时,试计算出波特率。

答:波特率=1800*(1+7+1+1)/60=300b/s

7.16 为什么MCS-51串行口的方式0帧格式没有起始位(0)和停止位(1)?

答:因为方式0为同步移位寄存器输入输出方式,不需要起始和停止位,8位数据为1帧,依次移入输入式或输出移位寄存器。

相关主题
文本预览
相关文档 最新文档