📄 m03.asm
字号:
LJMP SEND_64
SEND_M0J:
LJMP SEND_M0
SEND_L02:
MOVX A,@DPTR
JB ACC.0,SEND_L021
LJMP SEND_M0
SEND_L021:
CLR ACC.0
MOV FLAG_SEND,A
MOV COM_TX0,#08H
LJMP SEND_24
SEND_M05:
SJMP SEND_L02
SEND_M04:
MOVX A,@DPTR
MOV TEMP1,A
MOV DPS,#01H
MOVX A,@DPTR
ANL A,#7FH
MOV DPH,A
INC DPTR
MOVX A,@DPTR
MOV DPL,A
INC DPTR
MOVX A,@DPTR
MOV TEMP2,A
INC DPTR
MOVX A,@DPTR
MOV TEMP3,A
MOV A,TEMP1
ORL A,TEMP2
ORL A,TEMP3
JZ SEND_M0J
CLR RS0
CLR RS1
MOV R0,#85H
MOV @R0,TEMP1
INC R0
MOV @R0,TEMP2
INC R0
MOV @R0,TEMP3
MOV COUNT,#09H
MOV COUNT_TX0,#03H
SEND_M041:
INC DPTR
MOV A,TEMP3
RRC A
MOV TEMP3,A
MOV A,TEMP2
RRC A
MOV TEMP2,A
MOV A,TEMP1
RRC A
MOV TEMP1,A
JNC SEND_M042
INC R0
INC COUNT_TX0
MOVX A,@DPTR
MOV @R0,A
SEND_M042:
DJNZ COUNT,SEND_M041
MOV DPS,#00H
INC DPTR
MOV COUNT,#0EH
SEND_M043:
INC DPTR
MOV A,TEMP3
RRC A
MOV TEMP3,A
MOV A,TEMP2
RRC A
MOV TEMP2,A
MOV A,TEMP1
RRC A
MOV TEMP1,A
JNC SEND_M044
INC R0
INC COUNT_TX0
MOVX A,@DPTR
MOV @R0,A
SEND_M044:
DJNZ COUNT,SEND_M043
MOV PID1_TX0,PID2
MOV PID2_TX0,PID2
MOV COM_TX0,#0CH
LCALL TX_5C
MOV TCOUNT2,#00H
LCALL BEGIN_RX0
SETB 10H
SETB 12H
RET
SEND_24:
ORL DPL1,#02H
MOV DPS,#01H
MOV COUNT,#04H
MOV COUNT_TX0,COUNT
CLR RS0
CLR RS1
MOV R0,#85H
SEND_M1:
MOVX A,@DPTR
MOV @R0,A
INC R0
INC DPTR
DJNZ COUNT,SEND_M1
MOV PID1_TX0,PID2
MOV PID2_TX0,PID2
LCALL TX_5C
MOV TCOUNT2,#00H
CLR 10H
LCALL BEGIN_RX0
SETB 12H
RET
SEND_64:
ORL DPL1,#06H
MOV DPS,#01H
MOV COUNT,#04H
MOV COUNT_TX0,COUNT
CLR RS0
CLR RS1
MOV R0,#85H
SJMP SEND_M1
SEND_A4:
ORL DPL1,#0AH
MOV DPS,#01H
MOV COUNT,#04H
MOV COUNT_TX0,COUNT
CLR RS0
CLR RS1
MOV R0,#85H
SJMP SEND_M1
WAIT_RQ:
JB 0AH,WAIT_RQ1
MOV A,TCOUNT2
CJNE A,#03H,WAIT_RQEND
WAIT_RQ2:
CLR 12H
MOV PID3,PID2
DEC PID3
SETB 11H
CLR 13H
INC PID2
MOV A,PID2
ANL A,#0E0H
JZ WAIT_RQEND
MOV PID0,#00H
MOV PHASE,#00H
WAIT_RQEND:
RET
WAIT_RQ1:
MOV A,PID2
CJNE A,PID1_RX0,WAIT_RQ2
MOV A,CHECK_TX0
CJNE A,CHECK1_RX0,WAIT_RQ2
JB 10H,WAIT_RQM04
MOV DPL,TEMP_DPL
MOV DPH,TEMP_DPH
MOV DPS,#00H
MOV A,FLAG_SEND
MOVX @DPTR,A
CLR 12H
RET
WAIT_RQM04:
MOV DPL,TEMP_DPL
MOV DPH,TEMP_DPH
MOV DPS,#00H
MOV A,#00H
MOVX @DPTR,A
INC DPTR
MOVX A,@DPTR
MOV DPH1,A
INC DPTR
MOVX A,@DPTR
MOV DPL1,A
MOV DPS,#01H
INC DPTR
INC DPTR
MOV A,#00H
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
CLR 12H
RET
;==========================================
LOOK_M:
MOV PID1_TX0,#01H
MOV PID2_TX0,#01H
MOV COM_TX0,#01H
LOOK_M1:
LCALL TX_6C
MOV TCOUNT2,#00H
LCALL BEGIN_RX0
LOOK_M2:
JB 0AH,LOOK_M3
MOV A,TCOUNT2
CJNE A,#03H,LOOK_M2
LOOK_M4:
INC PID1_TX0
INC PID2_TX0
MOV A,PID1_TX0
ANL A,#0E0H
JZ LOOK_M1
RET
LOOK_M3:
LCALL LOAD_M
SJMP LOOK_M4
;------------------------------------------
LOAD_M:
MOV A,PID1_RX0
CJNE A,PID2_RX0,LOAD_M1
MOV A,#01H
CJNE A,COM_RX0,LOAD_M1
MOV A,PID2_RX0
LCALL RD_EEPROM
MOV A,PID2_RX0
RL A
RL A
ANL A,#7CH
MOV DPL,A
MOV DPH,#00H
MOV DPS,#00H
CLR RS0
CLR RS1
MOV R0,#0A0H
MOV A,@R0
MOVX @DPTR,A
MOV R0,#0F0H
XRL A,@R0
CLR 1FH
JZ LOAD_M0
SETB 1FH
MOVX A,@DPTR
MOV @R0,A
LOAD_M0:
MOVX A,@DPTR
XRL A,#06H
JZ INI_G04
MOVX A,@DPTR
XRL A,#07H
JZ INI_G07
MOVX A,@DPTR
XRL A,#0AH
JZ INI_L02J
MOVX A,@DPTR
XRL A,#0BH
JZ INI_M05J
MOVX A,@DPTR
XRL A,#09H
JZ INI_M04J
MOV A,#00H
INC DPTR
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
LOAD_M1:
RET
INI_L02J:
LJMP INI_L02
INI_M05J:
LJMP INI_M05
INI_M04J:
LJMP INI_M04
INI_G04:
MOV A,#00000110B
JB 1FH,INI_G041
MOV A,#00H
INI_G041:
INC DPTR
MOVX @DPTR,A
LCALL LOOK_EM
MOV DPS,#00H
INC DPTR
MOV A,DPH1
MOVX @DPTR,A
INC DPTR
MOV A,DPL1
MOVX @DPTR,A
MOV DPS,#01H
MOV A,#80H
MOVX @DPTR,A
MOV A,#00H
INC DPTR
MOVX @DPTR,A
INC R0
MOV COUNT1,#08H
JNB 1FH,INI_G044
INI_G042:
INC DPTR
INC R0
MOVX @DPTR,A
MOV @R0,A
DJNZ COUNT1,INI_G042
MOV A,#01H
MOV COUNT1,#04H
INI_G043:
INC DPTR
INC R0
MOV @R0,A
MOVX @DPTR,A
INC A
DJNZ COUNT1,INI_G043
LCALL WE_EEPROM
RET
INI_G044:
MOV COUNT1,#04H
MOV A,#00H
INI_G045:
INC DPTR
INC R0
MOVX @DPTR,A
DJNZ COUNT1,INI_G045
MOV COUNT1,#08H
INI_G046:
INC DPTR
INC R0
MOV A,@R0
MOVX @DPTR,A
DJNZ COUNT1,INI_G046
RET
INI_G07:
MOV A,#00000011B
JB 1FH,INI_G071
MOV A,#00H
INI_G071:
INC DPTR
MOVX @DPTR,A
LCALL LOOK_EM
MOV DPS,#00H
INC DPTR
MOV A,DPH1
MOVX @DPTR,A
INC DPTR
MOV A,DPL1
MOVX @DPTR,A
MOV DPS,#01H
MOV A,#80H
MOVX @DPTR,A
MOV A,#00H
INC DPTR
MOVX @DPTR,A
INC R0
JNB 1FH,INI_G074
MOV COUNT1,#09H
INI_G072:
INC DPTR
INC R0
MOV @R0,A
MOVX @DPTR,A
DJNZ COUNT1,INI_G072
LCALL WE_EEPROM
RET
INI_G074:
MOV COUNT1,#08H
INI_G075:
INC DPTR
INC R0
MOV A,@R0
MOVX @DPTR,A
DJNZ COUNT1,INI_G075
MOV A,#00H
INC DPTR
MOVX @DPTR,A
RET
INI_L02:
MOV A,#00000000B
INC DPTR
MOVX @DPTR,A
LCALL LOOK_EM
MOV DPS,#00H
INC DPTR
MOV A,DPH1
MOVX @DPTR,A
INC DPTR
MOV A,DPL1
MOVX @DPTR,A
MOV DPS,#01H
MOV A,#80H
MOVX @DPTR,A
MOV A,#00H
INC DPTR
MOVX @DPTR,A
MOV COUNT1,#04H
INI_L021:
INC DPTR
MOVX @DPTR,A
DJNZ COUNT1,INI_L021
RET
INI_M05:
SJMP INI_L02
INI_M04:
MOV A,#0FFH
INC DPTR
MOVX @DPTR,A
LCALL LOOK_EM
MOV DPS,#00H
INC DPTR
MOV A,DPH1
MOVX @DPTR,A
INC DPTR
MOV A,DPL1
MOVX @DPTR,A
MOV DPL,DPL1
MOV DPH,DPH1
MOV A,#80H
MOVX @DPTR,A
LCALL LOOK_EM
MOV DPS,#00H
MOV A,DPH1
ORL A,#80H
MOVX @DPTR,A
INC DPTR
MOV A,DPL1
MOVX @DPTR,A
INC DPTR
MOV A,#0FFH
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
INC DPTR
MOV A,#00H
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
MOV A,#80H
MOV COUNT1,#09H
INI_M041:
INC DPTR
MOVX @DPTR,A
DJNZ COUNT1,INI_M041
MOV DPS,#01H
MOV A,#80H
MOVX @DPTR,A
MOV A,#00H
INC DPTR
MOVX @DPTR,A
MOV A,#80H
MOV COUNT1,#0EH
INI_M042:
INC DPTR
MOVX @DPTR,A
DJNZ COUNT1,INI_M042
RET
;-------------------------------------
LOOK_EM:
MOV DPS,#01H
MOV DPTR,#0080H
LOOK_EM1:
MOVX A,@DPTR
JNB ACC.7,LOOK_EM2
MOV A,#10H
ADD A,DPL1
MOV DPL1,A
MOV A,#00H
ADDC A,DPH1
MOV DPH1,A
ANL A,#0FCH ;!!!!
JZ LOOK_EM1
SETB 0DH ;错误标志
LOOK_EM2:
RET
;========================================
FIND_ADR:
MOV A,PID2_RX0
LCALL EEPROM_ADR
MOV A,PID2_RX0
RL A
RL A
ANL A,#7CH
MOV DPL,A
MOV DPH,#00H
MOV DPS,#00H
MOVX A,@DPTR
MOV B,A
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV DPH1,A
INC DPTR
MOVX A,@DPTR
MOV DPL1,A
MOV DPS,#01H
MOV A,B
XRL A,#06H
JZ FIND_G04
MOV A,B
XRL A,#07H
JZ FIND_G07
MOV A,B
XRL A,#0AH
JZ FIND_L02
MOV A,B
XRL A,#0BH
JZ FIND_M05
MOV A,B
XRL A,#09H
JZ FIND_M04
RET
FIND_G04:
MOV B,COM_RX0
MOV A,B
XRL A,#09H
JZ FIND_24
MOV A,B
XRL A,#0AH
JZ FIND_64
MOV A,B
XRL A,#02H
JZ FIND_A4
RET
FIND_G07:
MOV B,COM_RX0
MOV A,B
XRL A,#09H
JZ FIND_24
MOV A,B
XRL A,#0AH
JZ FIND_64
MOV A,B
XRL A,#07H
JZ FIND_A1
RET
FIND_L02:
MOV A,COM_RX0
XRL A,#08H
JZ FIND_24
RET
FIND_M05:
SJMP FIND_L02
FIND_M04:
MOV B,COM_RX0
MOV A,B
XRL A,#0BH
JZ FIND_23
MOV A,B
XRL A,#0CH
JZ FIND_M041
RET
FIND_M041:
MOV DPS,#00H
DEC DPTR
DEC DPTR
MOV DPS,#01H
MOVX A,@DPTR
ANL A,#7FH
MOV TEMP_DPH,A
INC DPTR
MOVX A,@DPTR
MOV TEMP_DPL,A
INC DPTR
RET
FIND_24:
MOV B,#01H
MOV P_LONG,#04H
MOV LONG_IIC,#04H
ORL DPL1,#02H
ORL ADDL_IIC,#02H
RET
FIND_23:
MOV B,#00H
MOV P_LONG,#03H
MOV LONG_IIC,#03H
ORL DPL1,#04H
ORL ADDL_IIC,#04H
RET
FIND_64:
MOV B,#02H
MOV P_LONG,#04H
MOV LONG_IIC,#04H
ORL DPL1,#06H
ORL ADDL_IIC,#06H
RET
FIND_A4:
MOV B,#04H
MOV P_LONG,#04H
MOV LONG_IIC,#04H
ORL DPL1,#0AH
ORL ADDL_IIC,#0AH
RET
FIND_A1:
MOV B,04H
MOV P_LONG,#01H
MOV LONG_IIC,#01H
ORL DPL1,#0AH
ORL ADDL_IIC,#0AH
RET
;========================================
ERASE_M:
MOV DPS,#00H
MOV A,PID3
RL A
RL A
ANL A,#7CH
MOV DPL,A
MOV DPH,#00H
MOV A,#00H
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
INC DPTR
MOVX A,@DPTR
MOV DPH1,A
INC DPTR
MOVX A,@DPTR
MOV DPL1,A
MOV DPS,#01H
MOVX A,@DPTR
ANL A,#7FH
MOV DPH,A
MOV A,#00H
MOVX @DPTR,A
INC DPTR
MOVX A,@DPTR
ORL A,DPH
JNZ ERASE_M1
RET
ERASE_M1:
MOVX A,@DPTR
MOV DPL,A
MOV DPS,#00H
MOV A,#00H
MOVX @DPTR,A
RET
;========================================
TX_5A:
CLR RS0
CLR RS1
MOV R0,#80H
MOV @R0,#5AH
INC R0
MOV @R0,PID1_TX0
MOV A,PID1_TX0
CPL A
INC R0
MOV @R0,A
MOV COUNT_TX0,#03H
SETB RS0
CLR RS1
MOV R1,#80H
SETB ES ;开串口0中断
SETB 03H
SETB 0EH
SETB TI
RET
;---------------------------
TX_6C:
CLR RS0
CLR RS1
MOV R0,#80H
MOV @R0,#6CH
INC R0
MOV @R0,PID1_TX0
MOV A,PID1_TX0
INC R0
MOV @R0,COM_TX0
ADD A,COM_TX0
INC R0
MOV @R0,PID2_TX0
ADD A,PID2_TX0
INC R0
MOV @R0,A
MOV COUNT_TX0,#05H
SETB RS0
CLR RS1
MOV R1,#80H
SETB ES ;开串口0中断
SETB 03H
SETB 0EH
SETB TI
RET
;----------------------------
TX_5C:
CLR RS0
CLR RS1
MOV R0,#80H
MOV @R0,#5CH
INC R0
MOV @R0,PID1_TX0
INC R0
MOV @R0,COM_TX0
INC R0
MOV @R0,PID2_TX0
INC R0
MOV @R0,COUNT_TX0
MOV A,#05H
ADD A,COUNT_TX0
MOV COUNT_TX0,A
MOV COUNT,A
INC COUNT_TX0
DEC COUNT
MOV R0,#81H
MOV CHECK_TX0,#00H
TX_5C1:
MOV A,@R0
ADD A,CHECK_TX0
MOV CHECK_TX0,A
INC R0
DJNZ COUNT,TX_5C1
MOV @R0,CHECK_TX0
SETB RS0
CLR RS1
MOV R1,#80H
SETB ES ;开串口0中断
SETB 03H
SETB 0EH
SETB TI
RET
;*************************************
;通用子程序
;*************************************
BEGIN_RX0:
CLR REN
CLR 04H
CLR 05H
CLR 06H
CLR 07H
CLR 08H
CLR 09H
CLR 0AH
CLR 0CH
CLR 0FH
SETB REN ;串口0接收允许
SETB ES ;开串口0中断
RET
;*************************************
;显示部分
;*************************************
DISP:
MOV A,STEP_DISP
JZ DISP_INFO ;显示时间和钟状态
DEC A
JZ DISP_MODEJ ;显示板卡
; DEC A
; JZ SET_G04 ;2发送改动过的参数
; MOV STEP_DISP,#00H
RET
DISP_MODEJ:
LJMP DISP_MODE
DISP_INFO:
JB 14H,DISP_INF
RET
DISP_INF:
CLR 14H
JNB 15H,DISP_INFO1
MOV ADDS_PL,#09H ;ADDRESS POINTER
MOV ADDS_PH,#00H
SETB 19H
MOV A,HOUR
LCALL DISP_BYTEB
MOV A,#14H
LCALL DISP_BYTE
MOV A,MINUTE
LCALL DISP_BYTEB
MOV A,#14H
LCALL DISP_BYTE
MOV A,SECOND
LCALL DISP_BYTEB
MOV ADDS_PL,#4AH ;ADDRESS POINTER
MOV ADDS_PH,#00H
SETB 19H
MOV A,YEARL
LCALL DISP_BYTEB
MOV A,#16H
LCALL DISP_BYTE
MOV A,MONTH
LCALL DISP_BYTEB
MOV A,#16H
LCALL DISP_BYTE
MOV A,DATE
LCALL DISP_BYTEB
DISP_INFO1:
MOV ADDS_PL,#8BH ;ADDRESS POINTER
MOV ADDS_PH,#00H
MOV DPS,#00H
MOV DPTR,#DIDT_
LCALL DISP_STR
MOV ADDS_PL,#8BH ;ADDRESS POINTER
MOV ADDS_PH,#00H
MOV A,STAU1
JNB ACC.0,DISP_YUAN2
MOV A,#48H
LCALL DISP_WORD
MOV A,#1AH
LCALL DISP_BYTE
MOV A,#3EH
LCALL DISP_BYTE
DISP_YUAN2:
MOV A,STAU1
JNB ACC.1,DISP_YUAN3
MOV A,#48H
LCALL DISP_WORD
MOV A,#1CH
LCALL DISP_BYTE
MOV A,#3EH
LCALL DISP_BYTE
DISP_YUAN3:
MOV A,STAU1
JNB ACC.2,DISP_YUAN4
MOV A,#48H
LCALL DISP_WORD
MOV A,#1EH
LCALL DISP_BYTE
MOV A,#3EH
LCALL DISP_BYTE
DISP_YUAN4:
MOV A,STAU1
JNB ACC.3,DISP_INFO2
MOV A,#48H
LCALL DISP_WORD
MOV A,#20H
LCALL DISP_BYTE
DISP_INFO2:
MOV ADDS_PL,#0CBH ;ADDRESS POINTER
MOV ADDS_PH,#00H
MOV A,STAU2
JZ DISP_INFO3
DEC A
JZ DISP_YUANN1
DEC A
JZ DISP_YUANN2
DEC A
JZ DISP_YUANN3
DEC A
JZ DISP_YUANN4
DEC A
JZ DISP_YUANN5
SJMP DISP_INFO3
DISP_YUANN1:
MOV A,#48H
LCALL DISP_WORD
MOV A,#1AH
LCALL DISP_BYTE
SJMP DISP_INFO3
DISP_YUANN2:
MOV A,#48H
LCALL DISP_WORD
MOV A,#1CH
LCALL DISP_BYTE
SJMP DISP_INFO3
DISP_YUANN3:
MOV A,#48H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -