?? 單片機(jī)數(shù)據(jù)接收2.asm
字號:
;本程序收發(fā)數(shù)據(jù)采用查詢方式
ORG 0000H
AJMP START
ORG 0030H
START:MOV TMOD,#20H ;定時器1置為方式2
MOV TH1,#0F4H ;裝載定時器初值,波特率2400
MOV TL1,#0F4H
CLR EA
SETB TR1 ;啟動定時器
MOV PCON,#00H
MOV SCON,#50H ;設(shè)定串口方式1,且準(zhǔn)備接收
LOOP1:JNB RI,$ ;等待1號機(jī)的聯(lián)絡(luò)信號
CLR RI
MOV A,SBUF ;收到1號機(jī)信號
XRL A,#0E1H ;判是否為1號機(jī)聯(lián)絡(luò)信號
JNZ LOOP1 ;不是一號機(jī)聯(lián)絡(luò)信號,再等待
MOV SBUF,#0E2H ;是1號機(jī)聯(lián)絡(luò)信號,發(fā)應(yīng)答信號
JNB TI,$
CLR TI
MOV R0,#30H ;設(shè)定數(shù)據(jù)快地址指針初值
MOV R7,#10H ;設(shè)定數(shù)據(jù)塊長度初值
MOV R6,#00H ;清校驗(yàn)和單元
LOOP2:JNB RI,$
CLR RI
MOV A,SBUF
MOV @R0,A ;接收數(shù)據(jù)轉(zhuǎn)儲
INC R0
ADD A,R6 ;求校驗(yàn)和
MOV R6,A
DJNZ R7,LOOP2 ;判斷數(shù)據(jù)塊是否接收完畢
JNB RI,$ ;完畢,接收1號機(jī)發(fā)來的校驗(yàn)和
CLR RI
MOV A,SBUF
XRL A,R6 ;比較校驗(yàn)和
JZ END1 ;校驗(yàn)和相等,跳至發(fā)正確標(biāo)志
MOV SBUF,#0FFH ;校驗(yàn)和不相等,發(fā)錯誤標(biāo)志
JNB TI,$ ;轉(zhuǎn)重新接收
CLR TI
SJMP LOOP2
END1: MOV SBUF,#00H
JS1: MOV R0,#30H ;顯示接到的數(shù)據(jù)
JS3: MOV A,@R0
MOV P0,A
ACALL DELAY
INC R0
MOV A,R0
CJNE A,#40H,JS2
AJMP JS1
JS2: AJMP JS3
DELAY: MOV R4,#04H
D1: MOV R7,#0FFH
D2: MOV R6,#0FFH
DJNZ R6,$
DJNZ R7,D2
DJNZ R4,D1
RET
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -