📄 uvi_4245 nov 08 08.dt
字号:
JBC STATUS,C
INC VSH
DJZ VBL
LJMP UV_TEST51C
CLR UVI
UV_TEST51D:
MOV A,@0X64 ;UVI=VS/100
SUB VSL,A
JBC STATUS,C
LJMP UV_TEST51E
MOV A,@0X01
SUB VSH,A
JBS STATUS,C
LJMP UV_TEST51F
UV_TEST51E:
INC UVI
MOV A,@0XF0 ;240
SUB A,UVI
JBS STATUS,C
LJMP UV_TEST51D
UV_TEST51F:
NOP
NOP
UV_TEST52:
MOV A,UVI
SUB A,UVIBUF
JBC STATUS,C
LJMP UV_TEST52A ;UVI<=UVIBUF
MOV A,UVIBUF ;UVI>UVIBUF
SUB A,UVI
UV_TEST52A:
MOV TEMP1,A ;TEMP1=|UVI-UVIBUF|
MOV A,@0X02
SUB TEMP1,A
JBS STATUS,C
LJMP UV_TEST52B ;TEMP1<2
MOV A,UVI ;TEMP1>=2 UVIBUF=UVI
MOV UVIBUF,A
LJMP UV_TEST52C
UV_TEST52B:
MOV A,UVIBUF
MOV UVI,A ;TEMP1<2 UVI=UVIBUF 两次测试差小于0.2,UVI不变
UV_TEST52C:
MOV A,@0X03
SUB A,UVI
JBS STATUS,C
CLR UVI ;UVI<0.3 UVI=0
MOV A,UVIMAX
SUB A,UVI
JBS STATUS,C
LJMP UV_TEST52D
MOV A,UVI ;UVI>=UVIMAX UVIMAX=UVI
MOV UVIMAX,A
UV_TEST52D:
MOV A,UVI
MOV TEMP1,A ;最终UVI值
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&30S检测 UV按下 退出显示
UV_TEST61:
BANK 0
CLR FLAG
MOV A,@0X0A
MOV DIS4,A ;NULL
MOV A,@0X00
MOV DIS1,A
MOV DIS2,A
MOV DIS3,A
MOV A,@0XC9 ;201
SUB A,UVI
JBC STATUS,C
LJMP UV_TEST61E ;UVI>20显示HI
UV_TEST61A:
BS FLAG,FDOTDIS ;小数点
MOV A,@0X64 ;百位
SUB A,TEMP1
JBS STATUS,C
LJMP UV_TEST61B
MOV TEMP1,A
INC DIS1
LJMP UV_TEST61A
UV_TEST61B:
MOV A,@0X0A ;十位
SUB A,TEMP1
JBS STATUS,C
LJMP UV_TEST61C
MOV TEMP1,A
INC DIS2
LJMP UV_TEST61B
UV_TEST61C:
MOV A,TEMP1 ;个位
MOV DIS3,A
UV_TEST61D: ;判断DIS1是否为0,若为0则不显示DIS1
MOV A,@0X01
SUB A,DIS1
JBC STATUS,C
LJMP UV_TEST61F
MOV A,@0X0A
MOV DIS1,A ;NULL
LJMP UV_TEST61F
UV_TEST61E: ;显示HI
BANK 0
MOV A,@0X0A
MOV DIS4,A
MOV DIS1,A
BC FLAG,FDOTDIS
MOV A,@0X0B
MOV DIS2,A
MOV A,@0X0C
MOV DIS3,A
UV_TEST61F:
BANK 0
LCALL SEG_COM
LCALL COM_RAM
UV_TEST62: ;判断30s,UV按键
BANK 0
JBC PRST,FAN
LJMP UV_TEST62B ;UV长按未释放
UV_TEST62A:
JBC PORTB,UV
LJMP UV_TEST62C ;30s计时
LJMP UV_TEST7 ;UV 重新按下 退出
UV_TEST62B:
JBC PORTB,UV
BC PRST,FAN ;uv长按释放
UV_TEST62C:
NOP
NOP
UV_TEST62F:
BANK 0
JBS PRST,F50MS
LJMP UV_TEST62F ;50MS未到
BC PRST,F50MS
DJZ T10SEC ;0.5S
LJMP UV_TEST62 ;0.5S不到 检测按键
DJZ T_COUNT
LJMP UV_TEST1 ;30S循环
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&退出显示最大UVI值
UV_TEST7:
BANK 0
MOV A,@0X05
MOV T_COUNT,A ;5S
UV_TEST7A:
BANK 0
MOV A,@0X14
MOV T10SEC,A ;20*50MS=1S
UV_TEST7B:
BANK 0
JBC PRST,FSEC
LJMP UV_TEST7C
CLR FLAG
MOV A,@0X0A
MOV DIS1,A
MOV DIS2,A
MOV DIS3,A
MOV DIS4,A
LJMP UV_TEST7I
UV_TEST7C:
CLR FLAG
MOV A,@0X0A
MOV DIS4,A
MOV A,@0X00
MOV DIS3,A
MOV DIS2,A
MOV DIS1,A
MOV A,UVIMAX
MOV UVI,A
MOV TEMP1,A
MOV A,@0XC9 ;201
SUB A,UVI
JBC STATUS,C
LJMP UV_TEST7H ;>20 显示HI
UV_TEST7D:
BS FLAG,FDOTDIS
MOV A,@0X64
SUB A,TEMP1
JBS STATUS,C
LJMP UV_TEST7E
MOV TEMP1,A
INC DIS1
LJMP UV_TEST7D
UV_TEST7E:
MOV A,@0X0A
SUB A,TEMP1
JBS STATUS,C
LJMP UV_TEST7F
MOV TEMP1,A
INC DIS2
LJMP UV_TEST7E
UV_TEST7F:
MOV A,TEMP1
MOV DIS3,A
UV_TEST7G:
MOV A,@0X01
SUB A,DIS1
JBC STATUS,C
LJMP UV_TEST7I
MOV A,@0X0A
MOV DIS1,A
LJMP UV_TEST7I
UV_TEST7H:
BC FLAG,FDOTDIS
MOV A,@0X0A
MOV DIS1,A
MOV DIS4,A
MOV A,@0X0B ;HI
MOV DIS2,A
MOV A,@0X0C
MOV DIS3,A
UV_TEST7I:
BANK 0
LCALL SEG_COM
LCALL COM_RAM
UV_TEST7J:
BANK 0
JBS PRST,F50MS
LJMP UV_TEST7J
BC PRST,F50MS
DJZ T10SEC ;1SEC
LJMP UV_TEST7B
DJZ T_COUNT
LJMP UV_TEST7A
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
UV_TEST8:
BANK 0
MOV A,@0X81
MOV IMR,A
MOV A,@0XE2
MOV PORT8,A
BC FLAG,FDOTDIS
BS FLAG1,D_MODE_FLAG
CLR TEMP2
MOV A,UVIMAX
MOV TEMP1,A
D_TIME_TAB: ;UVIMAX/10 取UVI整数
BANK 0
MOV A,@0X0A
SUB A,TEMP1
JBS STATUS,C
LJMP D_TIME_TAB1
MOV TEMP1,A
INC TEMP2
LJMP D_TIME_TAB
D_TIME_TAB1:
MOV A,TEMP2
ADD A,TEMP2 ;TEMP*2
ADD A,TEMP2
ADD A,TEMP2
LCALL UVI_TIME_TAB
BANK 0
MOV D_HOUR,A ;倒计时 时(最小)
MOV A,TEMP2
ADD A,TEMP2
ADD A,TEMP2
ADD A,TEMP2
ADD A,@0x01
LCALL UVI_TIME_TAB
BANK 0
MOV D_MIN,A ;分(最小)
MOV A,TEMP2
ADD A,TEMP2
ADD A,TEMP2
ADD A,TEMP2
ADD A,@0X02
LCALL UVI_TIME_TAB
BANK 0
MOV D_HOUR_MAX,A ;(最大)
MOV A,TEMP2
ADD A,TEMP2
ADD A,TEMP2
ADD A,TEMP2
ADD A,@0x03
LCALL UVI_TIME_TAB
BANK 0
MOV D_MIN_MAX,A ;分(最大)
UV_RET:
BC PRST,FSET
BC FLAG2,SET_SHORT
BC FLAG2,SET_LONG
BC PRST,FUV
BC FLAG1,UV_SHORT
BS PRST,FDEM
RET
;========================================================================TIME DOWN MODE
D_TIME_MODE:
BANK 0
BS FLAG2,SET_MODE_FLAG
BC PRST,FDEM
BC PRST,FSET
BC PRST,FUV
BC FLAG1,UV_SHORT
BC PRST,F50MS
BC FLAG2,SET_SHORT
BC FLAG2,SET_LONG
BANK 1
MOV A,@0X00
MOV EIMR,A ;允许SET,UV按键中断
D_TIME_DIS:
BANK 0
MOV A,@0X81
MOV IMR,A ;使能T1,TCC中断(0.5s,50ms)
CLR FLAG
MOV A,D_HOUR
MOV TEMP1,A
LCALL DISH ;时
MOV DIS1,DIS1
JBS STATUS,Z
LJMP D_TIME_DIS1A
MOV A,@0X0A
MOV DIS1,A
D_TIME_DIS1A:
MOV A,D_MIN
MOV TEMP1,A
LCALL DISL ;分
BANK 0
CLR FLAG
BS FLAG,FDDIS
JBC PRST,FSEC
BS FLAG,FCOLDIS ;显示两点
JBS PRST,FBAT ;显示电池符号
LJMP D_TIME_DIS1
JBC PRST,FSEC
BS FLAG,FBATDIS
D_TIME_DIS1:
LCALL SEG_COM
LCALL COM_RAM
SET_SHORT_TEST:
BANK 0
JBC FLAG2,SET_LONG
LJMP SET_LONG_RET
JBC FLAG2,SET_SHORT
LJMP SET_SHORT_RET
JBS PORTB,SET
LJMP D_TIME_DIS_LOOP
MOV SET_KEY_TIME,SET_KEY_TIME
JBS STATUS,Z
LJMP D_TIME_DIS_LOOP
UV_SHORT_TEST:
JBC PRST,FUV
LJMP UV_LONG_RET
JBC FLAG1,UV_SHORT
LJMP UV_SHORT_RET
JBS PORTB,UV
LJMP D_TIME_DIS_LOOP
MOV KEY_TIME,KEY_TIME
JBS STATUS,Z
LJMP D_TIME_DIS_LOOP
POWER_DOWN_D:
BANK 3
MOV A,@0X00
MOV ADCR,A
MOV ADICH,A
MOV ADICL,A ;关AD
BANK 4
MOV A,@0X04
MOV IOC7,A
MOV A,@0XA2
MOV IOC8,A
MOV A,@0X09
MOV IOC9,A ;P90,P93 2.5V,VS
MOV A,@0X00
MOV IOCA,A
MOV A,@0X0C
MOV IOCB,A
MOV A,@0X0C
MOV IOCC,A
BANK 5
MOV A,@0X04
MOV P7PHCR,A ;PULL HIGH
MOV A,@0X0C
MOV PBPHCR,A
MOV A,@0X00
MOV PCPHCR,A
MOV A,@0X00
MOV P8PHCR,A
MOV A,@0X00
MOV P9PHCR,A
MOV PAPHCR,A ;设置上拉
BANK 0
MOV A,@0X04
MOV PORT7,A
MOV A,@0XE2
MOV PORT8,A ;关闭uvi检测
MOV A,@0X09
MOV PORT9,A
MOV A,@0X00
MOV PORTA,A
MOV A,@0X0C
MOV PORTB,A
MOV A,@0X80
MOV IMR,A ;使能T1中断(0.5s)
BANK 4
MOV A,@0XC0
MOV WKCR,A ;允许SET,UV唤醒
BANK 0
BS SCCR,IDLE ;IDLE模式
SLEP
NOP
NOP
NOP
WAKE_UP1:
BANK 0
MOV D_HOUR,D_HOUR
JBS STATUS,Z
LJMP D_TIME_DIS
MOV D_MIN,D_MIN
JBS STATUS,Z
LJMP D_TIME_DIS
D_TIME_MODE_RET:
BANK 0
BC PRST,FUV
BC PRST,FSET
BC FLAG1,UV_SHORT
BC FLAG2,SET_SHORT
BC FLAG2,SET_LONG
BC PRST,FDEM
RET
SET_LONG_RET:
BANK 0
BS FLAG2,SET_LONG
BC PRST,FUV
BC PRST,FSET
BC FLAG1,UV_SHORT
BC FLAG2,SET_SHORT
BC PRST,FDEM
RET
SET_SHORT_RET:
BANK 0
BC PRST,FUV
BC PRST,FSET
BC FLAG1,UV_SHORT
BC FLAG2,SET_SHORT
BC FLAG2,SET_LONG
BC PRST,FDEM
RET
UV_LONG_RET:
BANK 0
BS PRST,FUV
BC PRST,FSET
BC FLAG1,UV_SHORT
BC FLAG2,SET_SHORT
BC FLAG2,SET_LONG
BC PRST,FDEM
RET
UV_SHORT_RET:
BANK 0
BS FLAG1,UV_SHORT
BC PRST,FUV
BC PRST,FSET
BC FLAG2,SET_SHORT
BC PRST,FDEM
BC FLAG2,SET_LONG
RET
D_TIME_DIS_LOOP:
BANK 0
JBS PRST,F50MS
LJMP D_TIME_DIS_LOOP
BC PRST,F50MS
LJMP D_TIME_DIS
;===============================================================SET D_MODE TIME
D_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
D_TIME_ADJ1:
BANK 0
CLR FLAG
MOV A,T_COUNT
MOV TEMP1,A
MOV A,@0X00
XOR A,TEMP1
JBC STATUS,Z
LJMP UV_MAX_DIS ;初始进来KEY键必加一
MOV A,@0X01
XOR A,TEMP1
JBC STATUS,Z
LJMP UV_MAX_DIS
MOV A,@0X02
XOR A,TEMP1
JBC STATUS,Z
LJMP D_MIN_DIS
MOV A,@0X03
XOR A,TEMP1
JBC STATUS,Z
LJMP D_HOUR_DIS
NOP
NOP
LJMP D_TIME_ADJ_RET ;返回
;----------------------------------日期
UV_MAX_DIS:
BANK 0
CLR FLAG
BS FLAG,FDOTDIS
MOV A,@0X0A
MOV DIS4,A
CLR DIS1
CLR DIS2
CLR DIS3
MOV A,UVIMAX
MOV TEMP1,A
UV_MAX_DIS1:
MOV A,@0X64
SUB A,TEMP1
JBS STATUS,C
LJMP UV_MAX_DIS2
MOV TEMP1,A
INC DIS1
LJMP UV_MAX_DIS1
UV_MAX_DIS2:
MOV A,@0X0A
SUB A,TEMP1
JBS STATUS,C
LJMP UV_MAX_DIS3
MOV TEMP1,A
INC DIS2
LJMP UV_MAX_DIS2
UV_MAX_DIS3:
MOV A,TEMP1
MOV DIS3,A
MOV A,@0X01
SUB A,DIS1
JBC STATUS,C
LJMP UV_MAX_DIS_OUT
MOV A,@0X0A
MOV DIS1,A
UV_MAX_DIS_OUT:
BANK 0
LCALL SEG_COM
LCALL COM_RAM
LJMP D_AN_JUT
;----------------------------分
D_MIN_DIS:
BANK 0
CLR FLAG
MOV A,D_HOUR
MOV TEMP1,A
LCALL DISH
MOV DIS1,DIS1
JBS STATUS,Z
LJMP D_MIN_DIS1
MOV A,@0X0A ;小时高位为0不显示
MOV DIS1,A
D_MIN_DIS1:
JBC PRST,FSEC
LJMP D_MIN_DIS1B ;闪
D_MIN_DIS1A:
MOV A,@0X0A
MOV DIS3,A
MOV DIS4,A ;NO DISPLAY
LJMP D_MIN_DIS2
D_MIN_DIS1B:
MOV A,D_MIN
MOV TEMP1,A
LCALL DISL
BS FLAG,FCOLDIS
D_MIN_DIS2:
LCALL SEG_COM
LCALL COM_RAM
LJMP D_AN_JUT
;-------------------------------------------------小时
D_HOUR_DIS:
BANK 0
CLR FLAG
MOV A,D_MIN
MOV TEMP1,A
LCALL DISL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -