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

📄 ledavr-5k.src

📁 两个三位数码管显示输入与输出电压的接触式交流稳压器
💻 SRC
📖 第 1 页 / 共 4 页
字号:
;--------------------------------------------------------------------
;主要功能描述
;1. 输入电压140-250VAC,输出电压220VAC±3%
;2. 采用两个3位的数码管分别显示输入电压和输出电压
;使用单片机:三星S3F9454BZZ

;--------------------------------------------------------------------


;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
        

HIGH:			.EQU	11
LOW:			.EQU	22 

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

;----------------------<< 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     6       ;6s
TEN_SECOND:        .EQU     50      ;10s
THIRTY_SECOND:     .EQU     150     ;30s
THREE_MINUTE:      .EQU     25;58              
FIVE_MINUTE:       .EQU     4
THIRTY_MINUTE:     .EQU     35
SIXTY_MINUTE:      .EQU     70
;---------------------<< Define delay output status
                         ; inc/dec break status


;---------------------<< Define temperature protect and voltage regulating
                       ; active point value

T_PROTECT_VALUE:   .EQU     210;125;140-110;Temp. protect point A/D value
T_RESTAR_VALUE     .EQU     300;210
                                    ; 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_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_LOW220:         .EQU     8;10;12		 

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     1h;(((0320H*2)/5)/256)
OVER_500LOADL:       .EQU     4ch;(((0320H*2)/5)%256)
OVER_300LOADH:       .EQU     01H;(CHANGED25A), 27A(((02ECH*2)/5)/256);    	12BH
OVER_300LOADL:       .EQU     23H;              27A(((02ECH*2)/5)%256)
OVER_180LOADH:       .EQU     00H;(CHANGED20A), 16A(((01C2H*2)/5)/256);	0B4H
OVER_180LOADL:       .EQU     0E9H;              16A(((01C2H*2)/5)%256)

OVER_120LOADH:       .EQU     0H      ;(CHANGED16A);11A(((0129H*2)/5)/256);		076H		
OVER_120LOADL:       .EQU     0BBH  
;---------------------------------
VOUT_REG_DIM:        .EQU     3
REG_DIM:             .EQU     2
VOUT_REG_DIM1:       .EQU     6
REG_DIM1:            .EQU     1

VIN_DIM:             .EQU      1
Standard_Volt_Select	.EQU	140
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
;_ACCU_SEL:        .EQU      01H ;08H ;p0.0

;---------------------<< P1 bit define
;_DELAY_SW:         .EQU     20H ;10H ;P0.5;

;---------------------<< P2 bit define
_OUT_DEC:          .EQU     01H ;P2.0
_OUT_INC:          .EQU     02H ;P2.1
_RELAY:            .EQU     20h ;P2.5;
_BUZ:              .EQU     04H ;P2.2
_FAN:              .EQU     08H ;P2.3

;--------<< 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
OutVoltRegulate	       .RAM_DS	    2
;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_ADValueH:            .RAM_DS      1        ;1fh
T_ADValueL:            .RAM_DS      1

Vout_ADValueH:         .RAM_DS      1        ;23h
Vout_ADValueL:         .RAM_DS      1        ;24h

Vout_valueH:           .RAM_DS      1        ;23h
Vout_valueL:           .RAM_DS      1        ;24h
Vin_valueH:            .RAM_DS      1
Vin_valueL:            .RAM_DS      1

SystemStatus:          .RAM_DS      1        ;25h

                                    ;??H: Over temperature
Temp_Status_Save:      .RAM_DS      1                    ;27h

Temp_Status:          .RAM_DS      1   ;??H: NO protect    ;28h
FAN_STATUS:           .RAM_DS      1
                                    ;??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
VOLT_PRTdelay:	       .RAM_DS	    1
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
system_timer1s:        .RAM_DS      1
AccuSW_Save:           .RAM_DS      1
KeyState1:             .RAM_DS      1
;KeyState2:             .RAM_DS      1
CurrADFlag:            .RAM_DS      1
LoadState:             .RAM_DS      1


;HighProtTime            .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   01100110B ;00000110B;输入电压AD采样控制字节,P0.6      
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
LedDispFresh:   .EQU    1 
FreshAdc:       .EQU    2
BasePoint:      .EQU    4
FreshDispVolt:  .equ    8
DetectFlag:     .equ    10h
SelfBlink:	.EQU	20h  
DLYFlag:        .EQU    40h

FreshDipsTime:  .ram_ds 1
__600ms:        .equ    3
;--------------------------------------------------------------------


