单片机课后练习答案

内容发布更新时间 : 2024/4/23 21:29:13星期一 下面是文章的全部内容请认真阅读。

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

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

(A)MOVC指令 (B)MOVX指令(C)MOV指令 (D)XCHD指令 D1 D2 D3 D4 D5 D6 D7 D0 停止

起始位

文本框: D1

D1 D2 D3 D4 D5 D6 D7 D0 停止起始位 D8 文本框: D1

D1 D2 D3 D4 D5 D6 D7 D0

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)固定的,为Fosc/32。

(B)固定的,为Fosc/16。

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

(D)固定的,为Fosc/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

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4 ceshi