方式0帧格式
D0 D1 D2 D3 D4 D5 D6 D7
方式0波特率=Fosc/12 方式1帧格式 起始位 D0 D1 D2 D3 D4 D5 D6 D7 停止方式1波特率=2SMOD定时器T1的溢出率/32 方式2和方式3帧格式
起始位 D0 D1 D2 D3 D4 D5 D6 D7 D8 停止
方式2的波特率=2MOD*Fosc/64
方式3的波特率=2MOD *定时器T1的溢出率/32
7.5 假定串行口发送的字符格式为1个起始位,8个数据位,1个奇校验位,1个停止位,请画出传送字符“A”的帧格式?
0 1 0 0 0 0 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的波特率=2MOD *Fosc/(256-X)*12*32
故计数器初值为X=2MOD *Fosc/12*32*波特率 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
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
SMOD=1
SCON=40H
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 PUSH PUSH SETB SETB CLR INC MOVX MOV MOV MOV POP POP POP POP CLR CLR RETURN: RETI END
接收程序:
ORG LJMP ORG LJMP ORG MAIN: MOV MOV MOV MOV MOV SETB MOV MOV MOV SETB DPL PSW ACC 0D4H 0D3H TI DPTR
A,@DPTR C,P TB8,C SBUF,A ACC PSW DPL DPH 0D4H 0D3H 0000H
MAIN 0023H RRES 0100H SP,#60H TMOD,#20H TH1,#0F3H TL1,#0F3H R2,#0FFH TR1
DPTR,#3000H 87H,#80H SCON,#0D0H 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