DISP_8BIT: 	.MACRO	
	LD      R12,#8	
 SEND_GOON:
	DISP_DATA_BUS	HIGH
	RLC	R13			
	JR	C,MD_CLK		
	DISP_DATA_BUS	LOW	
  MD_CLK:
	MAKE_IO_CLK
	DEC	R12
        JR      NZ,SEND_GOON		 
        .ENDM
        	
MAKE_IO_CLK:	.MACRO	
	OR	P2,#01000000B	
	NOP
	NOP
	NOP
	NOP              
	AND	P2,#~01000000B            
	NOP    
	.ENDM
	
MAKE_DISP_164_CLOCK  .MACRO
	OR	P0,#00000001B	
	NOP
	NOP
	NOP
	NOP              
	AND	P0,#~00000001B
	NOP   
                     .ENDM	
		
;显示数据总线
DISP_DATA_BUS	.MACRO	HighLow ;P0.7
		.IF	HighLow==HIGH
			OR	P0,#10000000B	
		.ELSE
			AND	P0,#~10000000B    
		.ENDIF
		.ENDM
		
SET_LED_SDA     .MACRO
        NOP
        DISP_DATA_BUS   HIGH
        NOP
                .ENDM
                
CLR_LED_SDA     .MACRO
        NOP
        DISP_DATA_BUS   LOW
        NOP
                .ENDM                
		
OFF_DISP	.MACRO
	OR	P0,#20H         ;P0.5	
		.ENDM
		
ON_DISP         .MACRO
        AND     P0,#~20H
                .ENDM
        		
;指示灯控制。
FlagReg:	.RAM_DS 1
BLINK_500ms:	.EQU	1
VoltHigh:	.EQU	2
RelayStatus:	.EQU	4
DELAY_FLAG:	.EQU	10H
FreshDisp:	.EQU	20h
PRECTION_FLAG:	.EQU	40h

GRN_LED_STATUS:	.equ	00000011b
YEL_LED_STATUS:	.equ	00001100b
RED_LED_STATUS:	.equ	00110000b
GRN_OFF:	.equ	00000000b
YEL_OFF:	.equ	00000000b
RED_OFF:	.equ	00000000b
GRN_ON:		.equ	00000001b
YEL_ON:		.equ	00000100b
RED_ON:		.equ	00010000b
GRN_BLINK:	.equ	00000010b
YEL_BLINK:	.equ	00001000b
RED_BLINK:	.equ	00100000b
GRN_SKIP:	.equ	00000011b
YEL_SKIP:	.equ	00001100b
RED_SKIP:	.equ	00110000b
LedStatus:	.ram_ds	1
SystemTimer::	.RAM_DS 1
LedBlinkTimer:	.RAM_DS 1
disp_fresh_time	.RAM_DS	1
;fastOut_Voltbuffer	.RAM_DS	2
_4ms:		.EQU	50
_200ms:		.EQU	50



;--------------------------------------------------------------------
        .ORG     0100H

cold_start:
                
                DI
                LD      BTCON, #11110011B  ;禁止WATCHDOG,清 basic timer(本程序未用)
                LD      CLKCON,#00011000B  ;CPU时钟不分频,
                LD      SP,#0C0h          
                LD      T0DATA,#40         ;80us定时常数
                LD      T0CON,#10001010B   ;fosc/8 
                OR      P2,#_BUZ 
                
                LD      P0CONL,#11000110B ; 
                LD      P0CONH,#10111011B ;                         
                LD      P1CON,#00001010B  
                LD      P2CONL,#10101010B 
                LD      P2CONH,#11001001B 
;----------<< RAM Area Clear
        LD      R0,#0
RAM_Clear:
        CLR     @R0
        INC     R0
        CP      R0,#0BFH 
        JR      ULE,RAM_Clear
        LD      system_timer1s,#5
        LD      AccuSW_Input,#ACCU_LOW220;ACCU_HIGH;   
        LD      YuanLaiShiJian,#__2ms   ;4ms定时
        LD      FreshDipsTime,#__600ms
        LD      VOLT_PRTdelay,#3
        
        LD	OutputDly_Timer,#SIX_SECOND        
        AND     UserFlag,#~DLYFlag 
        
        LD      SystemStatus,#SYSTEM_INIT
        AND     P2,#~_RELAY
        
;----------<< Timer 0

        EI                              ;Enable interrupt
;-----------------------------------------------------------------

Main_loop::
                
                

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -