单片机复习材料(13)
发布时间:2021-06-05
发布时间:2021-06-05
例8-3 设甲、乙两机进行通信,波特率为2400,晶振均采用6MHz。甲机将外部数据存储器4000H~40FFH单元内容向乙机发送,发送数据之前将数据块长度发给乙机,当数据发送完向乙机发送一个累加校验和。乙机接收数据进行累加和校验,如果和发送方的累加和一致,发数据“0”,以示接受正确;如果不一致,发数据FFH,甲方再重发,编出程序。 解(1)计算初T1值计数
串行口采用方式1,T1采用方式2,取SMOD=0 2400=1/32*6*106/(12*(256-X) 得X=249.5=FAH。
(2)约定R6作为数据长度计数器,计数256字节。采用减1计数,初值取0,R5作为累加和寄存器。 甲机发送程序如下:
TRT:MOV TMOD,#20H AJMP L1 MOV R5,#00H MOV TH1,#0FAH L2:MOVX A,@DPTR L6:JBC TI,L5 MOV TL1,#0FAH MOV SBUF,A AJMP L6 SETB TR1 ADD A,R5 L5:JBC RI,L7 MOV SCON,#50H MOV R5,A AJMP L5 PRT:MOV DPTR,#4000H INC DPTR L7:MOV A,SBUF MOV R6,#00H L4:JBC TI,L3 JZ L8 MOV R5,#00H AJMP L4 AJMP RPT MOV SBUF,R6 L3:DJNZ R6,L2 L8:RET L1:JBC T1,L2 MOV SBUF,R5 (3)乙机接收程序
乙机接收甲机发送的数据,并写入以4000H为首址的外部数据存储器中,首先接收数据长度接着接收数据;当接收256字节后,接收校验码,进行累加和校验,数据传送结束时,向甲机发送一个字节,表示传送 正确或出错。
XRL A, R5 RSU:MOV TMOD, #20H WTD:JBC R1, L2
MOV TH1, #0FAH AJMP WTD MOV R5, #00H MOV TL1,#0FAH JZ L6 L2:MOV A, SBUF SETB TR1 MOVX @DPTR, A MOV SBUF, #0FFH MOV SCON, #50H INC DPTR L8:JBC T1, L7
ADD A, R5 AJMP L8 RPT:MOV DPTR, #4000H
MOV R5, A L0:JBC R1, L1 L7:AJMP RPT
AJMP L0 DJNZ R6, WTD L6:MOV SBUF, #00H L1:MOV A, SBUF L5:JBC RI, L4 L9:JBC T1, L10
MOV R6, A AJMP L5 AJMP L9 MOV R5, #00H L4:MOV A, SBUF L10:RET 8.4利用串行通信方式0和串入并出移位寄存器74LS164展输出接口,接8个数码管,使内部数据存储器58H~5FH单元的内容依次显示在8个数码管上。数码管为共阳极,字型码“0”~“F”列在表TBA中,58H~57H单元的内容均为OxH。 解:
ORG 0050H DJZN R7, DLO DLO: MOV A, @R0 SETB P3.3 CLR P3.3 MOVC A,@A+DPTR MOV SCON, #0 SJMP $ MOV SBUF, A MOV R7, #08H TBA: DB 0C0H,0F9H,0A4H,B0H,99H,92H JNB TI, $ MOV R0, #5FH DB 82H,0F8H,80H,90H,83H,83H,0C6H CLR TI MOV DPTR, #TBA DB 0A1H,86H,84H,0FFH,0BFH DEC R0