⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcdavr_1k_1621.src

📁 液晶显示线包式交流稳压器
💻 SRC
📖 第 1 页 / 共 5 页
字号:
;--------------------------------------------------------------------
;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 + -