📄 samsung.asm
字号:
MOV A,SBUF
CJNE A,#07DH,RX_7D
SETB F0 ;接收到7D,不作处理,侍下一个数据处理
AJMP EXIT_RX
RX_DATA: MOV @R0,A
CLR C
INC R0
CJNE R0,#000H,EXIT_RX
MOV R0,#40H
CLR ES
EXIT_RX: CLR RI ;接收完把中断关等待下一中断到来
POP ACC
RETI
RX_7D: JNB F0,RX_DATA ;接收7D,7E,7F处理
ORL A,#70H
CLR F0
SJMP RX_DATA
;----------------------256 个 END 的计算------------------
end_a2000: MOV R0,#80H
A2000_CODE: MOV A,#0H
LCALL END_CODE
DJNZ R0,A2000_CODE
RET
;--------------------256个00发送------------
TX_256: MOV R1,#80H
TX_SSS: MOV A,#00H
CLR ES
MOV SBUF,A
WAIT_256: JNB TI,WAIT_256
CLR TI
SETB ES
DJNZ R1,TX_SSS
RET
;------------------------------数据发送部分子程序-----------------------
COM_TX: CLR A
MOVC A,@A+DPTR
CLR ES
MOV SBUF,A
TX_WAIT: JNB TI,TX_WAIT ;等待发送完成
CLR TI
SETB ES
INC DPTR
CJNE A,#07EH,COM_TX
TX_END: RET
;----------------------发送连机指令-----------------------------------
TP_DM: AJMP TX_END_DM_RET
TO_DM: DJNZ 017H,TP_DM
CLR TR1
MOV TH1,#0FAH ;57.6K 38.4K 19,2K
SETB TR1 ;T1打开计时
LCALL DELAY
LCALL DELAY
DM_TX_0: ACALL CLS_DATA
MOV R0,#040H
MOV DPTR,#DM_D1
LCALL COM_TX
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
DM_TX_1: ACALL CLS_DATA
MOV R0,#040H
MOV DPTR,#DM_D1
LCALL COM_TX
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
CLR ES
MOV R0,#43H
CJNE @R0,#07EH,TX_END_DM ;接收是否正确
ACALL CLS_DATA
MOV R0,#040H
MOV DPTR,#DM_D2
LCALL COM_TX
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
CLR ES
MOV R0,#43H
CJNE @R0,#07EH,TX_END_DM ;接收是否正确
ACALL CLS_DATA
MOV R0,#040H
MOV DPTR,#DM_D3
LCALL COM_TX
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
CLR ES
MOV R0,#43H
CJNE @R0,#07EH,TX_END_DM ;接收是否正确
ACALL CLS_DATA
MOV R0,#040H
MOV DPTR,#DM_D4
LCALL COM_TX
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
CLR ES
MOV R0,#030H
TIME_8: LCALL DELAY
DJNZ R0,TIME_8
TX_END_DM: LCALL DELAY
CLR TR1
MOV TH1,#0FFH ;57.6K 38.4K
SETB TR1 ;T1打开计时
MOV 17H,#10H
TX_END_DM_RET: RET
;------------------RAM 发送数据-------------------
COM_TXRAM:
COM_YES: MOV A,@R1
CJNE R1,#40H,CH_7F
tx_da_as: CLR ES
MOV SBUF,A
TX_WAIT_RAM: JNB TI,TX_WAIT_RAM
CLR TI
SETB ES
INC R1
DJNZ R2,COM_YES
RET
CH_7F: CJNE A,#7FH,CH_7E ;7F处理
MOV A,#7DH
CLR ES
MOV SBUF,A
CH_7F_W: JNB TI,CH_7F_W
CLR TI
SETB ES
MOV A,#5FH
SJMP TX_DA_AS
; --------------------
CH_7E: CJNE A,#7EH,CH_7D ;7F处理
MOV A,#7DH
CLR ES
MOV SBUF,A
CH_7E_W: JNB TI,CH_7E_W
CLR TI
SETB ES
MOV A,#5EH
SJMP TX_DA_AS
; ----------------------
CH_7D: CJNE A,#7DH,tx_da_as ;7F处理
MOV A,#7DH
CLR ES
MOV SBUF,A
CH_7D_W: JNB TI,CH_7D_W
CLR TI
SETB ES
MOV A,#5DH
SJMP TX_DA_AS
;-------------------发一个 7E 到手机----------------
TX_7E: MOV A,#7EH
CLR ES
MOV SBUF,A
WAIT_7E: JNB TI,WAIT_7E
CLR TI
SETB ES
RET
;--------------------较验码的产生------------------------------------
END_CODE: MOV B,R6
XRL B,A
MOV DPTR,#D_00 ;高位 R7
MOV A,B
CLR C
RLC A
JNC NEXT
INC DPH
NEXT: PUSH ACC
MOVC A,@A+DPTR
MOV B,R7
XRL B,A
MOV R6,B
POP ACC
INC A
MOVC A,@A+DPTR
MOV R7,A
RET
;-----------------------T0 中断------------------------------
TO_INT: CLR TR0 ;关定时 T0 CPL INT0
MOV TL0,#001H ;从置T0计算器
MOV TH0,#000H
SETB F0
RETI
;-------------------------------串传送------------------R0,原数据;R0目标数据;R2数据长度
INC_ADD: INC R0
INC R1
A_MOV: MOV A,@R0
MOV @R1,A
DJNZ R2,INC_ADD
RET
;----------------R0,原数据;R0目标数据;R2数据长度----
A_INC_ADD: INC R1
A_MOV_DATA: MOV A,R0
MOV @R1,A
DJNZ R2,A_INC_ADD
RET
;----------------------显示中断------------------
PRO: MOV P1,#0FFH
CLR T0
SETB T1
SETB INT1
MOV A,P1
CLR INT1
CLR T1
ANL P1,#00H
RET
;写指令子程序
WI: LCALL PRO
JB ACC.7,WI
CLR T1 ;R/W=0 写
SETB INT1 ;E=1
MOV A,R2
MOV P1,A
CLR INT1 ;E=0
RET
WD: LCALL PRO
JB ACC.7,WD
CLR T1
SETB T0
SETB INT1
MOV A,R2
MOV P1,A
CLR INT1
CLR T0
RET
;循环写数据子程序
WDD: CLR A
MOVC A,@A+DPTR
MOV R2,A
LCALL WD
INC DPTR
DJNZ R3,WDD
RET
WDD_RAM: MOV A,@R0
MOV R2,A
LCALL WD
INC R0
DJNZ R3,WDD_RAM
RET
DELAY: MOV R4,#0f0H
DL1: MOV R5,#0f0H
DL2: DJNZ R5,DL2
DJNZ R4,DL1
RET
CLOCK: MOV R5,#0F0H
CL: DJNZ R5,CL
RET
HEX_ASC: MOV DPTR,#ASCII
MOV R0,#90H
; MOV R1,#045H
MOV A,@R1
RR A
RR A
RR A
RR A
ANL A,#0FH
MOVC A,@A+DPTR
MOV @R0,A
; MOV R1,#045H
MOV A,@R1
ANL A,#0FH
INC R0
MOVC A,@A+DPTR
MOV @R0,A
; MOV R1,#044H
DEC R1
MOV A,@R1
RR A
RR A
RR A
RR A
ANL A,#0FH
INC R0
MOVC A,@A+DPTR
MOV @R0,A
; MOV R1,#044H
MOV A,@R1
ANL A,#0FH
INC R0
MOVC A,@A+DPTR
MOV @R0,A
; MOV R1,#043H
DEC R1
MOV A,@R1
RR A
RR A
RR A
RR A
ANL A,#0FH
INC R0
MOVC A,@A+DPTR
MOV @R0,A
; MOV R1,#043H
MOV A,@R1
ANL A,#0FH
INC R0
MOVC A,@A+DPTR
MOV @R0,A
; MOV R1,#042H
DEC R1
MOV A,@R1
RR A
RR A
RR A
RR A
ANL A,#0FH
INC R0
MOVC A,@A+DPTR
MOV @R0,A
; MOV R1,#42H
MOV A,@R1
ANL A,#0FH
INC R0
MOVC A,@A+DPTR
MOV @R0,A
RET
;---------------------------------
S_TYPE: MOV A,1DH ;菜单显示地址选择
CJNE A,#0H,N_T1
N_ONC: MOV DPTR,#TYPE_1
RET
N_T1: CJNE A,#1H,N_T2
MOV DPTR,#TYPE_2
RET
N_T2: CJNE A,#2H,N_T3
N_END: MOV DPTR,#TYPE_3
RET
N_T3: CJNE A,#3H,N_TF
AAA: MOV 1DH,#0H
LJMP N_ONC
N_TF: CJNE A,#0FFH,AAA
MOV 1DH,#02H
LJMP N_END
NO_INC: MOV A,1CH ;号码加'1' R1=偏移地址 1C单元为偏移量
ADD A,#2EH
MOV R1,A
INC @R1
MOV A,@R1
ANL A,#3FH
CJNE A,#3AH,NO_30
MOV A,#30H
NO_30: MOV @R1,A
RET
NO_DEC: MOV A,1CH ;号码减'1' R1=偏移地址 1C单元为偏移量
ADD A,#2EH
MOV R1,A
DEC @R1
MOV A,@R1
ANL A,#3FH
CJNE A,#2FH,NO_29
MOV A,#39H
NO_29: MOV @R1,A
RET
;-------------------串号加 1--------
ESN_INC: MOV R1,#18H
MOV A,1CH
RRC A
JC H_B ;为'1'=高半位
ANL A,#03H
ADD A,R1
MOV R1,A
MOV A,@R1
MOV B,A
INC A
ANL A,#0FH
XCH A,B
ANL A,#0F0H
ORL A,B
MOV @R1,A
RET
H_B: ANL A,#03H ;高半位加'1'
ADD A,R1
MOV R1,A
MOV A,@R1
ADD A,#10H
MOV @R1,A
RET
;-------------------------光标定位------------------
GUANG: MOV A,1CH
CJNE A,#0H,GUANG_1
MOV R2,#8EH
RET
GUANG_1: CJNE A,#01H,GUANG_2
MOV R2,#8DH
RET
GUANG_2: CJNE A,#02H,GUANG_3
MOV R2,#8CH
RET
GUANG_3: CJNE A,#03H,GUANG_4
MOV R2,#8BH
RET
GUANG_4: CJNE A,#04H,GUANG_5
MOV R2,#8AH
RET
GUANG_5: CJNE A,#05H,GUANG_6
MOV R2,#89H
RET
GUANG_6: CJNE A,#06H,GUANG_7
MOV R2,#88H
RET
GUANG_7: CJNE A,#07H,GUANG_8
MOV R2,#87H
RET
GUANG_8: RET
;-------------------------光标定位------------------
GUANG_D: MOV A,1CH
CJNE A,#0H,GUANG_1_D
MOV R2,#0C5H
RET
GUANG_1_D: CJNE A,#01H,GUANG_2_D
MOV R2,#0C6H
RET
GUANG_2_D: CJNE A,#02H,GUANG_3_D
MOV R2,#0C7H
RET
GUANG_3_D: CJNE A,#03H,GUANG_4_D
MOV R2,#0C8H
RET
GUANG_4_D: CJNE A,#04H,GUANG_5_D
MOV R2,#0C9H
RET
GUANG_5_D: CJNE A,#05H,GUANG_6_D
MOV R2,#0CAH
RET
GUANG_6_D: CJNE A,#06H,GUANG_7_D
MOV R2,#0CBH
RET
GUANG_7_D: CJNE A,#07H,GUANG_8_D
MOV R2,#0CCH
RET
GUANG_8_D: CJNE A,#08H,GUANG_9_D
MOV R2,#0CDH
RET
GUANG_9_D: CJNE A,#09H,GUANG_A_D
MOV R2,#0CEH
RET
GUANG_A_D: RET
;--------------------串号减 '1'------------------
ESN_DEC: MOV R1,#18H
MOV A,1CH
RRC A
JC H_E
ANL A,#03H
ADD A,R1
MOV R1,A
MOV A,@R1
MOV B,A
DEC A
ANL A,#0FH
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -