📄 u2_2.asm
字号:
;===========================================================
;无线模块调试程序:U2波特率9600,U2中40H-43H存储数据段
;U2接受数据后传送数据给U1
;双机通信u1LED2.4.6.8(点亮个数)显示,U2LED进行1.3.5.7的;显示
;系统采用的是一应一答的方式
;很好的抗干扰性!纠错能力也较强!
;============================================================
ORG 0
LJMP START
ORG 0BH ;T0中断向量
LJMP TS
ORG 23H ;串行中断向量
LJMP TII
ORG 30H
START: MOV 40H, #03H;数据地址赋值
MOV 41H, #0FH
MOV 42H, #3FH
MOV 43H, #0FFH
MOV R3, #0AAH;;;;接收正确发送AA。
MOV R4, #90H;;;;错误发送90H
MOV R0,#40H
MOV R1,#04H
MOV SP,#70H
MOV TMOD,#21H ;T1方式2,T0方式0,定时
MOV PCON,#00H ;波特率不加倍
MOV TH1,#0FDH ;对于11.0592MHz的晶振,波特率为9600
MOV TL1,#0FDH
SETB TR1
MOV SCON,#50H;串口工作在方式1,允许接收
MOV TH0,#4CH;11.0592MHz晶振下的50ms定时常数
MOV TL0,#0
MOV R2,#20 ;1秒钟计数初值
SETB ET0
SETB ES
SETB EA
WAIT: SJMP $
TS: MOV TH0,#4CH
MOV TL0,#0
DJNZ R2,TR_END
MOV R2,#20
MOV A,@R0
MOV SBUF,A
RETI
TII: JNB TI,RII
CLR TI
TR_END: RETI
RII: JNB RI,TR_END
CLR RI
MOV A,SBUF
MOV 50H,A
CJNE A,#0AAH,L1;接收AA正确返回
LJMP RIGHT
L1: CJNE A,#90H, L2;90为错误,送上次R0值给SBUF
LJMP ERR
L2: CPL A
MOV P1,A
SETB TR0
MOV SBUF,R3 ;数据正确发送80H
RETI
RIGHT: INC R0
CLR TR0
DJNZ R1, TR_END
MOV R0, #40H
MOV R1, #04
RETI
ERR: MOV SBUF,@R0;处理发送错误,再次发送上次r0值
RETI
ERR0: MOV SBUF,R4;错误发送代码90h
RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -