(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