📄 yjp_nxsx.asm
字号:
MOV A,#0
MOVX @DPTR,A
INC DPTR
MOVX A,@DPTR
ANL A,#0FH
MOV B,A
MOVX @DPTR,A
MOV A,#MW25
MOV DPL,A
MOV DPH,#01H
MOV A,#0
MOVX @DPTR,A
INC DPTR
MOV A,B
MOVX @DPTR,A
RET
;;===================================================================
;;...................................................................
CK_DATA2COM:
MOV DPH,#01H
MOV DPL,A
INC DPTR
MOVX A,@DPTR
CLR C
SUBB A,#24
JNC CK_DATA2COMERR
INC DPTR
INC DPTR
MOVX A,@DPTR
CLR C
SUBB A,#60
JNC CK_DATA2COMERR
INC DPTR
INC DPTR
MOVX A,@DPTR
CLR C
SUBB A,#24
JNC CK_DATA2COMERR
INC DPTR
INC DPTR
MOVX A,@DPTR
CLR C
SUBB A,#60
JNC CK_DATA2COMERR
RET
CK_DATA2COMERR:
MOV R7,#1
RET
;;...................................................................
CK_DATA2END:RET
CK_DATA2: MOV R7,#0
MOV A,#MW07
LCALL CK_DATA2COM
MOV A,#MW11
LCALL CK_DATA2COM
MOV A,#MW15
LCALL CK_DATA2COM
MOV A,#MW19
LCALL CK_DATA2COM
MOV A,R7
JZ CK_DATA2END
;;第1时段
MOV A,#MW07 ;;校验有错,纠正
MOV DPL,A
MOV DPH,#01H
MOV A,#0
MOVX @DPTR,A ;;MW07高位清0
INC DPTR
MOV A,#0
MOVX @DPTR,A ;;00时
INC DPTR
MOV A,#0
MOVX @DPTR,A ;;MW08高位清0
INC DPTR
MOV A,#30
MOVX @DPTR,A ;;30分
INC DPTR
MOV A,#0
MOVX @DPTR,A ;;MW09高位清0
INC DPTR
MOV A,#05
MOVX @DPTR,A ;;05时
INC DPTR
MOV A,#0
MOVX @DPTR,A ;;MW10高位清0
INC DPTR
MOV A,#30
MOVX @DPTR,A ;;30分
;;第2时段
INC DPTR
MOV A,#0
MOVX @DPTR,A ;;MW11高位清0
INC DPTR
MOV A,#06
MOVX @DPTR,A ;;06时
INC DPTR
MOV A,#0
MOVX @DPTR,A ;;MW12高位清0
INC DPTR
MOV A,#30
MOVX @DPTR,A ;;30分
INC DPTR
MOV A,#0
MOVX @DPTR,A ;;MW13高位清0
INC DPTR
MOV A,#11
MOVX @DPTR,A ;;11时
INC DPTR
MOV A,#0
MOVX @DPTR,A ;;MW14高位清0
INC DPTR
MOV A,#30
MOVX @DPTR,A ;;30分
;;第3时段
INC DPTR
MOV A,#0
MOVX @DPTR,A ;;MW15高位清0
INC DPTR
MOV A,#12
MOVX @DPTR,A ;;12时
INC DPTR
MOV A,#0
MOVX @DPTR,A ;;MW16高位清0
INC DPTR
MOV A,#30
MOVX @DPTR,A ;;30分
INC DPTR
MOV A,#0
MOVX @DPTR,A ;;MW17高位清0
INC DPTR
MOV A,#17
MOVX @DPTR,A ;;17时
INC DPTR
MOV A,#0
MOVX @DPTR,A ;;MW18高位清0
INC DPTR
MOV A,#30
MOVX @DPTR,A ;;30分
;;第4时段
INC DPTR
MOV A,#0
MOVX @DPTR,A ;;MW19高位清0
INC DPTR
MOV A,#18
MOVX @DPTR,A ;;18时
INC DPTR
MOV A,#0
MOVX @DPTR,A ;;MW20高位清0
INC DPTR
MOV A,#30
MOVX @DPTR,A ;;30分
INC DPTR
MOV A,#0
MOVX @DPTR,A ;;MW21高位清0
INC DPTR
MOV A,#23
MOVX @DPTR,A ;;23时
INC DPTR
MOV A,#0
MOVX @DPTR,A ;;MW22高位清0
INC DPTR
MOV A,#30
MOVX @DPTR,A ;;30分
MOV R1,#16
MOV R0,#MW07
CK_SET1: LCALL WR24C021
LCALL DELAY_10MS
LCALL DELAY_10MS
INC R0
INC R0
DJNZ R1,CK_SET1
RET
;;===================================================================
AUTO_LCD_PEND:RET
AUTO_LCD_POWER:
MOV A,LCD_POW_BZ
JZ AUTO_LCD_PEND1
CLR LCD_POWER
MOV A,LCD_POW_TBZ
JNZ AUTO_LCD1
MOV LCD_POW_TBZ,#1
MOV LCD_POW_TIME,#120
RET
AUTO_LCD1: MOV A,LCD_POW_TIME
JNZ AUTO_LCD_PEND
MOV LCD_POW_TBZ,#0 ;时间到,关背光
MOV LCD_POW_BZ,#0
SETB LCD_POWER
MOV SET_X,#0 ;清除设置状态
MOV FLASH_X,#0
MOV CLR_CUR_BZ,#1
RET
AUTO_LCD_PEND1:
SETB LCD_POWER
RET
;;====================================
READKEY: LCALL READKEY1
LCALL READKEY2
LCALL READKEY3
RET
READKEY1: MOV A,P1 ;检查1#键区
ORL A,#0F0H
MOV P1,A
CLR KEY1_SELECT
DB 0,0,0,0,0,0,0,0
MOV A,P1
ORL A,#0FH
MOV R1,A
SETB KEY1_SELECT
RET
READKEY2: ;检查2#键区
MOV A,P1
ORL A,#0F0H
MOV P1,A
CLR KEY2_SELECT
DB 0,0,0,0,0,0,0,0
MOV A,P1
ORL A,#0FH
MOV R2,A
SETB KEY2_SELECT
RET
READKEY3: ;检查3#键区
MOV A,P1
ORL A,#0F0H
MOV P1,A
CLR KEY3_SELECT
DB 0,0,0,0,0,0,0,0
MOV A,P1
ORL A,#0FH
MOV R3,A
SETB KEY3_SELECT
RET
;;====================================
CK_KEY: MOV R7,#0
LCALL CK_KEYA
LCALL CK_KEYB
LCALL CK_KEYC
RET
CK_KEYA: MOV A,R1
CLR C
SUBB A,#0FFH
JZ CK_KEYEND
MOV R7,#1
RET
CK_KEYB: MOV A,R2
CLR C
SUBB A,#0FFH
JZ CK_KEYEND
MOV R7,#2
RET
CK_KEYC: MOV A,R3
CLR C
SUBB A,#0FFH
JZ CK_KEYEND
MOV R7,#3
CK_KEYEND: RET
;;====================================
DELAY20: MOV R6,#0FFH
DJNZ R6,$
RET
;;====================================
CK_KEY1: MOV A,KEY_LIAN
JZ CK_KEYEND
MOV KEY_LIAN,#0
MOV KEY_BUF1,#0FFH
MOV KEY_BUF2,#0FFH
MOV KEY_BUF3,#0FFH
MOV A,CLR_BIT_X
JNZ CK_KEY1A
RET
;;....................................
;;如果键盘有瞬时线圈操作,则在键释放
;;时清除保存在CLR_BIT_X(Y)映像中相应
;;的位
;;....................................
CK_KEY1A: MOV A,CLR_BIT_X
ANL A,#7FH
MOV DPL,A
MOV R6,A
MOV DPH,#01H
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
MOV CLR_BIT_X,#0
MOV A,CLR_BIT_Y
MOV CLR_BIT_Y,#0
MOV B,#3
MUL AB
MOV DPTR,#JMPBBC_BITTAB
JMP @A+DPTR
JMPBBC_BITTAB:
LJMP BBC_BIT00
LJMP BBC_BIT01
LJMP BBC_BIT02
LJMP BBC_BIT03
LJMP BBC_BIT04
LJMP BBC_BIT05
LJMP BBC_BIT06
LJMP BBC_BIT07
;;....................................
BBC_BIT00: MOV A,R5
MOV C,ACC.0
CLR C
MOV ACC.0,C
MOV R5,A
MOV A,R6
MOV DPL,A
MOV DPH,#01H
MOV A,R4
MOVX @DPTR,A
INC DPTR
MOV A,R5
MOVX @DPTR,A
RET
;;....................................
BBC_BIT01: MOV A,R5
MOV C,ACC.1
CLR C
MOV ACC.1,C
MOV R5,A
MOV A,R6
MOV DPL,A
MOV DPH,#01H
MOV A,R4
MOVX @DPTR,A
INC DPTR
MOV A,R5
MOVX @DPTR,A
RET
;;....................................
BBC_BIT02: MOV A,R5
MOV C,ACC.2
CLR C
MOV ACC.2,C
MOV R5,A
MOV A,R6
MOV DPL,A
MOV DPH,#01H
MOV A,R4
MOVX @DPTR,A
INC DPTR
MOV A,R5
MOVX @DPTR,A
RET
;;....................................
BBC_BIT03: MOV A,R5
MOV C,ACC.3
CLR C
MOV ACC.3,C
MOV R5,A
MOV A,R6
MOV DPL,A
MOV DPH,#01H
MOV A,R4
MOVX @DPTR,A
INC DPTR
MOV A,R5
MOVX @DPTR,A
RET
;;....................................
BBC_BIT04: MOV A,R5
MOV C,ACC.4
CLR C
MOV ACC.4,C
MOV R5,A
MOV A,R6
MOV DPL,A
MOV DPH,#01H
MOV A,R4
MOVX @DPTR,A
INC DPTR
MOV A,R5
MOVX @DPTR,A
RET
;;....................................
BBC_BIT05: MOV A,R5
MOV C,ACC.5
CLR C
MOV ACC.5,C
MOV R5,A
MOV A,R6
MOV DPL,A
MOV DPH,#01H
MOV A,R4
MOVX @DPTR,A
INC DPTR
MOV A,R5
MOVX @DPTR,A
RET
;;....................................
BBC_BIT06: MOV A,R5
MOV C,ACC.6
CLR C
MOV ACC.6,C
MOV R5,A
MOV A,R6
MOV DPL,A
MOV DPH,#01H
MOV A,R4
MOVX @DPTR,A
INC DPTR
MOV A,R5
MOVX @DPTR,A
RET
;;....................................
BBC_BIT07: MOV A,R5
MOV C,ACC.7
CLR C
MOV ACC.7,C
MOV R5,A
MOV A,R6
MOV DPL,A
MOV DPH,#01H
MOV A,R4
MOVX @DPTR,A
INC DPTR
MOV A,R5
MOVX @DPTR,A
RET
;;====================================
JCK_KEY1: LJMP CK_KEY1
KEYEND: RET
KEY: LCALL READKEY
LCALL CK_KEY
MOV A,R7
JZ JCK_KEY1 ;所有键均处于释放状态
MOV A,KEY_LIAN
JNZ KEYEND
LCALL DELAY30
LCALL READKEY
LCALL CK_KEY
MOV A,R7
JZ KEYEND ;抖动,退出
MOV A,R7
XRL A,#01H
JZ CK_KEY2 ;1#键区有键被按压
MOV A,R7
XRL A,#02H
JZ CK_KEY3 ;2#键区有键被按压
MOV A,R7
XRL A,#03H
JZ CK_KEY4 ;3#键区有键被按压
RET
;;====================================
CK_KEY2END:RET
CK_KEY2: MOV A,R1
CLR C
SUBB A,KEY_BUF1
JZ CK_KEY2END
MOV A,R1
MOV KEY_BUF1,A
MOV KEY_LIAN,#1
LCALL BEEP
MOV A,LCD_POW_BZ
JNZ CK_KEY21
MOV LCD_POW_BZ,#1
RET
CK_KEY21: MOV LCD_POW_TIME,#120
LCALL KEY1_RUN ;执行键功能
RET
;;====================================
CK_KEY3END:RET
CK_KEY3: MOV A,R2
CLR C
SUBB A,KEY_BUF2
JZ CK_KEY3END
MOV A,R2
MOV KEY_BUF2,A
MOV KEY_LIAN,#1
LCALL BEEP
MOV A,LCD_POW_BZ
JNZ CK_KEY31
MOV LCD_POW_BZ,#1
RET
CK_KEY31: MOV LCD_POW_TIME,#120
LCALL KEY2_RUN ;执行键功能
RET
;;====================================
CK_KEY4END:RET
CK_KEY4: MOV A,R3
CLR C
SUBB A,KEY_BUF3
JZ CK_KEY4END
MOV A,R3
MOV KEY_BUF3,A
MOV KEY_LIAN,#1
LCALL BEEP
MOV A,LCD_POW_BZ
JNZ CK_KEY41
MOV LCD_POW_BZ,#1
RET
CK_KEY41: MOV LCD_POW_TIME,#120
LCALL KEY3_RUN ;执行键功能
RET
;;====================================
BEEP: CLR BEEB
LCALL DELAY40
SETB BEEB
RET
DELAY30: MOV R5,#99H
DELAY301: MOV R6,#99H
DJNZ R6,$
DJNZ R5,DELAY301
RET
DELAY40: MOV R7,#2
DELAY401: MOV R5,#099H
DELAY402: MOV R6,#0FFH
DJNZ R6,$
LCALL RST_WDOG
DJNZ R5,DELAY402
DJNZ R7,DELAY401
RET
;;====================================
KEY1_RUN:
MOV A,KEY_BUF1
JNB ACC.6,JJKEY1_0
JNB ACC.5,JJKEY1_1
JNB ACC.4,JJKEY1_2
JNB ACC.7,JJKEY1_3
RET
JJKEY1_0: LJMP KEY1_0 ;上页
JJKEY1_1: LJMP KEY1_1 ;下页
JJKEY1_2: LJMP KEY1_2 ; 左
JJKEY1_3: LJMP KEY1_3 ; 右
;;====================================
KEY2_RUN:
MOV A,KEY_BUF2
JNB ACC.5,JJKEY2_0
JNB ACC.6,JJKEY2_1
JNB ACC.4,JJKEY2_2
JNB ACC.7,JJKEY2_3
RET
JJKEY2_0: LJMP KEY2_0 ; 上
JJKEY2_1: LJMP KEY2_1 ; 下
JJKEY2_2: LJMP KEY2_2 ;SET
JJKEY2_3: LJMP KEY2_3 ;ENT
;;====================================
KEY3_RUN:
MOV A,KEY_BUF3
JNB ACC.5,JJKEY3_0
JNB ACC.7,JJKEY3_1
JNB ACC.6,JJKEY3_2
JNB ACC.4,JJKEY3_3
RET
JJKEY3_0: LJMP KEY3_0 ;F1
JJKEY3_1: LJMP KEY3_1 ;F2
JJKEY3_2: LJMP KEY3_2 ;F3
JJKEY3_3: LJMP KEY3_3 ;F4
;;====================================
DATA_CHANG2:
MOV R2,#00H
MOV R3,#00H
MOV R6,#27H ;/10000
MOV R7,#10H
LCALL NDIV1
MOV A,R5
MOV SHOW1BUF5,A
MOV A,R2
MOV R4,A
MOV A,R3
MOV R5,A
MOV R2,#00H
MOV R3,#00H
MOV R6,#03H ;/1000
MOV R7,#0E8H
LCALL NDIV1
MOV A,R5
MOV SHOW1BUF4,A
MOV A,R2
MOV R4,A
MOV A,R3
MOV R5,A
MOV R2,#00H
MOV R3,#00H
MOV R6,#00H ;/100
MOV R7,#64H
LCALL NDIV1
MOV A,R5
MOV SHOW1BUF3,A
MOV A,R3
MOV B,#10
DIV AB
MOV SHOW1BUF2,A
MOV SHOW1BUF1,B
RET
;;====================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -