📄 lcdavr_1k_1621.src
字号:
;--------------------------------------------------------------------
;DX_PWR.SRC Use for output:220VAC
;--------------------------------------------------------------------
;Use 4MHz RC osillator
.include "S3c9454.reg"
;-------------------- Timer 0 define
TMR0_CLOCK: .EQU 40H ;00H: Fosc/4096
;40H: Fosc/256
;80H: Fosc/8
;C0H: T0CK
HIGHO EQU 99
LOWO EQU 31
MAKEWRCLK: .MACRO
AND P2,#~_LCD_CK
CALL DELAY_us
OR P2,#_LCD_CK;
CALL DELAY_us
.ENDM
DATA_PIN .MACRO III
.IF III==HIGHO
OR P0,#_LCD_DI
.ELSE
AND P0,#~_LCD_DI
.ENDIF
.ENDM
CS .MACRO III
.IF III==HIGHO
OR P2,#_LCD_CS
ELSE
AND P2,#~_LCD_CS
.ENDIF
.ENDM
display_set1_WN: .equ 02H
display_set1_Q1: .equ 04h
display_set1_Q2: .equ 20H
display_set3_AC: .equ 02H
display_set1_UL: .equ 10H
DLY_SD: .equ 08H
display_set2_P: .equ 04H
TMR0_CLR: .EQU 08H
TMR0_NOTCLR: .EQU 00H
TMR0_INT_ENA: .EQU 02H
TMR0_INT_DIS: .EQU 00H
TMR0_INT_CLR: .EQU 00h
TMR0_EVENT_VALUE: .EQU 31 ;Interval interrupt time=5ms
;-------------------- Buzer define
BUZR_ON: .EQU 80H
BUZR_OFF: .EQU 00H
BUZR_CLOCK: .EQU 40H ;00H: Fx/256
;40H: Fx/64
BUZR_PREC: .EQU 40
;----------------------<< Define system timer count value
_5_ms: .EQU 1 ;5ms
TWO_TEN_SECOND: .EQU 1 ;0.2s
FOUR_TEN_SECOND: .EQU 2 ;0.4s
SIX_TEN_SECOND: .EQU 3 ;0.6s
EIGHT_TEN_SECOND: .EQU 4 ;0.8s
ONE_SECOND: .EQU 5 ;1s
THREE_TWO_SECOND: .EQU 7
TWO_SECOND: .EQU 10 ;2s
THREE_SECOND: .EQU 15 ;3s
FOUR_SECOND: .EQU 20 ;4s
FIVE_SECOND: .EQU 25 ;5s
SIX_SECOND: .EQU 30 ;6s
TEN_SECOND: .EQU 50 ;10s
THIRTY_SECOND: .EQU 150 ;30s
THREE_MINUTE: .EQU 31
FIVE_MINUTE: .EQU 4
THIRTY_MINUTE: .EQU 35
SIXTY_MINUTE: .EQU 70
;---------------------<< Define delay output status
; inc/dec break status
OUTPUT_DELAY_ON: .EQU 55H
OUTPUT_DELAY_OFF: .EQU 00H
INC_LIMITED: .EQU 55H
INC_NOLIMITED: .EQU 00H
DEC_LIMITED: .EQU 55H
DEC_NOLIMITED: .EQU 00H
;---------------------<< Define temperature protect and voltage regulating
; active point value
T_PROTECT_VALUE: .EQU 3FH ;Temp. protect point A/D value
V_PRESET_VALUE: .EQU 69H ;Voltage regulating point is 3.0V A/D
; value=266H
;;3 -> 14/6
V_DIFF_VALUE: .EQU 9 ;Voltage regulating point +/- value
; value=266H
V_DIFF_VALUE1: .EQU 18
;;3 -> 14/6
TEMP_NORMAL: .EQU 00H
TEMP_HIGH: .EQU 55H
TEMP_PROTECTED: .EQU 55H
TEMP_NOPROTECTED: .EQU 00H
VOLT_NORMAL: .EQU 00H
VOLT_OVER: .EQU 55H
VOLT_UNDER: .EQU 0AAH
VOLT_REGULATED_INC: .EQU 55H
VOLT_REGULATED_DEC: .EQU 0AAH
VOLT_NOREGULATED: .EQU 00H
DLY_INIT: .EQU 00H
DLY_SHORT: .EQU 55H
DLY_LONG: .EQU 0AAH
DLY_SKIP: .EQU 0BBH
DLY_CLR: .EQU 0DDH
DLY_UNCHANGE: .EQU 00H
DLY_CHANGED: .EQU 55H
;Over voltage protect reverse delay define
;Output Vlot.: <190V 264V 274V 284V 294V 304V 314V
;protect delay: 5s 5s 3s 1s 0.4s 100ms 30ms
VHIGH_PROTECT_VALUE: .EQU 0D3H ;264V->3.63V=2E7H
VLOW_PROTECT_VALUE: .EQU 84H ;190V->2.58V=210H
V_220V_VALUE: .EQU 98H ;220V->3.00V=266H
VHIGH_274V_VALUE: .EQU 0DEH ;274V->3.73V=310H
VHIGH_284V_VALUE: .EQU 0EAH ;284V->3.89V=32DH
VHIGH_294V_VALUE: .EQU 0F7H ;294V->4.03V=349H
VHIGH_304V_VALUE: .EQU 0DCH;0D5H ;304V->4.16V=364H
VHIGH_314V_VALUE: .EQU 0DCH;0DCH ;314V->4.30V=381H
VOLT_2VDC: .EQU 80H
;--------------------------------
VOLT_PROTECTED: .EQU 55H
VOLT_NOPROTECTED: .EQU 00H
CURR_AD_STOP: .EQU 00H
CURR_AD_START: .EQU 55H
VOLT_HIGH: .EQU 55H
VOLT_LOW: .EQU 0AAH
SYSTEM_NORMAL: .EQU 55H
SYSTEM_FAILED: .EQU 0AAH
SYSTEM_INIT: .EQU 00H
ACCU_HIGH: .EQU 4
ACCU_LOW: .EQU 10
DETECT_START: .EQU 55H
DETECT_STOP: .EQU 0AAH
KEY_READY: .EQU 00H
KEY_FAIL: .EQU 0BBH
;---------------------------------
LOAD_NORMAL: .EQU 00H
LOAD_OVER1: .EQU 10H
LOAD_OVER2: .EQU 20H
LOAD_OVER3: .EQU 30H
LOAD_OVER4: .EQU 40H
LOAD_OVER5: .EQU 50H
LOAD_PROT: .EQU 0AAH
OUT_INIT: .EQU 00H
OUT_SHORT: .EQU 55H
OVER_500LOADH: .EQU (((0320H*10)/50)/256)
OVER_500LOADL: .EQU (((0320H*10)/50)%256)
OVER_300LOADH: .EQU (((02ECH*10)/50)/256)
OVER_300LOADL: .EQU (((02ECH*10)/50)%256)
OVER_180LOADH: .EQU (((01C2H*10)/50)/256)
OVER_180LOADL: .EQU (((01C2H*10)/50)%256)
OVER_160LOADH: .EQU (((018AH*10)/50)/256)
OVER_160LOADL: .EQU (((018AH*10)/50)%256)
OVER_140LOADH: .EQU (((0155H*10)/50)/256)
OVER_140LOADL: .EQU (((0155H*10)/50)%256)
OVER_120LOADH: .EQU (((0129H*10)/50)/256)
OVER_120LOADL: .EQU (((0129H*10)/50)%256)
;---------------------------------
VOUT_REG_DIM: .EQU 3
REG_DIM: .EQU 2
VOUT_REG_DIM1: .EQU 6
REG_DIM1: .EQU 1
VIN_DIM: .EQU 1
VOUT_220V: .EQU 98H
VOUT_DIM: .EQU 3
;------------------------Display parameter defination
DLY_INPUT_COM: .equ 42H
DLY_CON_CODE: .equ 00001000B
KEY_INPUT_COM: .equ 43H
DLY_VOLTAGE: .equ 00H
DLY_CURRENT: .equ 55H
ACCU_SEL: .equ 04H
DELAY_SW: .equ 80H
DLY_DEC: .equ 55H
DLY_INC: .equ 0AAH
DLY_VIN_220VH: .equ 02H
DLY_VIN_220VL: .equ 02H
DLY_VOUT_220VH: .equ 02H
DLY_VOUT_220VL: .equ 69H
;---------------------<< P0 bit define
_BUZ: .EQU 08H ;01H P2.3
_OUT_DEC: .EQU 02H ;P2.1
_OUT_INC: .EQU 01H ;04H ;P2.0
_ACCU_SEL: .EQU 01H ;08H ;p0.0
;---------------------<< P1 bit define
_DELAY_SW: .EQU 20H ;10H ;P0.5
;---------------------<< P2 bit define
_LCD_CK: .EQU 10H ;01H ;P2.4
_LCD_DI: .EQU 80H ;02H ;P0.7
_RELAY: .EQU 20h ;04H ;P2.5
_LCD_CS: .EQU 40H ;08H ;P2.6
;--------<< Interrupt Vector Address
.ORG 0000H
.VECTOR 00H,INT_Handler
;------------------
.ORG 003CH
DB 00H
DB 00H
DB 0E7H
DB 01H
;------------------
;=================================
;This Is The HT1621 Control Command
;将12 BIT COMMAND分成8+4位方式存放 high bits used
SYS_DIS .EQU 0
SYS_EN .EQU 1
LCD_OFF .EQU 2
LCD_ON .EQU 3
TIMER_DIS .EQU 4
WDT_DIS .EQU 5
TIMER_EN .EQU 6
WDT_EN .EQU 7
TONE_OFF .EQU 8
CLR_TIMER .EQU 9
CLR_WDT .EQU 10
RC_32K .EQU 11
XTAL_32K .EQU 12
TONE_4K .EQU 13
TONE_2K .EQU 14
IRQ_DIS .EQU 15
DRQ_EN .EQU 16
F1 .EQU 17
F2 .EQU 18
F4 .EQU 19
F8 .EQU 20
F16 .EQU 21
F32 .EQU 22
F64 .EQU 23
F128 .EQU 24
TEST .EQU 25
NORMAL_MODE .EQU 26
BIAS_3_DUTY_4: .EQU 27
COMMAND_ID_TAB:
.DB 80h,00h ;0,SYS DIS
.DB 80h,20h ;1,SYS EN
.DB 80h,40h ;2,LCD OFF
.DB 80h,60h ;3,LCD ON
.DB 80h,80h ;4 TIMER DIS
.DB 80h,0a0h ;5 wdt dis
.DB 80h,0c0h ;6,timer en
.DB 80h,0e0h ;7,wdt en
.DB 81H,00H ;8,TONE OFF
.DB 81H,080H ;9,CLR TIMER
.DB 81H,0C0H ;10,CLRWDT
.DB 83h,00h ;11,RC_32k
.DB 82H,80H ;12,XTAL 32K
.DB 88H,00H ;13,TONE 4K
.DB 8CH,00H ;14,TONE 2K
.DB 90H,00H ;15,IRQDIS
.DB 91H,00H ;16,DRQ EN
.DB 94H,00H ;17,F1 TIME BASE CLOCK OUPUT 2Hz,
.DB 94H,20H ;18,F2
.DB 94H,40H ;19,F4
.DB 94H,60H ;20,F8
.DB 94H,80H ;21,F16
.DB 94H,0A0H ;22,F32
.DB 94H,0C0H ;23,F64
.DB 94H,0E0H ;24,F128
.DB 9CH,00H ;25,TEST
.DB 9CH,60H ;26,NORMAL
.DB 85H,20H ;27,1/3BIAS; 1/4DUTY
;--------------------------------------------------------------------
; DATA SEGMENT cont....
;--------------------------------------
.RAM_ORG 00H
;Input_Timer: .RAM_DS 1 ;10h
System_Timer: .RAM_DS 1 ;11h
;Startup_Timer: .RAM_DS 1 ;12h
OutputDly_Timer: .RAM_DS 1 ;13h
TempDly_Timer: .RAM_DS 1 ;14h
VoltProtDly_Timer: .RAM_DS 1 ;16h
LCDBlink_Timer: .RAM_DS 1
Buzer_Timer: .RAM_DS 1 ;19h
BuzerStop_Timer: .RAM_DS 1 ;1ah
Aux_Timer: .RAM_DS 1 ;1bh
DlyLong_Timer: .RAM_DS 1
DLYINIT_Timer: .RAM_DS 1
DLYDelay_Timer: .RAM_DS 1
RegulateTime: .RAM_DS 1
DelaySW_Input: .RAM_DS 1 ;1ch
DelaySW_Save: .RAM_DS 1
AccuSW_Input: .RAM_DS 1 ;1dh
T_ADValue: .RAM_DS 1 ;1fh
V_ADValueH: .RAM_DS 1 ;23h
V_ADValueL: .RAM_DS 1 ;24h
SystemStatus: .RAM_DS 1 ;25h
Temp_Status: .RAM_DS 1 ;??H: Normal ;26h
;??H: Over temperature
Temp_Status_Save: .RAM_DS 1 ;27h
Temp_Protect: .RAM_DS 1 ;??H: NO protect ;28h
;??H: Protect
Volt_Protect: .RAM_DS 1 ;??H: NO protect ;2bh
;??H: Protect on high/low voltage
Volt_PStatus: .RAM_DS 1 ;??H: Within protect point range ;2ch
;??H: Overrange protect point range
ADC_Buffer: .RAM_DS 16 ;21 ;32h
VoltIn_Value1: .RAM_DS 1
VoltIn_Value2: .RAM_DS 1
VoltIn_Value3: .RAM_DS 1
VoltOut_Value1: .RAM_DS 1
VoltOut_Value2: .RAM_DS 1
VoltOut_Value3: .RAM_DS 1
CURROut_Value1: .RAM_DS 1
CURROut_Value2: .RAM_DS 1
DLYINIT_Counter: .RAM_DS 1
CURR_ADValueH: .RAM_DS 1
CURR_ADValueL: .RAM_DS 1
VIn_ADValueH: .RAM_DS 1
VIn_ADValueL: .RAM_DS 1
display_set1: .RAM_DS 1
display_set2: .RAM_DS 1
display_set3: .RAM_DS 1
;DLYNormalFlag: .RAM_DS 1
;DETStartFlag: .RAM_DS 1
AccuSW_Save: .RAM_DS 1
KeyState1: .RAM_DS 1
;KeyState2: .RAM_DS 1
CurrADFlag: .RAM_DS 1
LoadState: .RAM_DS 1
Load_TimerH: .RAM_DS 1
Load_TimerL: .RAM_DS 1
;ShortFlag: .RAM_DS 1
LoadCounter: .RAM_DS 1
;========================================================
;2001-12-12 8:42 加入
; By Ted Chen
START_ADC .EQU 01H
ADC_OEC .EQU 08H
TEMP_ADCONTROL .EQU 00110110B ;00100110B;温度采样控制字,P0.3,clock=Foc/8,not start adc
CURR_ADCONTROL .EQU 00100110B ;00010110B;电流采样控制字,P0.2,其他同上
INVOLT_ADCONTROL .EQU 00010110B ;00000110B;输入电压AD采样控制字节,P0.1
OUTVOLT_ADCONTROL .EQU 01000110B ;00110110B;输出电压采样控制字节,P0.4
CLRWDT: .MACRO
OR BTCON,#00000010b
.ENDM
YuanLaiShiJian: .RAM_DS 1 ;不改变原来定时结构2ms
__2ms: .EQU (2000/80)
;
AdataH: .RAM_DS 1
AdataL: .RAM_DS 1
UserFlag: .RAM_DS 1
DLY_NORMAL_START: .equ 1
FreshAdc: .EQU 2
BasePoint: .EQU 4
FreshDispVolt: .equ 8
DetectFlag: .equ 10h
ShortFlag: .Equ 20h
OutVoltRegulate: .RAM_DS 2 ;用于调压
FreshDipsTime: .ram_ds 1
__600ms: .equ 4
;--------------------------------------------------------------------
;
;--------------------------------------------------------------------
.ORG 0100H
cold_start:
DI
LD BTCON, #11110011B ;禁止WATCHDOG,清 basic timer(本程序未用)
LD CLKCON,#00011000B ;CPU时钟不分频,
LD SP,#0C0h
LD T0DATA,#40;25 ;80us定时常数
LD T0CON,#10001010B ;fosc/8
OR P2,#_BUZ ;P0
LD P0CONL,#11111101B ;p0.0 :schmitt trigger input, pull-up enable
LD P0CONH,#10000111B ;p0.5 :schmitt trigger input, pull-up disable
LD P1CON,#00001010B
LD P2CONL,#10001010B
LD P2CONH,#01001010B
;----------<< RAM Area Clear
LD R0,#0
RAM_Clear:
CLR @R0
INC R0
CP R0,#0BFH
JR ULE,RAM_Clear
; LD OutputDly_Timer,#SIX_SECOND
LD VoltProtDly_Timer,#THREE_SECOND
LD TempDly_Timer,#FIVE_SECOND
;LD Startup_Timer,#TWO_SECOND
LD AccuSW_Input,#ACCU_LOW;ACCU_HIGH; change by bigwang, 2003,8,19
LD YuanLaiShiJian,#__2ms ;2ms定时
LD FreshDipsTime,#__600ms
;----------<< Timer 0
EI ;Enable interrupt
;-----------------------------------------------------------------
Main_loop::
LD R0,#NORMAL_MODE
CALL WriteCommand
LD R0,#RC_32K
CALL WriteCommand
LD R0,#WDT_DIS
CALL WriteCommand
LD R0,#TIMER_DIS
CALL WriteCommand
LD R0,#IRQ_DIS
CALL WriteCommand
LD R0,#TONE_OFF
CALL WriteCommand
LD R0,#SYS_EN
CALL WriteCommand
LD R0,#LCD_ON
CALL WriteCommand
LD R0,#BIAS_3_DUTY_4
CALL WriteCommand
; LD BTCON,#00000010B ;Clear WatchDog
; LD BTCON,#00000010B ;Clear WatchDog
CALL Input_Module
CALL Detect_Module
CLRWDT
CALL Output_Module
CLRWDT
CALL Display_Module
JR Main_loop
;--------------------------------------------------------------------
INT_Handler:
TM T0CON,#01H
JR NZ,INT_Timer0
IRET
INT_Timer0::
TM ADCON,#ADC_OEC
JR Z,skip_fresh_adc
LD AdataH,ADDATAH
LD AdataL,ADDATAL
OR ADCON,#START_ADC
OR UserFlag,#FreshAdc
skip_fresh_adc:
DEC YuanLaiShiJian
JR NZ,exit_this_interrupt ;6
LD YuanLaiShiJian,#__2ms ;2ms定时
TM UserFlag,#ShortFlag
JR Z,READ_KEY
AND P2,#~_RELAY ;Open output relay
READ_KEY:
CP Aux_Timer,#0
JR NE,timer_j00
TM P0,#_ACCU_SEL
JR NZ,KEY1_DECISION
CP KeyState1,#KEY_FAIL
JR EQ,DELAY_INPUT
OR KeyState1,#KEY_FAIL
LD Aux_Timer,#SIX_TEN_SECOND
LD AccuSW_Save,#DLY_CHANGED
CP AccuSW_Input,#ACCU_LOW
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -