?? m31pc.asm
字號:
;/*********************************************************************
;*這是在51系列單片機上運行的程序,文件名為m31pc.asm
;*功能:51系列單片機作為分站與上位機(PC機或工控機)通訊,
;* 帶RS232接口 ,T1作波特率發(fā)生器, 波特率為1200,
;* 通訊靠串行中斷服務(wù)程序?qū)崿F(xiàn),與上位機通訊的主要流程為:
;* 中斷接受上位機發(fā)來的地址信息,看是否是給本站發(fā)來的,
;* 若是, 接受后續(xù)的15個字節(jié),然后發(fā)送43個字節(jié)。若不是,
;* 則不予理睬。 配套上位機程序為xsa2.c。
;**********************************************************************/
ORG 0000H
STAT:AJMP MAIN ;復(fù)位入口
ORG 000BH
AJMP TIME
ORG 0023H
AJMP SIO1
TIME:MOV TL0,#0F0H ;定時器中斷
MOV TH0,#0D8H
PUSH ACC
PUSH PSW
MOV PSW,#0
MOV R1,#16H
MOV A,@R1
ADD A,#01H
DA A
MOV @R1,A
POP PSW
POP ACC
RETI
MAIN:MOV SP,#28H ;主程序
MOV PSW,#0
MOV 4FH,#20H
MOV 4EH,#10H
MOV 4DH,#20H
MOV 4CH,#60H
MOV TMOD,#25H
MOV TL0,#0F0H
MOV TH0,#0D8H
SETB PS
SETB ET0
SETB EA
SETB TR0
MOV PCON,#00H
MOV TH1,#0F3H ;6mhz, smod=0,600== e6;1200==0xf3
MOV TL1,#0F3H
SETB TR1
MOV SCON,#0F0H
SETB ES
LCALL SDATA
HERE:SETB RS0
CLR RS1
NOP
NOP
NOP
LJMP HERE
SIO1:PUSH ACC ;串行口中斷
PUSH PSW
PUSH DPH
PUSH DPL
JNB RI,TX
JNB SM2,NO0
MOV A,SBUF
CJNE A,#01H,NOADS
CLR SM2
NOADS:CLR RI
POP DPL
POP DPH
POP PSW
POP ACC
RETI
NO0: MOV A,SBUF
MOV DPH,4FH
MOV DPL,4EH
MOVX @DPTR,A
INC DPTR
MOV 4FH,DPH
MOV 4EH,DPL
SJMP TX3
TX: JNB TI,TX2
TX1: MOV DPH,4DH
MOV DPL,4CH
MOVX A,@DPTR
MOV SBUF,A
INC DPTR
MOV 4DH,DPH
MOV 4CH,DPL
MOV A,#8AH ;42
CJNE A,DPL,TX2
NOP
MOV 4DH,#20H
MOV 4CH,#60H
MOV SCON,#0F0H
LOO1:JNB TI,LOO1
TX2: CLR RI
CLR TI
POP DPL
POP DPH
POP PSW
POP ACC
RETI
TX3: MOV A,#1FH ;15
CJNE A,DPL,TX2
MOV 4FH,#20H
MOV 4EH,#10H
MOV SCON,#0E8H
MOV SBUF,#0FFH
CLR TB8
CLR SM2
SJMP TX2
SDATA:MOV DPTR,#2060H ;發(fā)送數(shù)據(jù)區(qū)初始化
MOV R0,#42
MOV A,#01
SD: MOVX @DPTR,A
INC DPTR
INC A
DJNZ R0,SD
RET
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -