📄 m31pc.asm
字号:
;/*********************************************************************
;*这是在51系列单片机上运行的程序,文件名为m31pc.asm
;*功能:51系列单片机作为分站与上位机(PC机或工控机)通讯,
;* 带RS232接口 ,T1作波特率发生器, 波特率为1200,
;* 通讯靠串行中断服务程序实现,与上位机通讯的主要流程为:
;* 中断接受上位机发来的地址信息,看是否是给本站发来的,
;* 若是, 接受后续的15个字节,然后发送43个字节。若不是,
;* 则不予理睬。 配套上位机程序为xsa2.c。
;**********************************************************************/
ORG 0000H
STAT:AJMP MAIN ;复位入口
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 ;发送数据区初始化
MOV R0,#42
MOV A,#01
SD: MOVX @DPTR,A
INC DPTR
INC A
DJNZ R0,SD
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -