📄 m03.asm
字号:
DEC DPTR
MOV DPS,#01H
MOV TEMP2,#04H
MOV TEMP3,#0D0H
CLR 1CH
REVISE_L021:
JB 1CH,REVISE_L022
CLR RS0
CLR RS1
MOV R0,TEMP3
MOV A,@R0
SWAP A
ANL A,#0FH
MOV BCD5,A
MOV A,@R0
SWAP A
ANL A,#0F0H
MOV BCD4,A
INC R0
MOV A,@R0
SWAP A
ANL A,#0FH
ORL BCD4,A
INC TEMP3
SETB 1CH
SJMP REVISE_L023
REVISE_L022:
CLR RS0
CLR RS1
MOV R0,TEMP3
MOV A,@R0
ANL A,#0FH
MOV BCD5,A
INC R0
MOV A,@R0
MOV BCD4,A
INC TEMP3
INC TEMP3
CLR 1CH
REVISE_L023:
MOV COUNT,#02H
LCALL BCD_BIN
MOV A,BIN1
MOVX @DPTR,A
INC DPTR
DJNZ TEMP2,REVISE_L021
MOV DPS,#00H
MOV A,#01H
MOVX @DPTR,A
REVISE_L024:
LJMP KEY_CAID
;---------------------
REVISE_SET:
JNB 1AH,REVISE_SET3
MOV TEMP2,#06H
MOV TEMP3,#0D0H
REVISE_SET1:
CLR RS0
CLR RS1
MOV R0,TEMP3
MOV BCD5,@R0
MOV COUNT,#01H
LCALL BCD_BIN
CLR RS0
CLR RS1
MOV R0,TEMP3
MOV @R0,BIN1
INC TEMP3
DJNZ TEMP2,REVISE_SET1
CLR RS0
CLR RS1
MOV R0,#0D0H
MOV R1,#0EAH
MOV COUNT,#06H
REVISE_SET2:
MOV A,@R0
MOV @R1,A
INC R0
INC R1
DJNZ COUNT,REVISE_SET2
SETB 20H
REVISE_SET3:
LJMP KEY_XIANS
;=====================================
SET_BLINK:
MOV CGP,#08H
SET_BLINK1:
MOV A,GIF_PT
MOV B,#40H
MUL AB
ADD A,#92H
MOV DIS_DL,A
MOV TEMP1,A
MOV A,B
ADDC A,#08H
MOV DIS_DH,A
MOV TEMP2,A
MOV DIS_COM,#24H
LCALL SENDCOM
MOV DIS_DH,CGP
MOV DIS_COM,#0C0H
LCALL SENDCOM1
MOV DIS_DH,CGP
MOV DIS_COM,#0C4H
LCALL SENDCOM1
MOV DIS_DL,TEMP1
MOV DIS_DH,TEMP2
MOV A,#20H
ADD A,DIS_DL
MOV DIS_DL,A
MOV A,#00H
ADDC A,DIS_DH
MOV DIS_DH,A
MOV DIS_COM,#24H
LCALL SENDCOM
MOV DIS_DH,CGP
MOV DIS_COM,#0C0H
LCALL SENDCOM1
MOV DIS_DH,CGP
MOV DIS_COM,#0C4H
LCALL SENDCOM1
RET
CLR_BLINK:
MOV CGP,#00H
SJMP SET_BLINK1
;---------------------------------------
GET_MID:
MOV DPS,#00H
MOV DPTR,#03D0H
MOV A,GIF_PT
DEC A
RL A
ANL A,#0FEH
ADD A,DPL
MOV DPL,A
MOV A,DPH
ADDC A,#00H
MOV DPH,A
MOVX A,@DPTR
RET
;---------------------------------------
SET_HOME:
MOV A,GIF_PT
CLR C
SUBB A,#06H
JNC SET_HOME1
MOV DIS_DH,#00H
MOV DIS_DL,#00H
MOV DIS_COM,#40H
LCALL SENDCOM
RET
SET_HOME1:
MOV A,GIF_PT
CLR C
SUBB A,#05H
MOV B,#40H
MUL AB
MOV DIS_DH,B
MOV DIS_DL,A
MOV DIS_COM,#40H
LCALL SENDCOM
RET
;---------------------------------------
DISP_CURSOR:
MOV DPS,#00H
MOV A,STEP_DISP
CLR C
SUBB A,#04H
JC DISP_CURSOR1
JZ GET_TABM03 ;4
DEC A
JZ GET_TABM03 ;5
DEC A
JZ GET_TABG04 ;6
DEC A
JZ GET_TABG07 ;7
DEC A
JZ GET_TABL02 ;8
DEC A
JZ GET_TABSET ;9
DISP_CURSOR1:
RET
GET_TABM03:
MOV DPTR,#CUR_M03
SJMP DISP_CURSOR2
GET_TABG04:
MOV DPTR,#CUR_G04
SJMP DISP_CURSOR2
GET_TABG07:
MOV DPTR,#CUR_G07
SJMP DISP_CURSOR2
GET_TABL02:
MOV DPTR,#CUR_L02
SJMP DISP_CURSOR2
GET_TABSET:
MOV DPTR,#CUR_SET
DISP_CURSOR2:
MOV A,PAME_PT
ADD A,PAME_PT
MOVC A,@A+DPTR
MOV DIS_DH,A
MOV A,PAME_PT
ADD A,PAME_PT
INC A
MOVC A,@A+DPTR
MOV DIS_DL,A
MOV DIS_COM,#21H
LCALL SENDCOM
RET
;------------------------------------------
DISP_VALUE:
MOV DPS,#00H
MOV A,STEP_DISP
CLR C
SUBB A,#05H
JC DISP_VALUE1
JZ GET_TABLM03 ;5
DEC A
JZ GET_TABLG04 ;6
DEC A
JZ GET_TABLG07 ;7
DEC A
JZ GET_TABLL02 ;8
DEC A
JZ GET_TABLSET ;9
DISP_VALUE1:
RET
GET_TABLM03:
MOV DPTR,#TABLE_M03
SJMP DISP_VALUE2
GET_TABLG04:
MOV DPTR,#TABLE_G04
SJMP DISP_VALUE2
GET_TABLG07:
MOV DPTR,#TABLE_G07
SJMP DISP_VALUE2
GET_TABLL02:
MOV DPTR,#TABLE_L02
SJMP DISP_VALUE2
GET_TABLSET:
MOV DPTR,#TABLE_SET
DISP_VALUE2:
MOV A,PAME_PT
ADD A,PAME_PT
MOVC A,@A+DPTR
MOV ADDS_PH,A
MOV A,PAME_PT
ADD A,PAME_PT
INC A
MOVC A,@A+DPTR
MOV ADDS_PL,A
MOV A,VALUE
RL A
ANL A,#1EH
ADD A,#18H
LCALL DISP_BYTE
RET
;------------------------------------------
IN_NUM:
CLR RS0
CLR RS1
MOV R0,#0D0H
MOV A,PAME_PT
RR A
JB ACC.7,IN_NUM1 ;低位
ADD A,R0
MOV R0,A
MOV A,@R0
SWAP A
ANL A,#0F0H
ORL A,VALUE
SWAP A
MOV @R0,A
RET
IN_NUM1:
CLR ACC.7
ADD A,R0
MOV R0,A
MOV A,@R0
ANL A,#0F0H
ORL A,VALUE
MOV @R0,A
RET
;*************************************
;串口程序
;*************************************
MANAG:
JNB 0EH,MANAG1
MOV TCOUNT2,#00H
RET
MANAG1:
MOV A,PHASE
JZ RECEIVE ;0发送时隙
DEC A
JZ TAKE_OVERJ ;1发送0时隙
DEC A
JZ SEND_MJ ;2发送改动过的参数
MOV PHASE,#00H
RET ;PHASE大于2处理
TAKE_OVERJ:
LJMP TAKE_OVER
SEND_MJ:
LJMP SEND_M
RECEIVE:
JB 12H,WAIT_REX
JB 20H,SET_TIMEAJ
JB 11H,TEST_MJ
JB 13H,WAIT_TESTJ
RECEIVE01:
INC PID0
MOV A,PID0
ANL A,#0E0H
JNZ TAKE_OVER0J
MOV DPS,#00H
MOV A,PID0
RL A
RL A
ANL A,#7CH
MOV DPL,A
MOV DPH,#00H
MOVX A,@DPTR
JZ RECEIVE01
MOV PID1_TX0,PID0
LCALL TX_5A
MOV TCOUNT2,#00H
LCALL BEGIN_RX0
SETB 12H
RET
WAIT_REX:
JB 04H,WAIT_REX1
MOV A,TCOUNT2
CJNE A,#06H,WAIT_REND
CLR 12H
SJMP RECEIVE
WAIT_REX1:
JB 0AH,RECEIVE1
MOV A,TCOUNT2
CJNE A,#09H,WAIT_REND
CLR 12H
SJMP RECEIVE
WAIT_REND:
RET
SET_TIMEAJ:
LJMP SET_TIMEA
TEST_MJ:
LJMP TEST_M
WAIT_TESTJ:
LJMP WAIT_TEST
TAKE_OVER0J:
LJMP TAKE_OVER0
RECEIVE1:
MOV B,COM_RX0
MOV A,B
XRL A,#01H
JZ RW_MODEJ
MOV A,B
XRL A,#06H
JZ R_STAUJ
MOV A,B
XRL A,#0CH
JZ CLK_STAUJ
MOV A,B
XRL A,#10H
JZ SET_TIMEJ
MOV A,B
XRL A,#11H
JZ DISP_ZONEJ
LCALL FIND_ADR
JB 0CH,RX_ANSWER
CLR RS0
CLR RS1
MOV R0,#0A0H
RECEIVE2:
MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ P_LONG,RECEIVE2
MOV A,PID1_RX0
XRL A,PID2_RX0
JZ RECEVIE3
MOV DPS,#00H
DEC DPTR
DEC DPTR
MOVX A,@DPTR
ORL A,B
MOVX @DPTR,A
SETB RS0
SETB RS1
MOV R1,#0A0H
LCALL IIC_WR
RECEVIE3:
CLR 12H
RET
RX_ANSWER:
MOV PID1_TX0,PID1_RX0
MOV PID2_TX0,PID2_RX0
MOV COM_TX0,COM_RX0
MOV COUNT_TX0,P_LONG
CLR RS0
CLR RS1
MOV R0,#85H
RX_ANSWER1:
MOVX A,@DPTR
MOV @R0,A
INC R0
INC DPTR
DJNZ P_LONG,RX_ANSWER1
LCALL TX_5C
CLR 12H
RET
RW_MODEJ:
LJMP RW_MODE
R_STAUJ:
LJMP R_STAU
CLK_STAUJ:
LJMP CLK_STAU
SET_TIMEJ:
LJMP SET_TIME
DISP_ZONEJ:
LJMP DISP_ZONE
RW_MODE:
JB 0CH,R_MODE
LCALL LOAD_M
CLR 12H
RET
R_MODE:
MOV PID1,#00H ;01读返回所有ID
MOV COUNT_TX0,#00H
CLR RS0
CLR RS1
MOV R0,#85H
R_MODE1:
INC PID1
MOV A,PID1
ANL A,#0E0H
JNZ R_MODE2
MOV DPS,#00H
MOV A,PID1
RL A
RL A
ANL A,#7CH
MOV DPL,A
MOV DPH,#00H
MOVX A,@DPTR
JZ R_MODE1
MOV @R0,PID1
INC R0
MOV @R0,A
INC COUNT_TX0
INC COUNT_TX0
SJMP R_MODE1
R_MODE2:
MOV PID1_TX0,PID1_RX0
MOV COM_TX0,COM_RX0
MOV PID2_TX0,PID1_RX0
LCALL TX_5C
CLR 12H
RET
R_STAU:
JNB 0CH,R_STAU1 ;R_STAU不允许写
CLR RS0
CLR RS1
MOV R0,#85H
MOV @R0,STAU1
INC R0
MOV @R0,STAU2
INC R0
MOV @R0,STAU_GPS
MOV PID1_TX0,PID1_RX0
MOV COM_TX0,COM_RX0
MOV PID2_TX0,PID2_RX0
MOV COUNT_TX0,#03H
LCALL TX_5C
R_STAU1:
CLR 12H
RET
CLK_STAU:
LCALL FIND_ADR
JB 0CH,RCLK_STAU
MOV DPS,#00H
CLR RS0
CLR RS1
MOV R0,#0A0H
MOV A,@R0
MOVX @DPTR,A
INC R0
MOV DPS,#01H
MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
MOV A,@R0
MOVX @DPTR,A
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOV COUNT,#09H
WCLK_STAU1:
MOV R1,#0A2H
MOV A,@R1
RRC A
MOV @R1,A
DEC R1
MOV A,@R1
RRC A
MOV @R1,A
DEC R1
MOV A,@R1
RRC A
MOV @R1,A
JNC WCLK_STAU2
INC R0
MOV A,@R0
MOVX @DPTR,A
WCLK_STAU2:
INC DPTR
DJNZ COUNT,WCLK_STAU1
MOV DPL1,TEMP_DPL
MOV DPH1,TEMP_DPH
INC DPTR
INC DPTR
MOV COUNT,#0EH
WCLK_STAU3:
MOV R1,#0A2H
MOV A,@R1
RRC A
MOV @R1,A
DEC R1
MOV A,@R1
RRC A
MOV @R1,A
DEC R1
MOV A,@R1
RRC A
MOV @R1,A
JNC WCLK_STAU4
INC R0
MOV A,@R0
MOVX @DPTR,A
WCLK_STAU4:
INC DPTR
DJNZ COUNT,WCLK_STAU3
CLR 12H
RET
RCLK_STAU:
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV TEMP1,A
INC DPTR
MOVX A,@DPTR
MOV TEMP2,A
INC DPTR
MOVX A,@DPTR
MOV TEMP3,A
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
RCLK_STAU1:
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 RCLK_STAU2
INC R0
INC COUNT_TX0
MOVX A,@DPTR
MOV @R0,A
RCLK_STAU2:
DJNZ COUNT,RCLK_STAU1
MOV DPL1,TEMP_DPL
MOV DPH1,TEMP_DPH
INC DPTR
INC DPTR
MOV COUNT,#0EH
RCLK_STAU3:
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 RCLK_STAU4
INC R0
INC COUNT_TX0
MOVX A,@DPTR
MOV @R0,A
RCLK_STAU4:
DJNZ COUNT,RCLK_STAU3
MOV PID1_TX0,PID1_RX0
MOV COM_TX0,COM_RX0
MOV PID2_TX0,PID2_RX0
LCALL TX_5C
CLR 12H
RET
SET_TIME:
JB 0CH,SET_TIME2
CLR RS0
CLR RS1
MOV R0,#85H
MOV R1,#0A0H
MOV COUNT,#06H
MOV COUNT_TX0,COUNT
SET_TIME1:
MOV A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ COUNT,SET_TIME1
MOV PID1_TX0,PID2_RX0
MOV COM_TX0,COM_RX0
MOV PID2_TX0,PID2_RX0
LCALL TX_5C
SET_TIME2:
CLR 12H
RET
DISP_ZONE:
JB 0CH,R_ZONE
CLR RS0
CLR RS1
MOV R0,#0A0H
MOV ZONE,@R0
MOV ADDH_IIC,#00H
MOV ADDL_IIC,#00H
MOV LONG_IIC,#01H
SETB RS0
SETB RS1
MOV R1,#0F0H
MOV @R1,ZONE
LCALL IIC_WR
CLR 12H
RET
R_ZONE:
CLR RS0
CLR RS1
MOV R0,#85H
MOV @R0,ZONE
MOV PID1_TX0,PID1_RX0
MOV COM_TX0,COM_RX0
MOV PID2_TX0,PID2_RX0
LCALL TX_5C
CLR 12H
RET
SET_TIMEA:
CLR RS0
CLR RS1
MOV R0,#85H
MOV R1,#0EAH
MOV COUNT,#06H
MOV COUNT_TX0,COUNT
SET_TIMEA1:
MOV A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ COUNT,SET_TIMEA1
MOV PID1_TX0,#04H ;!!!
MOV COM_TX0,#10H
MOV PID2_TX0,#04H ;!!!
LCALL TX_5C
CLR 20H
RET
TEST_M:
CLR 11H
INC PID3
MOV A,PID3
ANL A,#0E0H
JZ TEST_M1
MOV PID3,#00H
RET
TEST_M1:
MOV DPS,#00H
MOV A,PID3
RL A
RL A
ANL A,#7CH
MOV DPL,A
MOV DPH,#00H
MOVX A,@DPTR
JZ TEST_M
MOV PID1_TX0,PID3
MOV PID2_TX0,PID3
MOV COM_TX0,#01H
LCALL TX_6C
MOV TCOUNT2,#00H
LCALL BEGIN_RX0
SETB 13H
RET
WAIT_TEST:
JB 0AH,WAIT_TEST1
MOV A,TCOUNT2
CJNE A,#06H,WAIT_TEND
WAIT_TEST2:
LCALL ERASE_M
CLR 13H
WAIT_TEND:
RET
WAIT_TEST1:
MOV A,PID3
CJNE A,PID1_RX0,WAIT_TEST2
CJNE A,PID2_RX0,WAIT_TEST2
MOV A,#01H
CJNE A,COM_RX0,WAIT_TEST2
CLR 13H
RET
SET_TIMEAJJ:
LJMP SET_TIMEA
TAKE_OVER0:
MOV PHASE,#01H
CLR 12H
TAKE_OVER:
JB 12H,WAIT_OVER
JB 20H,SET_TIMEAJJ
JB 11H,TEST_M
JB 13H,WAIT_TEST
MOV PID1_TX0,#00H
LCALL TX_5A
CLR 0BH
MOV TCOUNT2,#00H
LCALL BEGIN_RX0
SETB 12H
RET
WAIT_OVER:
JB 0AH,WAIT_OVER1
MOV A,TCOUNT2
CJNE A,#06H,WAIT_OVEND
JNB 0BH,WAIT_OVER2
LJMP MAIN
WAIT_OVER2:
MOV PHASE,#02H
CLR 12H
MOV PID2,#01H
WAIT_OVEND:
RET
WAIT_OVER1:
LCALL LOAD_M
SJMP WAIT_OVER2
SEND_M0:
INC PID2
MOV A,PID2
ANL A,#0E0H
JZ SEND_M
MOV PID0,#00H
MOV PHASE,#00H
CLR 12H
RET
TEST_MJJ:
LJMP TEST_M
WAIT_RQJ:
LJMP WAIT_RQ
SET_TIMEAJJJ:
LJMP SET_TIMEA
WAIT_TESTJJJ:
LJMP WAIT_TEST
SEND_M:
JB 12H,WAIT_RQJ
JB 20H,SET_TIMEAJJJ
JB 11H,TEST_MJJ
JB 13H,WAIT_TESTJJJ
MOV A,PID2
RL A
RL A
ANL A,#7CH
MOV DPL,A
MOV DPH,#00H
MOV DPS,#00H
MOVX A,@DPTR
JZ SEND_M0
MOV B,A
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV DPH1,A
INC DPTR
MOVX A,@DPTR
MOV DPL1,A
DEC DPTR
DEC DPTR
MOV TEMP_DPL,DPL
MOV TEMP_DPH,DPH
MOV A,B
XRL A,#06H
JZ SEND_G04
MOV A,B
XRL A,#07H
JZ SEND_G07
MOV A,B
XRL A,#0AH
JZ SEND_L02
MOV A,B
XRL A,#0BH
JZ SEND_M05
MOV A,B
XRL A,#09H
JZ SEND_M04
SJMP SEND_M0
SEND_G04:
MOVX A,@DPTR
JB ACC.1,SEND_G042
JB ACC.2,SEND_G043
SJMP SEND_M0
SEND_G042:
CLR ACC.1
MOV FLAG_SEND,A
MOV COM_TX0,#0AH
LJMP SEND_64
SEND_G043:
CLR ACC.2
MOV FLAG_SEND,A
MOV COM_TX0,#02H
LJMP SEND_A4
SEND_G07:
MOVX A,@DPTR
JB ACC.0,SEND_G071
JB ACC.1,SEND_G072
LJMP SEND_M0
SEND_G071:
CLR ACC.0
MOV FLAG_SEND,A
MOV COM_TX0,#09H
LJMP SEND_24
SEND_G072:
CLR ACC.1
MOV FLAG_SEND,A
MOV COM_TX0,#0AH
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -