📄 yk.asm
字号:
;; yk.asm
;;;;;;;;;;;;;;;;;;;;;;
;; YK.ASM ;;
;;;;;;;;;;;;;;;;;;;;;;
PROC YKINT,READYK,YK
YKINT:
NOP
PUSH PSW
PUSH ACC
PUSH B
PUSH 01H
CPL LED_RUN
CLR TR0 ;读出脉宽,判是0 是1,还是开始
MOV A,TL0
MOV B,TH0 ;BA
MOV R1,TIMER_CAL1
SETB TR0
PUSH A
PUSH B
CLR C
SUBB A,YK_PWL
XCH A,B
SUBB A,YK_PWH ;AB
POP YK_PWH
POP YK_PWL
CLR F0
JNC YKINT_1
XCH A,B
CLR C ;BA
SUBB A,#TL0_SET
XCH A,B
SUBB A,#TH0_SET ;AB
SETB F0
YKINT_1 :
PUSH A
PUSH B
MOV C,F0
MOV A,R1
SUBB A,YKTIMER ;YK_PW=YK_TIMER*1599(1MS)+YK_PW()
MOV YKTIMER ,R1 ;YK_CAL*1583H
CJNE A,#00H,YKINT_1A
MOV R1,#00H
MOV B,#00H
SJMP YKINT_1D
YKINT_1A:
CJNE A,#01H,YKINT_1B ;
MOV R1,#15H
MOV B,#83H
SJMP YKINT_1D
YKINT_1B:
CJNE A,#02H,YKINT_1C ;1583H*2=2B06H
MOV R1,#2BH
MOV B,#06H
SJMP YKINT_1D
YKINT_1C:
POP A
POP A
LJMP YKINT_6
YKINT_1D:
POP A
ADD A,B
MOV B,A
POP A
ADDC A,R1
MOV R1,A
CLR C
MOV A,B ;和0的下限比较
SUBB A,#D0IL
MOV A,R1
SUBB A,#D0IH
JC YKINT_2
MOV A,B ;和0的上限比较
SUBB A,#D0AL
MOV A,R1
SUBB A,#D0AH
JNC YKINT_3
CLR C
SJMP YKINT_4
YKINT_2:
SJMP YKINT_6
YKINT_3:
CLR C
MOV A,B ;和1的下限比较
SUBB A,#D1IL
MOV A,R1
SUBB A,#D1IH
JC YKINT_2
MOV A,B ;和1的上限比较
SUBB A,#D1AL
MOV A,R1
SUBB A,#D1AH
JNC YKINT_2
SETB C
YKINT_4:
MOV A,YK_IN1 ;判是否有输入
RLC A
MOV YK_IN1,A
MOV A,YK_IN2
RLC A
MOV YK_IN2,A
XRL A,#0EEH ;;#0EEH是系统码
JNZ YKINT_7
YKINT_5:
MOV YK_IN,YK_IN1 ;;功能码保存
SETB YK_RD ;置读标志
SETB YK_RS
MOV YK_DELAY,#3CH
YKINT_6:
MOV YK_IN1,#00H ;非0非1或开始清零
MOV YK_IN2,#00H
YKINT_7:
POP 01H
POP B
POP ACC
POP PSW
RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
READYK: ; 读遥控器值,转化为相应的标志
NOP
JB YK_RS,READ_YK1
MOV YK_LAST,#00H
MOV YK_VALUE,#00H
SJMP READ_YK_END
READ_YK1:
JBC YK_RD,READ_YK11
SJMP READ_YK_END
READ_YK11:
MOV A,YK_IN
XRL A,YK_LAST
MOV YK_LAST,YK_IN
JZ READ_YK2
SETB YK_RD1
SETB YK_RD2
LCALL YKTAB
MOV YKRD_CAL,#18H
MOV A,TIMER_CAL3
ADD A,#MAIN_20S
MOV MAIN_DELAY,A
SJMP READ_YK_END
READ_YK2:
CLR YK_RD1
CLR YK_RD2
DEC YKRD_CAL
MOV A,YKRD_CAL
JNZ READ_YK_END
MOV YKRD_CAL,#03H
SETB YK_RD2
MOV A,TIMER_CAL3
ADD A,#MAIN_20S
MOV MAIN_DELAY,A
READ_YK_END:
RET
;;..................................;;
YKTAB:
NOP ; 遥控代码转化为号码
MOV R0,#00H
YKTAB_LP:
MOV A,R0
MOV DPTR,#YKCODE_TAB
MOVC A,@A+DPTR
XRL A,YK_IN
JZ YKTAB2
INC R0
CJNE R0,#08H,YKTAB1
YKTAB1:
JC YKTAB_LP
MOV YK_VALUE,#00H
SJMP YKTAB_END
YKTAB2:
MOV A,R0
ANL A,#07H
ANL YK_VALUE,#0F0H
ORL YK_VALUE,A
YKTAB_END:
RET
YKCODE_TAB:
DB 0E0H,0F0H, 40H, 50H, 0A0H, 60H, 20H, 00H, 00H
; 00 01 02 03 04 05 06
; 功能+ 功能- 参数+ 参数-电力 密码 确认
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
YK:
NOP
MOV A,SYS_STATE
CJNE A,#0BH,YK_STATE_ERROR
YK_STATE_ERROR:
JC YK_STATE_RIGHT
MOV YK_VALUE,#00H
MOV SYS_STATE,#00H
LJMP YK_END
YK_STATE_RIGHT:
MOV B,#03H
MUL AB
MOV DPTR,#YK_MENU_TAB
JMP @A+DPTR
YK_MENU_TAB:
LJMP YK_MENU0 ;自动显示
LJMP YK_MENU1 ;手动显示
LJMP YK_MENU2 ;密码输入
LJMP YK_MENU3 ;设置显示
LJMP YK_MENU4 ;设置波特率
LJMP YK_MENU5 ;设置地址
LJMP YK_MENU6 ;设置电压
LJMP YK_MENU7 ;设置电流
LJMP YK_MENU8 ;复位
LJMP YK_MENU9 ;保存设置退出
LJMP YK_MENU10 ;不保存退出
LJMP YK_END
YK_END:
CLR YK_RD1
CLR YK_RD2
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;自动显示
YK_MENU0:
NOP
JNB YK_RD1,YK_MENU0_END
MOV A,YK_VALUE
ANL A,#07H
CJNE A,#00H,YK_MENU0_1
SJMP YK_MENU0_END
YK_MENU0_1:
CJNE A,#01H,YK_MENU0_2
SJMP YK_MENU0_END
YK_MENU0_2:
CJNE A,#02H,YK_MENU0_3
MOV SHOWLP,#0FFH
SETB SHOW_F
MOV SYS_STATE,#01H
SJMP YK_MENU0_END
YK_MENU0_3:
CJNE A,#03H,YK_MENU0_4
MOV SHOWLP,#0FFH
SETB SHOW_F
MOV SYS_STATE,#01H
SJMP YK_MENU0_END
YK_MENU0_4:
CJNE A,#04H,YK_MENU0_END
MOV SYS_STATE,#02H
MOV R0,#SLAVE_TEMP
MOV @R0,#00H
SJMP YK_MENU0_END
YK_MENU0_END:
LJMP YK_END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;手动显示
YK_MENU1:
NOP
JNB YK_RD2, YK_MENU1_END
MOV A,YK_VALUE
ANL A,#07H
CJNE A,#00H,YK_MENU1_1
MOV SHOWLP,#0FFH
SETB SHOW_F
MOV SYS_STATE,#00H
SJMP YK_MENU1_END
YK_MENU1_1:
CJNE A,#01H,YK_MENU1_2
MOV SHOWLP,#0FFH
SETB SHOW_F
MOV SYS_STATE,#00H
SJMP YK_MENU1_END
YK_MENU1_2:
CJNE A,#02H,YK_MENU1_3
JNB YK_RD1,YK_MENU1_END
INC SHOWLP
ANL SHOWLP,#07H
SETB SHOW_F
SJMP YK_MENU1_END
YK_MENU1_3:
CJNE A,#03H,YK_MENU1_END
JNB YK_RD1,YK_MENU1_END
DEC SHOWLP
ANL SHOWLP,#07H
SETB SHOW_F
;SJMP YK_MENU1_END
YK_MENU1_END:
LJMP YK_END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;密码输入
YK_MENU2:
NOP
JNB YK_RD2, YK_MENU2_END
MOV A,YK_VALUE
ANL A,#07H
CJNE A,#05H,YK_MENU2_1
MOV R0,#SLAVE_TEMP
LCALL INCSLAVE
SJMP YK_MENU2_END
YK_MENU2_1:
CJNE A,#06H,YK_MENU2_1_1
MOV R0,#SLAVE_TEMP
MOV A,@R0
XRL A,SLAVE
JNZ YK_MENU2_1_1
MOV R0,#SHOWMD_TEMP
MOV R5,#SHOWMDH_AD
MOV R4,#SHOWMDL_AD
MOV R2,#08H
LCALL AREAD
MOV SYS_STATE,#03H
SJMP YK_MENU2_END
YK_MENU2_1_1:
MOV SYS_STATE,#00H
;SJMP YK_MENU2_END
YK_MENU2_END:
LJMP YK_END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;设置显示
YK_MENU3:
NOP
JNB YK_RD2, YK_MENU3_END
MOV A,YK_VALUE
ANL A,#07H
CJNE A,#00H,YK_MENU3_1
JNB YK_RD1,YK_MENU3_END
MOV SYS_STATE,#04H
SJMP YK_MENU1_END
YK_MENU3_1:
CJNE A,#01H,YK_MENU3_2
JNB YK_RD1,YK_MENU3_END
MOV SYS_STATE,#0AH
SJMP YK_MENU3_END
YK_MENU3_2:
CJNE A,#02H,YK_MENU3_3
MOV R0,#SHOWMD_TEMP
LCALL INCSHOWMD
SJMP YK_MENU3_END
YK_MENU3_3:
CJNE A,#03H,YK_MENU3_END
MOV R0,#SHOWMD_TEMP
LCALL DECSHOWMD
;SJMP YK_MENU3_END
YK_MENU3_END:
LJMP YK_END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;设置波特率
YK_MENU4:
NOP
JNB YK_RD2,YK_MENU4_END
MOV A,YK_VALUE
ANL A,#07H
CJNE A,#00H,YK_MENU4_1
JNB YK_RD1,YK_MENU4_END
MOV SYS_STATE,#05H
SJMP YK_MENU4_END
YK_MENU4_1:
CJNE A,#01H,YK_MENU4_2
JNB YK_RD1,YK_MENU4_END
MOV SYS_STATE,#03H
SJMP YK_MENU4_END
YK_MENU4_2:
CJNE A,#02H,YK_MENU4_3
MOV R0,#BRATE_TEMP
LCALL INCBRATE
SJMP YK_MENU4_END
YK_MENU4_3:
CJNE A,#03H,YK_MENU4_END
MOV R0,#BRATE_TEMP
LCALL DECBRATE
;SJMP YK_MENU4_END
YK_MENU4_END:
LJMP YK_END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;设置地址
YK_MENU5:
NOP
JNB YK_RD2,YK_MENU5_END
MOV A,YK_VALUE
ANL A,#07H
CJNE A,#00H,YK_MENU5_1
JNB YK_RD1,YK_MENU5_END
MOV SYS_STATE,#06H
SJMP YK_MENU5_END
YK_MENU5_1:
CJNE A,#01H,YK_MENU5_2
JNB YK_RD1,YK_MENU5_END
MOV SYS_STATE,#04H
SJMP YK_MENU5_END
YK_MENU5_2:
CJNE A,#02H,YK_MENU5_3
MOV R0,#SLAVE_TEMP
LCALL INCSLAVE
SJMP YK_MENU5_END
YK_MENU5_3:
CJNE A,#03H,YK_MENU5_END
MOV R0,#SLAVE_TEMP
LCALL DECSLAVE
;SJMP YK_MENU5_END
YK_MENU5_END:
LJMP YK_END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;设置电压
YK_MENU6:
NOP
JNB YK_RD2,YK_MENU6_END
MOV A,YK_VALUE
ANL A,#07H
CJNE A,#00H,YK_MENU6_1
JNB YK_RD1,YK_MENU6_END
MOV SYS_STATE,#07H
SJMP YK_MENU6_END
YK_MENU6_1:
CJNE A,#01H,YK_MENU6_2
JNB YK_RD1,YK_MENU6_END
MOV SYS_STATE,#05H
SJMP YK_MENU6_END
YK_MENU6_2:
CJNE A,#02H,YK_MENU6_3
MOV A,#01H
JB YK_RD1,YK_MENU6_2_1
MOV A,#0AH
YK_MENU6_2_1:
MOV R0,#KU1L_TEMP
LCALL INCKU
SJMP YK_MENU6_END
YK_MENU6_3:
CJNE A,#03H,YK_MENU6_END
MOV A,#01H
JB YK_RD1,YK_MENU6_3_1
MOV A,#0AH
YK_MENU6_3_1:
MOV R0,#KU1L_TEMP
LCALL DECKU
;SJMP YK_MENU6_END
YK_MENU6_END:
LJMP YK_END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;设置电流
YK_MENU7:
NOP
JNB YK_RD2,YK_MENU7_END
MOV A,YK_VALUE
ANL A,#07H
CJNE A,#00H,YK_MENU7_1
JNB YK_RD1,YK_MENU7_END
MOV SYS_STATE,#08H
SJMP YK_MENU6_END
YK_MENU7_1:
CJNE A,#01H,YK_MENU7_2
JNB YK_RD1,YK_MENU7_END
MOV SYS_STATE,#06H
SJMP YK_MENU7_END
YK_MENU7_2:
CJNE A,#02H,YK_MENU7_3
MOV A,#01H
JB YK_RD1,YK_MENU7_2_1
MOV A,#0AH
YK_MENU7_2_1:
MOV R0,#KI1L_TEMP
LCALL INCKI
SJMP YK_MENU7_END
YK_MENU7_3:
CJNE A,#03H,YK_MENU7_END
MOV A,#01H
JB YK_RD1,YK_MENU7_3_1
MOV A,#0AH
YK_MENU7_3_1:
MOV R0,#KI1L_TEMP
LCALL DECKI
;SJMP YK_MENU7_END
YK_MENU7_END:
LJMP YK_END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;复位
YK_MENU8:
NOP
JNB YK_RD2,YK_MENU8_END
MOV A,YK_VALUE
ANL A,#07H
CJNE A,#00H,YK_MENU8_1
JNB YK_RD1,YK_MENU8_END
MOV SYS_STATE,#09H
SJMP YK_MENU8_END
YK_MENU8_1:
CJNE A,#01H,YK_MENU8_2
JNB YK_RD1,YK_MENU8_END
MOV SYS_STATE,#07H
SJMP YK_MENU8_END
YK_MENU8_2:
CJNE A,#02H,YK_MENU8_3
CLR EA
SJMP $
SJMP YK_MENU8_END
YK_MENU8_3:
CJNE A,#03H,YK_MENU8_END
;SJMP YK_MENU8_END
YK_MENU8_END:
LJMP YK_END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;保存设置
YK_MENU9:
NOP
JNB YK_RD1,YK_MENU9_END
MOV A,YK_VALUE
ANL A,#07H
CJNE A,#00H,YK_MENU9_1
MOV SYS_STATE,#0AH
SJMP YK_MENU9_END
YK_MENU9_1:
CJNE A,#01H,YK_MENU9_2
MOV SYS_STATE,#08H
SJMP YK_MENU9_END
YK_MENU9_2:
CJNE A,#02H,YK_MENU9_3
MOV R0,#SHOWMD_TEMP
MOV R5,#SHOWMDH_AD
MOV R4,#SHOWMDL_AD
MOV R2,#08H
LCALL AWRITE
NOP
LCALL READ_EE
MOV SYS_STATE,#00H
SJMP YK_MENU9_END
YK_MENU9_3:
CJNE A,#03H,YK_MENU9_END
;SJMP YK_MENU9_END
YK_MENU9_END:
LJMP YK_END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;退出菜单
YK_MENU10:
NOP
JNB YK_RD1,YK_MENU10_END
MOV A,YK_VALUE
ANL A,#07H
CJNE A,#00H,YK_MENU10_1
MOV SYS_STATE,#03H
SJMP YK_MENU10_END
YK_MENU10_1:
CJNE A,#01H,YK_MENU10_2
MOV SYS_STATE,#09H
SJMP YK_MENU10_END
YK_MENU10_2:
CJNE A,#02H,YK_MENU10_3
MOV SYS_STATE,#00H
SJMP YK_MENU9_END
YK_MENU10_3:
CJNE A,#03H,YK_MENU10_END
;SJMP YK_MENU9_END
YK_MENU10_END:
LJMP YK_END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -