?? 單片機數據發送2.asm
字號:
;本程序收發數據采用查詢方式
ORG 0000H
AJMP START
ORG 0030H
START:MOV 30H,#0C0H ;傳送的16個數據(0~F)
MOV 31H,#0F9H
MOV 32H,#0A4H
MOV 33H,#0B0H
MOV 34H,#99H
MOV 35H,#92H
MOV 36H,#82H
MOV 37H,#0F8H
MOV 38H,#80H
MOV 39H,#90H
MOV 3AH,#88H
MOV 3BH,#83H
MOV 3CH,#0C6H
MOV 3DH,#0A1H
MOV 3EH,#086H
MOV 3FH,#08EH
MOV TMOD,#20H ;定時器1置為方式2
MOV TH1,#0F4H ;裝載定時器初值,波特率2400
MOV TL1,#0F4H
CLR EA
SETB TR1 ;啟動定時器
MOV PCON,#00H
MOV SCON,#50H ;設定串口方式1,且準備接收應答信號
LOOP1:MOV SBUF,#0E1H ;發聯絡信號
JNB TI,$ ;等待一幀發送完畢
CLR TI ;允許再發送
JNB RI,$ ;等待2號機的應答信號
CLR RI ;允許再接收
MOV A,SBUF ;2號機應答后,瀆至A
XRL A,#0E2H ;判斷2號機是否準備完畢
JNZ LOOP1 ;2號機未準備好,繼續聯絡
LOOP2:MOV R0,#30H ;2號機準備好,設數據塊指針初值
MOV R7,#10H ;設定數據塊長度初值
MOV R6,#00H ;清校驗和單元
LOOP3:MOV SBUF,@R0 ;發送一個數據字節
MOV A,R6
ADD A,@R0 ;求校驗和
MOV R6,A ;保存校驗和
INC R0
JNB TI,$
CLR TI
DJNZ R7,LOOP3 ;整個數據塊是否發送完畢
MOV SBUF,R6 ;發送校驗和
JNB TI,$
CLR TI
JNB RI,$ ;等待2號機的應答信號
CLR RI
MOV A,SBUF ;2號機應答,讀至A
JNZ LOOP2 ;2號機應答”錯誤“,轉重新發送
RET ;2號機應答”正確“,返回
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -