📄 ws2051.asm
字号:
;*************************
W14 EQU 0050H
W15 EQU 0051H
TEMP_D EQU 0052H
DATE EQU 0053H
WR EQU 0054H
;*************************
ORG 0000
LJMP TEST_CPU ;
ORG 0003H
PUSH ACC
LJMP EXT0
ORG 000BH
PUSH ACC
SJMP TM0_INT
ORG 0023H
PUSH ACC
LJMP RXTX
;***********************
TM0_INT: CLR P3.3
NOP
NOP
NOP
NOP
NOP
NOP
SETB P3.3
TINT0: POP ACC
RETI
;***********************
TEST_CPU: CLR EA ;
MOV A,#55H ;
ADD A,#0AAH ;
CJNE A,#0FFH,TEST_CPU ;
MOV A,#0AAH ;
CPL A ;
CJNE A,#55H,TEST_CPU ;
MOV A,#0AAH ;
MOV B,#55H ;
MUL AB ;
CJNE A,#72H,TEST_CPU ;
MOV A,#0AAH ;
MOV B,#55H ;
DIV AB ;
CJNE A,#02H,TEST_CPU ;
MOV A,#0FFH ;
MOV B,#03H ;
DIV AB ;
CJNE A,#55H,TEST_CPU ;
;*****************
MOV W14,#00H
MOV W15,#00H
W_K0: NOP
NOP
NOP
DJNZ W14,W_K0
DJNZ W15,W_K0
CLR EA
MOV P1,#0FFH
MOV P3,#0FFH
MOV PSW,#00H ;SELECT THE ZERO REGISTOR PART
MOV SP,#60H ;
MOV TMOD,#22H ;AND THE STATE IS RECEIVE
MOV SCON,#0D0H ;
MOV TH1,#0E8H ;The Rate of RS232 is #A0-->300b/s,#D0-->600b/s,#E8-->1200b/s
MOV TL1,#0E8H ;#F4-->2400b/s,#FA-->4800b/s,#FD-->9600b/s
MOV IE,#93H ;RX/TX+INT0
SETB TR0
SETB TR1
SETB IT0
;************************************
MA_0: NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
LJMP MA_0
;**************************
ANSWER: CLR P3.4
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
SETB P3.4
RET
;**************************
PRE_CL0: MOV W14,#00H
CLR P3.7
MOV P1,TEMP_D
PRE1: JNB P3.4,PRE2
NOP
DJNZ W14,PRE1
PRE2: SETB P3.7
PRE_RET: MOV TEMP_D,#00H
MOV P1,#0FFH
RET
;**************************
EXT0: NOP
MOV TEMP_D,P1
CLR P3.4
NOP
NOP
NOP
NOP
NOP
NOP
SETB P3.4
MOV WR,#08H
MOV B,TEMP_D
MOV DATE,#00H
ELOP1: MOV A,B
RLC A
MOV B,A
MOV A,DATE
ADDC A,#00H
MOV DATE,A
DJNZ WR,ELOP1
CLR TB8
MOV A,DATE
RRC A
JNC JUP2
SETB TB8
JUP2: MOV SBUF,TEMP_D
MOV TEMP_D,#00H
MOV P1,#0FFH
POP ACC
RETI
;******************************
RXTX: JNB RI,SEND
CLR RI
MOV TEMP_D,SBUF
CALL PRE_CL0
SJMP FINISH
SEND: JNB TI,FINISH
CLR TI
LCALL ANSWER
FINISH: POP ACC
RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -