?? u1_2.asm
字號:
;===========================================================
;無線模塊調試程序:U1波特率9600,U1中40H-43H存儲數據段
;一秒鐘后U1把數據通過串行通信傳至U2
;雙機通信u1LED2.4.6.8(點亮個數)顯示,U2進行1.3.5.7的顯示
;系統采用的是一應一答的方式
;很好的抗干擾性!糾錯能力也較強!
;============================================================
ORG 0
LJMP START
ORG 0BH ;T0中斷向量
LJMP TS
ORG 23H ;串行中斷向量
LJMP TII
ORG 30H
START: MOV 40H, #01H;數據地址賦值
MOV 41H, #07H
MOV 42H, #1FH
MOV 43H, #7FH
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
SETB TR0
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;錯誤發送代碼90
RETI
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -