?? uvi_4245 nov 08 08.dt
字號:
;=========================================
/*
EM78P510
;CLOCK MAIN: ERC R=51K SUB: 32.768K
;創建日期 2008 11 08
備注:
1, 在時鐘模式下短按UV顯示上一次UV測試最大值,之后進入倒計時模式
2,在倒計時模式下長按SET兩秒進入倒計時時間設置
3,2.5V上面那個電阻(R9=1K)取消,否則無法進行電壓檢測(電池電量檢測)
4,樣機耗電大約在44UA,需要將其降至20UA左右,將TCC50MS中斷喚醒取消
;JASON HUANG
;========================================================CONTROL RESGISTER
*/
;BANK 0
R0 == 0X00
TCC == 0X01
PC == 0X02
STATUS == 0X03
C == 0
Z == 2
R4 == 0X04
R5 == 0X05
PORT7 == 0X07
UP == 2
PORT8 == 0X08
VOUT == 5
POWER == 6
VR == 7
PORT9 == 0X09
V2.5 == 0
VS == 3
PORTA == 0X0A
PORTB == 0X0B
UV == 3
SET == 2
SCCR == 0X0C
IDLE == 3
TWTCR == 0X0D
IMR == 0X0E
ISR == 0X0F
;BANK 1
LCDCR == 0X05
LCDEN == 7
LCDAR == 0X06
LCDBR == 0X07
LCDVCR == 0X08
LCDCCR == 0X09
LCDSCR0 == 0X0A
LCDSCR1 == 0X0B
LCDSCR2 == 0X0C
EIMR == 0X0E
EISR == 0X0F
;BANK 2
T1CR == 0X05
TSR == 0X06
T1PD == 0X07
T1TD == 0X08
T2CR == 0X09
T2PD == 0X0A
T2TD == 0X0B
SPIS == 0X0C
SPIC == 0X0D
SPIR == 0X0E
SPIW == 0X0F
;BANK 3
URC == 0X05
URS == 0X06
URRD == 0X07
URTD == 0X08
ADCR == 0X09
ADRUN == 7
ADICH == 0X0A
ADICL == 0X0B
ADDH == 0X0C
ADDL == 0X0D
EIESH == 0X0E
EIESL == 0X0F
;BANK 4
LEDDCR == 0X05
WBCR == 0X06
BUZE == 2
IOC7 == 0X07
IOC8 == 0X08
IOC9 == 0X09
IOCA == 0X0A
IOCB == 0X0B
IOCC == 0X0C
WKCR == 0X0F
;BANK 5
URC2 == 0X06
P7PHCR == 0X07
P8PHCR == 0X08
P9PHCR == 0X09
PAPHCR == 0X0A
PBPHCR == 0X0B
PCPHCR == 0X0C
;BANK 6
LVRCR == 0X06
P7ODCR == 0X07
P8ODCR == 0X08
P9ODCR == 0X09
PAODCR == 0X0A
PBODCR == 0X0B
PORTC == 0X0C
;=======================================================RAM DEFIND
;BANK 0
TEMP1 == 0X10
TEMP2 == 0X11
DIS1 == 0X12
DIS2 == 0X13
DIS3 == 0X14
DIS4 == 0X15
FLAG == 0X16
FDOTDIS == 0
FPMDIS == 1
FBATDIS == 2
FDDIS == 3
FCOLDIS == 4
PRST == 0X17
FTBAT == 0
FUV == 1
FBAT == 2
FSET == 3
F50MS == 4
FAN == 5
FSEC == 6
FDEM == 7 ;倒計時標志
FLAG1 == 0X18
UV_SHORT== 0
D_MODE_FLAG== 1
FLAG_24 == 2
UV_FLAG == 3
UV_STATE== 4
SET_KEY_LONG== 5
UP_KEY_LONG == 6
DOWN_KEY_LONG== 7
HOUR == 0X19
HOUR_12 == 0X1A
D_HOUR == 0X1B
MIN == 0X1C
D_MIN == 0X1D
SEC == 0X1E
D_SEC == 0X1F
;general resgister
LCDCOUNT == 0X20
COM0BUF == 0X21
COM1BUF == 0X22
COM2BUF == 0X23
COM3BUF == 0X24
POWERTEST1 == 0X25
POWERTEST2 == 0X26
AD_COUNT == 0X27
T_COUNT == 0X28
SHORT_COUNT == 0X29
T10SEC == 0X2A
UVIMAX == 0X2B
UVI == 0X2C
VSH == 0X2D
VSL == 0X2E
VBH == 0X2F
VBL == 0X30
UP_TIME == 0X31
UP_TIME1 == 0X32
DOWN_TIME == 0X33
DOWN_TIME1 == 0X34
KEY_TIME == 0X35
DAY == 0X36
MONTH == 0X37
DAYMAX == 0X38
UVIBUF == 0X39
D_HOUR_MAX == 0X3A
D_MIN_MAX == 0X3B
SPEAK_TIME == 0X3C
FLAG2 == 0X3D
SET_SHORT == 0
SET_FLAG == 1
SET_STATE == 2
SET_LONG == 3
SET_MODE_FLAG== 4
SET_D_TIME_FLAG== 5
SET_KEY_TIME== 0X3E
;================================================================MACRO
BANK0 MACRO
MOV A,@0X00
MOV R5,A
ENDM
BANK1 MACRO
MOV A,@0X01
MOV R5,A
ENDM
BANK2 MACRO
MOV A,@0X02
MOV R5,A
ENDM
BANK3 MACRO
MOV A,@0X03
MOV R5,A
ENDM
BANK4 MACRO
MOV A,@0X04
MOV R5,A
ENDM
BANK5 MACRO
MOV A,@0X05
MOV R5,A
ENDM
BANK6 MACRO
MOV A,@0X06
MOV R5,A
ENDM
BANK7 MACRO
MOV A,@0X07
MOV R5,A
ENDM
;===============================================================INTERRUPTER SOURCE
ORG 0000H
LJMP RESET
NOP
ORG 0003H
LJMP TCC_INT
NOP
ORG 0006H
LJMP EXT_INT
NOP
ORG 0009H
LJMP RESET ;watch dog interrupter
NOP
ORG 000CH
LJMP T1_INT ;timer1 interrupter
NOP
ORG 000FH
LJMP TP_INT ;timer2 interrupter
NOP
ORG 0012H
LJMP TP_INT ;A/D interrupter
NOP
ORG 0015H
LJMP TP_INT ;UART interrupter
NOP
ORG 0018H
LJMP TP_INT ;SPI interrupter
NOP
ORG 001BH
LJMP RESET ;LVD interrupter
;==================================================================TAB
ORG 0X0040
;================================================================UVI值對應的倒計時時間
UVI_TIME_TAB:
ADD PC,A
RETL @0X02 ;UVI=0 時,分
RETL @0X1E
RETL @0X04
RETL @0X1E
RETL @0X01 ;UVI=1
RETL @0X00
RETL @0X03
RETL @0X00
RETL @0X00 ;UVI=2
RETL @0X1E
RETL @0X01
RETL @0X1E
RETL @0X00 ;UVI=3
RETL @0X14
RETL @0X01
RETL @0X00
RETL @0X00 ;UVI=4
RETL @0X0F ;15
RETL @0X00
RETL @0X2D ;45
RETL @0X00
RETL @0X0C ;UVI=5 ;12
RETL @0X00
RETL @0X24 ;36
RETL @0X00
RETL @0X0A ;6 ;10
RETL @0X00
RETL @0X1E ;30
RETL @0X00
RETL @0X09 ;7 ;9
RETL @0X00
RETL @0X1A ;26
RETL @0X00
RETL @0X08 ;8 ;8
RETL @0X00
RETL @0X17 ;23
RETL @0X00
RETL @0X07 ;9 ;7
RETL @0X00
RETL @0X14 ;20
RETL @0X00
RETL @0X06 ;10 ;6
RETL @0X00
RETL @0X12 ;18
RETL @0X00
RETL @0X05 ;11 ;5
RETL @0X00
RETL @0X10 ;16
RETL @0X00
RETL @0X05 ;12 ;5
RETL @0X00
RETL @0X0F ;15
RETL @0X00
RETL @0X05 ;13 ;5
RETL @0X00
RETL @0X0E ;14
RETL @0X00
RETL @0X04 ;14 ;4
RETL @0X00
RETL @0X0D ;13
RETL @0X00
RETL @0X04 ;15 ;4
RETL @0X00
RETL @0X0C ;12
RETL @0X00
RETL @0X03 ;16 ;3
RETL @0X00
RETL @0X0B ;11
RETL @0X00
RETL @0X03 ;17 ;3
RETL @0X00
RETL @0X0A ;10
RETL @0X00
RETL @0X03 ;18 ;3
RETL @0X00
RETL @0X09 ;9
RETL @0X00
RETL @0X03 ;19 ;3
RETL @0X00
RETL @0X08 ;8
RETL @0X00
RETL @0X02 ;20 ;2
RETL @0X00
RETL @0X07 ;7
RETL @0X00
RETL @0X02 ;21 ;2
RETL @0X00
RETL @0X06 ;6
RETL @0X00
RETL @0X02 ;22
RETL @0X00
RETL @0X05
RETL @0X00
RETL @0X02 ;23
RETL @0X00
RETL @0X04
RETL @0X00
RETL @0X02 ;24
RETL @0X00
RETL @0X03
RETL @0X00
RETL @0X01 ;25
RETL @0X00
RETL @0X02
RETL @0X00
RETL @0X01 ;26
RETL @0X00
RETL @0X01
;============================================
DAY_LOOKUP:
ADD PC,A
RETL @0X1F ;0 31
RETL @0X20 ;1 32
RETL @0X1D ;2 29
RETL @0X20 ;3 32
RETL @0X1F ;4 31
RETL @0X20 ;5 32
RETL @0X1F ;6 31
RETL @0X20 ;7 32
RETL @0X20 ;8 32
RETL @0X1F ;9 31
RETL @0X20 ;10 32
RETL @0X1F ;11 31
RETL @0X20 ;12 32
;============================================
;OK COM: 00 XXXXX
;============================================
COM_RAM:
BANK 0
MOV A,@0X08 ;8
MOV LCDCOUNT,A
BANK 1
MOV A,@0X07 ;SEG7-SEG0
MOV LCDAR,A
COM_RAM1:
BANK 0
CLR TEMP1
RRC COM0BUF ;RLC
RLC TEMP1
RRC COM1BUF ;RLC
RLC TEMP1
RRC COM2BUF ;RLC
RLC TEMP1
RRC COM3BUF ;RLC
RLC TEMP1
MOV A,TEMP1
BANK 1
MOV LCDBR,A
DEC LCDAR ;DEC LCDAR
BANK 0
DJZ LCDCOUNT
LJMP COM_RAM1
BANK 1
BS LCDCR,LCDEN
RET
;============================================
;OK G E F D B C A 0
;============================================
SEG_COM:
BANK 0
MOV A,@0X01 ;小數點
MOV TEMP1,A
MOV A,@0X40 ;PM
MOV TEMP2,A
MOV A,DIS1
LCALL LOOKUP
JBC FLAG,FDOTDIS
OR A,TEMP1
JBC FLAG,FPMDIS
OR A,TEMP2
LCALL SEG_COM1
MOV A,@0X01
MOV TEMP1,A
MOV A,DIS2
LCALL LOOKUP
JBC FLAG,FCOLDIS
OR A,TEMP1
LCALL SEG_COM1
MOV A,@0X01
MOV TEMP1,A
MOV A,DIS3
LCALL LOOKUP
JBC FLAG,FDDIS
OR A,TEMP1
LCALL SEG_COM1
MOV A,@0X01
MOV TEMP1,A
MOV A,DIS4
LCALL LOOKUP
JBC FLAG,FBATDIS
OR A,TEMP1
LCALL SEG_COM1
RET
SEG_COM1:
BANK 0
MOV TEMP1,A
RLC TEMP1
RLC COM3BUF
RLC TEMP1
RLC COM2BUF
RLC TEMP1
RLC COM1BUF
RLC TEMP1
RLC COM0BUF
RLC TEMP1
RLC COM3BUF
RLC TEMP1
RLC COM2BUF
RLC TEMP1
RLC COM1BUF
RLC TEMP1
RLC COM0BUF
RET
LOOKUP: ;A,F,E,D,B,G,C,0
ADD PC,A
RETL @0XFA ;0
RETL @0X0A ;1
RETL @0XBC ;2
RETL @0X9E ;3
RETL @0X4E ;4
RETL @0XD6 ;5
RETL @0XF6 ;6
RETL @0X8A ;7
RETL @0XFE ;8
RETL @0XDE ;9
RETL @0X00 ;A NULL
RETL @0X6E ;B H 0807
RETL @0X60 ;C I 0807
RETL @0X6E ;D H
;=====================================================================INITIAL
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&I/O BANK4
RESET:
DISI
BANK 4
MOV A,@0X04
MOV IOC7,A ;P72 UP
MOV A,@0XA2
MOV IOC8,A ;P86 POWER
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
MOV A,@0X00
MOV LEDDCR,A
MOV A,@0X03
MOV WBCR,A ;BUZ=0 4K WATCH TIME
MOV A,@0XC0
MOV WKCR,A ;中斷喚醒 int7,6
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&BANK0
BANK 0
MOV A,@0X38
MOV TCC,A
MOV A,@0X00
MOV STATUS,A
MOV A,@0XFF
MOV R4,A ;BANK 控制位
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,@0X09
MOV SCCR,A ;idle=1 主頻3.997M PLL
MOV A,@0X0A
MOV TWTCR,A ;看門狗,TCC 8分頻 32.768k
MOV A,@0X81
MOV IMR,A ;中斷屏蔽寄存器
MOV A,@0X00
MOV ISR,A ;中斷標志
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&BANK1
BANK 1
MOV A,@0X98
MOV LCDCR,A ;1/3BIAS 1/4 DUTY FCLK=64 LCD控制器
MOV A,@0X19 ;仿真時選0.3VDD-VDD
MOV LCDVCR,A ;LCD電壓及時鐘 2M,0-VDD
MOV A,@0X0F
MOV LCDCCR,A ;COM0-3 COM選擇
MOV A,@0XFF
MOV LCDSCR0,A ;SEG0-7
MOV A,@0X00
MOV LCDSCR1,A
MOV LCDSCR2,A ;SEGMENT選擇
MOV A,@0XC0
MOV EIMR,A ;外部中斷屏蔽寄存器 int7,6
MOV A,@0X00
MOV EISR,A
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&BANK2
BANK 2
MOV A,@0X80
MOV T1CR,A ;TXPD和TXTD TIMER1 fs/2 2分頻
MOV A,@0X9C
MOV TSR,A ;16BIT TIMER fs=32.768k
MOV A,@0X20
MOV T1PD,A ;0.5S 32768/2=16384
MOV T1TD,A
MOV A,@0X00
MOV T2CR,A
MOV A,@0X04
MOV T2PD,A ;時間過快調整(0.5s過快)(69240秒快34秒)
MOV T2TD,A
MOV A,@0X00
MOV SPIS,A
MOV SPIC,A
MOV SPIR,A
MOV SPIW,A ;SPI初始化
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&BANK3
BANK 3
MOV A,@0X00
MOV URC,A
MOV URS,A
MOV URRD,A
MOV URTD,A ;UART初始化
MOV A,@0X00
MOV ADCR,A ;AD控制
MOV ADICH,A
MOV A,@0X19
MOV ADICL,A ;AD0,3,4
MOV A,@0X00
MOV EIESH,A
MOV EIESL,A ;外部中斷邊沿選擇
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&BANK5
BANK 5
MOV A,@0X00
MOV URC2,A
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 ;設置上拉
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&BANK6
BANK 6
MOV A,@0X00
MOV LVRCR,A ;低電壓保護寄存器
MOV P7ODCR,A
MOV PAODCR,A
MOV PBODCR,A
MOV A,@0X00 ;AD6,4
MOV P8ODCR,A
MOV A,@0X00 ;AD0,3
MOV P9ODCR,A ;OPEN DRAIN功能寄存器
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -