📄 uvi_4245 nov 08 08.dt
字号:
BANK 0
JBC PRST,FSEC
LJMP D_HOUR_DIS1 ;闪
MOV A,@0X0A
MOV DIS1,A
MOV DIS2,A
LJMP D_HOUR_DIS2
D_HOUR_DIS1:
MOV A,D_HOUR
MOV TEMP1,A
LCALL DISH
MOV DIS1,DIS1 ;小时高位为0不显示
JBS STATUS,Z
LJMP D_HOUR_DIS1A
MOV A,@0X0A
MOV DIS1,A
D_HOUR_DIS1A:
BS FLAG,FCOLDIS
D_HOUR_DIS2:
LCALL SEG_COM
LCALL COM_RAM
LJMP D_AN_JUT
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
D_AN_JUT:
BANK 0
JBS PRST,F50MS
LJMP D_AN_JUT
BC PRST,F50MS
DJZ T10SEC
LJMP D_AN_JUT1
LJMP D_TIME_ADJ_RET ;10SEC无键按下,返回
D_AN_JUT1:
NOP
NOP
D_AN_JUT1A: ;FAN=0,SET无长按 判断UP UV按键 及SET短按
BANK 0
JBS PORTB,SET ;模式设置
LJMP D_SET_KEY ;长按无效时便判断为短按,之后便执行相应按键功能
BC FLAG1,SET_KEY_LONG
JBS PORT7,UP
LJMP D_UP_KEY ;加
BC FLAG1,UP_KEY_LONG
JBS PORTB,UV
LJMP D_DOWN_KEY
BC FLAG1,DOWN_KEY_LONG
LJMP D_TIME_ADJ1 ;无按键,返回计时10S
;---------------------------------模式设置键
D_SET_KEY:
BANK 0
JBC FLAG1,SET_KEY_LONG
LJMP D_SET_LONG
D_SET_SHORT:
LJMP D_SET_DO ;短按
D_SET_LONG:
LJMP D_TIME_ADJ1
D_SET_DO:
BANK 0
BS FLAG1,SET_KEY_LONG ;SET键有效
MOV A,@0XC8 ;10SEC重设计时开始
MOV T10SEC,A
INC T_COUNT ;1:MD 2:24TURN 3:MIN 4:HOUR 5:DAY 6: MONTH
LJMP D_TIME_ADJ1
;-------------------------------------------加功能键
D_UP_KEY:
BANK 0
JBC FLAG1,UP_KEY_LONG
LJMP D_UP_LONG
D_UP_SHORT:
MOV A,@0X14 ;1S
MOV UP_TIME,A ;开始判断长按时间为1.25s以后0.25S执行一次
MOV A,@0X05 ;0.25S
MOV UP_TIME1,A
LJMP D_UP_DO
D_UP_LONG:
BANK 0
DJZ UP_TIME
LJMP D_TIME_ADJ1 ;1S(判断长按)
MOV A,@0X01
MOV UP_TIME,A
DJZ UP_TIME1 ;0.25S(长按动作时间)
LJMP D_TIME_ADJ1
MOV A,@0X05
MOV UP_TIME1,A
LJMP D_UP_DO
D_UP_DO:
BANK 0 ;UP键有效
BS FLAG1,UP_KEY_LONG
MOV A,@0XC8
MOV T10SEC,A ;10SEC
MOV A,T_COUNT
MOV TEMP1,A
MOV A,@0X01
XOR A,TEMP1
JBC STATUS,Z
LJMP D_TIME_ADJ1
MOV A,@0X02
XOR A,TEMP1
JBC STATUS,Z
LJMP D_MIN_ADJ
MOV A,@0X03
XOR A,TEMP1
JBC STATUS,Z
LJMP D_HOUR_ADJ
NOP
NOP
LJMP D_TIME_ADJ1
;*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
D_MIN_ADJ: ;分计时
INC D_MIN
MOV D_HOUR_MAX,D_HOUR_MAX
JBS STATUS,Z
LJMP D_MIN_ADJ1
MOV A,D_MIN_MAX
ADD A,@0X01
LJMP D_MIN_ADJ2
D_MIN_ADJ1:
MOV A,@0X3C
D_MIN_ADJ2:
SUB A,D_MIN
JBC STATUS,C
CLR D_MIN
LJMP D_TIME_ADJ1
;-------------------------------------------------
D_HOUR_ADJ: ;时计时24小时制
INC D_HOUR
MOV A,D_HOUR_MAX
ADD A,@0X01
SUB A,D_HOUR
JBC STATUS,C
CLR D_HOUR
LJMP D_TIME_ADJ1
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
D_DOWN_KEY:
BANK 0
JBC FLAG1,DOWN_KEY_LONG
LJMP D_DOWN_LONG
D_DOWN_SHORT:
MOV A,@0X14
MOV DOWN_TIME,A
MOV A,@0X05
MOV DOWN_TIME1,A
LJMP D_DOWN_DO
D_DOWN_LONG:
BANK 0
DJZ DOWN_TIME
LJMP D_TIME_ADJ1
MOV A,@0X01
MOV DOWN_TIME,A
DJZ DOWN_TIME1
LJMP D_TIME_ADJ1
MOV A,@0X05
MOV DOWN_TIME1,A
D_DOWN_DO:
BANK 0 ;DOWN键有效
BS FLAG1,DOWN_KEY_LONG
MOV A,@0XC8
MOV T10SEC,A ;10SEC
MOV A,T_COUNT
MOV TEMP1,A
MOV A,@0X01
XOR A,TEMP1
JBC STATUS,Z
LJMP D_TIME_ADJ1
MOV A,@0X02
XOR A,TEMP1
JBC STATUS,Z
LJMP D_MIN_ADJ_D
MOV A,@0X03
XOR A,TEMP1
JBC STATUS,Z
LJMP D_HOUR_ADJ_D
NOP
NOP
LJMP D_TIME_ADJ1
;--------------------------------------------------
D_MIN_ADJ_D: ;分计时
MOV D_MIN,D_MIN
JBS STATUS,Z
LJMP D_MIN_ADJ_D2
MOV D_HOUR_MAX,D_HOUR_MAX
JBC STATUS,Z
LJMP D_MIN_ADJ_D1
MOV A,@0X3C ;59
MOV D_MIN,A
LJMP D_MIN_ADJ_D2
D_MIN_ADJ_D1:
MOV A,D_MIN_MAX
ADD A,@0X01
MOV D_MIN,A
D_MIN_ADJ_D2:
DEC D_MIN
LJMP D_TIME_ADJ1
;-----------------------------------------------------
D_HOUR_ADJ_D: ;时计时24小时制
MOV D_HOUR,D_HOUR
JBS STATUS,Z
LJMP D_HOUR_ADJ_D1
MOV A,D_HOUR_MAX
ADD A,@0X01
MOV D_HOUR,A
D_HOUR_ADJ_D1:
DEC D_HOUR
LJMP D_TIME_ADJ1
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
D_TIME_ADJ_RET:
BANK 0
JBC PORTB,SET
LJMP D_TIME_ADJ_RET1
BANK 0
CLR FLAG
MOV A,D_HOUR
MOV TEMP1,A
LCALL DISH
MOV DIS1,DIS1
JBS STATUS,Z
LJMP WAIT_D_TIME_RET
MOV A,@0X0A
MOV DIS1,A
WAIT_D_TIME_RET:
MOV A,D_MIN
MOV TEMP1,A
LCALL DISL
JBC PRST,FSEC
BS FLAG,FCOLDIS
JBS PRST,FBAT
LJMP WAIT_D_TIME_RET1
JBC PRST,FSEC
BS FLAG,FBATDIS
WAIT_D_TIME_RET1:
LCALL SEG_COM
LCALL COM_RAM
WAIT_D_TIME_RET2:
BANK 0
JBS PRST,F50MS
LJMP WAIT_D_TIME_RET2
BC PRST,F50MS
LJMP D_TIME_ADJ_RET
D_TIME_ADJ_RET1:
BANK 0
BC PRST,FUV
BC FLAG1,UV_SHORT
BC FLAG2,SET_SHORT
BC FLAG2,SET_LONG
BC PRST,FSET
BS PRST,FDEM
RET
;================================================================SET TIME
TIME_SET:
BANK 1
MOV A,@0X00
MOV EIMR,A ;禁止外部按键中断
BANK 0
MOV A,@0X81
MOV IMR,A ;允许定时器1和TCC中断
BS PRST,FAN
BC PRST,FSET
BC PRST,FUV
BC PRST,F50MS
BC FLAG2,SET_SHORT
BC FLAG2,SET_LONG
CLR T_COUNT
MOV A,@0XC8 ;200 10SEC
MOV T10SEC,A ;
BC FLAG1,SET_KEY_LONG
BC FLAG1,UP_KEY_LONG
BC FLAG1,DOWN_KEY_LONG
TIME_ADJ1:
BANK 0
CLR FLAG
MOV A,T_COUNT
MOV TEMP1,A
MOV A,@0X00
XOR A,TEMP1
JBC STATUS,Z
LJMP MD_DIS ;初始进来KEY键必加一
MOV A,@0X01
XOR A,TEMP1
JBC STATUS,Z
LJMP MD_DIS
MOV A,@0X02
XOR A,TEMP1
JBC STATUS,Z
LJMP TURN24_DIS
MOV A,@0X03
XOR A,TEMP1
JBC STATUS,Z
LJMP MIN_DIS
MOV A,@0X04
XOR A,TEMP1
JBC STATUS,Z
LJMP HOUR_DIS
MOV A,@0X05
XOR A,TEMP1
JBC STATUS,Z
LJMP DAY_DIS
MOV A,@0X06
XOR A,TEMP1
JBC STATUS,Z
LJMP MONTH_DIS
NOP
LJMP TIME_ADJ_RET ;返回
;----------------------------------日期
MD_DIS:
BANK 0
CLR FLAG
MOV A,MONTH
MOV TEMP1,A
LCALL DISH
BANK 0
MOV DIS1,DIS1
JBS STATUS,Z
LJMP MD_DIS1A
MOV A,@0X0A
MOV DIS1,A
MD_DIS1A:
BANK 0
MOV A,DAY
MOV TEMP1,A
LCALL DISL
MD_DIS1:
LCALL SEG_COM
LCALL COM_RAM
LJMP AN_JUT
;-----------------------------------------------12/24小时制
TURN24_DIS:
BANK 0
JBC PRST,FSEC
LJMP TURN24_DIS1B
TURN24_DIS1A:
CLR FLAG
MOV A,@0X0A
MOV DIS1,A
MOV DIS2,A
MOV DIS3,A
MOV DIS4,A
LJMP TURN24_DIS2
TURN24_DIS1B:
BANK 0
MOV A,@0X0D
MOV DIS4,A ;NULL
MOV A,@0X0A
MOV DIS3,A ;H
CLR FLAG
MOV A,@0X0C ;12
JBC FLAG1,FLAG_24
MOV A,@0X18 ;24
MOV TEMP1,A
LCALL DISH
TURN24_DIS2:
LCALL SEG_COM
LCALL COM_RAM
LJMP AN_JUT
;----------------------------分
MIN_DIS:
BANK 0
CLR FLAG
JBC FLAG1,FLAG_24
LJMP MIN_DIS2B
MOV A,@0X0C ;pm判断
SUB A,HOUR
JBC STATUS,C
LJMP MIN_DIS2A
BS FLAG,FPMDIS
MOV A,HOUR_12 ;显示12小时制及PM
LJMP MIN_DIS2C
MIN_DIS2A:
BC FLAG,FPMDIS ;下午
MOV A,HOUR_12
LJMP MIN_DIS2C
MIN_DIS2B:
BC FLAG,FPMDIS ;24小时制
MOV A,HOUR
MIN_DIS2C:
MOV TEMP1,A
LCALL DISH
MOV DIS1,DIS1
JBS STATUS,Z
LJMP MIN_DIS1C
MOV A,@0X0A ;小时高位为0不显示
MOV DIS1,A
MIN_DIS1C:
JBC PRST,FSEC
LJMP MIN_DIS1B ;闪
MIN_DIS1A:
MOV A,@0X0A
MOV DIS3,A
MOV DIS4,A ;NO DISPLAY
LJMP MIN_DIS2
MIN_DIS1B:
MOV A,MIN
MOV TEMP1,A
LCALL DISL
BS FLAG,FCOLDIS
MIN_DIS2:
LCALL SEG_COM
LCALL COM_RAM
LJMP AN_JUT
;-------------------------------------------------小时
HOUR_DIS:
BANK 0
CLR FLAG
MOV A,MIN
MOV TEMP1,A
LCALL DISL
BANK 0
JBC FLAG1,FLAG_24
LJMP HOUR_DIS2B ;PM显示
MOV A,@0X0C
SUB A,HOUR
JBC STATUS,C
LJMP HOUR_DIS2B
BS FLAG,FPMDIS
LJMP HOUR_DIS2C
HOUR_DIS2B:
BC FLAG,FPMDIS
HOUR_DIS2C:
BANK 0
JBC PRST,FSEC
LJMP HOUR_DIS1B ;闪
HOUR_DIS1A:
MOV A,@0X0A
MOV DIS1,A
MOV DIS2,A
LJMP HOUR_DIS2
HOUR_DIS1B:
JBC FLAG1,FLAG_24
LJMP HOUR_DIS1D
MOV A,@0X0C
SUB A,HOUR
JBC STATUS,C
LJMP HOUR_DIS1B1
; BS FLAG,FPMDIS ;<=12上午PM
MOV A,HOUR_12
LJMP HOUR_DIS1C
HOUR_DIS1B1:
; BC FLAG,FPMDIS ;AM
MOV A,HOUR_12
LJMP HOUR_DIS1C
HOUR_DIS1D:
; BC FLAG,FPMDIS
MOV A,HOUR
HOUR_DIS1C:
MOV TEMP1,A
LCALL DISH
MOV DIS1,DIS1 ;小时高位为0不显示
JBS STATUS,Z
LJMP HOUR_DIS1F
MOV A,@0X0A
MOV DIS1,A
HOUR_DIS1F:
BS FLAG,FCOLDIS
HOUR_DIS2:
LCALL SEG_COM
LCALL COM_RAM
LJMP AN_JUT
;------------------------------------------------日
DAY_DIS:
BANK 0
CLR FLAG
MOV A,MONTH
MOV TEMP1,A
LCALL DISH
MOV DIS1,DIS1
JBS STATUS,Z
LJMP DAY_DIS1C
MOV A,@0X0A
MOV DIS1,A
DAY_DIS1C:
JBC PRST,FSEC
LJMP DAY_DIS1B
DAY_DIS1A: ;闪
MOV A,@0X0A
MOV DIS3,A
MOV DIS4,A
LJMP DAY_DIS2
DAY_DIS1B:
MOV A,DAY
MOV TEMP1,A
LCALL DISL
DAY_DIS2:
LCALL SEG_COM
LCALL COM_RAM
LJMP AN_JUT
;--------------------------------------月
MONTH_DIS:
BANK 0
CLR FLAG
MOV A,DAY
MOV TEMP1,A
LCALL DISL
JBC PRST,FSEC
LJMP MONTH_DIS1B ;闪
MONTH_DIS1A:
MOV A,@0X0A
MOV DIS1,A
MOV DIS2,A
LJMP MONTH_DIS2
MONTH_DIS1B:
MOV A,MONTH
MOV TEMP1,A
LCALL DISH
MOV DIS1,DIS1
JBS STATUS,Z
LJMP MONTH_DIS2
MOV A,@0X0A
MOV DIS1,A
MONTH_DIS2:
LCALL SEG_COM
LCALL COM_RAM
;------------------------------------------按键判断或10S计时
AN_JUT:
BANK 0
JBS PRST,F50MS
LJMP AN_JUT
BC PRST,F50MS
DJZ T10SEC
LJMP AN_JUT1
LJMP TIME_ADJ_RET ;10SEC无键按下,返回
AN_JUT1:
NOP
NOP
AN_JUT1A: ;FAN=0,SET无长按 判断UP UV按键 及SET短按
BANK 0
JBS PORTB,SET ;模式设置
LJMP SET_KEY_D ;长按无效时便判断为短按,之后便执行相应按键功能
BC FLAG1,SET_KEY_LONG
JBS PORT7,UP
LJMP UP_KEY ;加
BC FLAG1,UP_KEY_LONG
JBS PORTB,UV
LJMP DOWN_KEY
BC FLAG1,DOWN_KEY_LONG
LJMP TIME_ADJ1 ;无按键,返回计时10S
;---------------------------------模式设置键
SET_KEY_D:
BANK 0
JBC FLAG1,SET_KEY_LONG
LJMP SET_LONG_D
SET_SHORT_D:
LJMP SET_DO ;短按
SET_LONG_D:
LJMP TIME_ADJ1
SET_DO:
BANK 0
BS FLAG1,SET_KEY_LONG ;SET键有效
MOV A,@0XC8 ;10SEC重设计时开始
MOV T10SEC,A
INC T_COUNT ;1:MD 2:24TURN 3:MIN 4:HOUR 5:DAY 6: MONTH
LJMP TIME_ADJ1
;-------------------------------------------加功能键
UP_KEY:
BANK 0
JBC FLAG1,UP_KEY_LONG
LJMP UP_LONG
UP_SHORT:
MOV A,@0X14 ;1S
MOV UP_TIME,A ;开始判断长按时间为1.25s以后0.25S执行一次
MOV A,@0X05 ;0.25S
MOV UP_TIME1,A
LJMP UP_DO
UP_LONG:
BANK 0
DJZ UP_TIME
LJMP TIME_ADJ1 ;1S(判断长按)
MOV A,@0X01
MOV UP_TIME,A
DJZ UP_TIME1 ;0.25S(长按动作时间)
LJMP TIME_ADJ1
MOV A,@0X05
MOV UP_TIME1,A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -