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

📄 avr165-46r47.asm

📁 数码管显示的接触式交流稳压器MCU46R47
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	;MOV a,0
	;adcm a,TEMP1
	;ret
;dir_comp_next9:
	;MOV a,250
	;SUB a,TEMP2
	;SNZ C 
	;jmp dir_com_next10
	;MOV a,12
	;addm a,TEMP2
	;MOV a,0
	;adcm a,TEMP1
	;ret
;dir_com_next10:
	;MOV a,230
	;SUB a,TEMP2
	;SNZ C 
	;jmp dir_regulate
	;MOV a,13
	;addm a,TEMP2
	;MOV a,0
	;adcm a,TEMP1
	;ret
										
dir_regulate:	
	;MOV A,13
	;ADDM A,TEMP2
	;MOV A,0
	;ADCM A,TEMP1		
	RET
SAMPLE_VOLAGE ENDP
;========================
SAMPLE_DELAY PROC
        CLR TEMP1
        CLR TEMP2
        MOV A,8
	MOV TEMP3,A

START_SAMPLE:
	NOP
	ADC_START		;START THE TIME
FOR_SAMPLE_LOOP:
	SZ AD_EOF
	JMP FOR_SAMPLE_LOOP
	
	MOV A,ADRH
	ADDM A,temp2
	mov  a,0
	adcm a,temp1
	sdz  temp3
	jmp  START_SAMPLE
	
	clr  C
	rrc  temp1
	rrc  temp2
	
	clr  C
	rrc  temp1
	rrc  temp2
	
	clr  C
	rrc  temp1
	rrc  temp2
	
	MOV  A,TEMP2
	MOV  SW1_VALUE,A

        ret
SAMPLE_DELAY ENDP
;================================================
Detect_Module PROC
        call HiLo_voltage
        call Temp_protect
        ret
Detect_Module ENDP
;============================
HiLo_voltage proc
        sz    sys_status1
        jmp   continue_detect
        snz   sys_status0
        ret
        
continue_detect:
        MOV   A,01H
        MOV   temp1,a
        mov   a,Vout_L
        SUB   A,04H
        MOV   A,Vout_H
        SBC   A,temp1
        sz    C        
        jmp   imidiate_pro     ;is higher than 260V
        sz    sys_status1
        jmp   restore_HiLo  
        clr   temp1     
        mov   a,Vout_L
        SUB   A,250
        mov   a,Vout_H
        sbc   a,temp1
        SNZ   C
        JMP   judge_low
        set   sys_status1      ;Output voltage is bigger than 255V
        clr   sys_status0      ;in 3secends close output
        ret
judge_low:
        mov   a,Vout_L
        SUB   A,180
        SZ    C
        jmp   _is_normal       ;output voltage is normal
        SET   sys_status1      ;output voltage is low
        set   sys_status0
        mov   a,_3s
        mov   pro_delay,a      ;not protect
        ret

restore_HiLo:
        sz    sys_status0
        jmp   restore_Lo
        clr   temp1
        mov   a,Vout_L         ;restore High
        sub   a,245
        mov   a,Vout_H
        sbc   a,temp1
        sz    C
        ret                    ;still is high
        clr   sys_status1      ;to delay for output
        clr   sys_status0
        mov   a,_3s
        mov   pro_delay,a
        mov   a,_6sens
        mov   out_delay,a
        set   bSW_delay
        ret
        
_is_normal:
        clr   sys_status1
        set   sys_status0
        mov   a,_3s
        mov   pro_delay,a
        ret
restore_Lo:
        mov   a,Vout_L
        sub   a,185
        sz    C
        jmp   _is_normal
        mov   a,_3s            ;still is low
        mov   pro_delay,a
        ret

imidiate_pro:
        clr   pro_delay
        set   sys_status1
        clr   sys_status0
        ret
HiLo_voltage endp
;===========================
Temp_protect proc
        SZ   check_temp_dly
        RET                    

        sz   sys_status0
        jmp  adjusp_temp
        sz   sys_status1
        clr  temp_status       ;Hi status
        ret                    ;delay status
        
adjusp_temp:
        mov   a,SW1_VALUE      ;normal or low output voltage status
        sub   a,200
        sz    C
        jmp   temp_is_normal
        mov   a,SW1_VALUE
        sub   a,100
        sz    C
        jmp   high_temp_pro
        mov   a,SW1_VALUE
        sub   a,70
        sz    C
        jmp   temp_is_normal
high_temp_pro:
        set   temp_status
        ret
temp_is_normal:
        clr   temp_status
        ret
Temp_protect endp
;================================================
Output_Module PROC
        sz    sys_status1
        jmp   keep_status
        sz    sys_status0
        jmp   keep_status
        sz    out_delay
        ret
        mov   a,_3s
        mov   check_temp_dly,a
        set   sys_status0;into normal status
        ret
keep_status:
        sz    sys_status1
        jmp   is_unusual
        sz    out_on
        ret
        ;=====turn on out
        set   J4
        SET   out_on
        ret
is_unusual:   
        sz    pro_delay
        ret
        clr   J4
        clr   out_on
        
        nop
        ret
Output_Module ENDP
;================================================
Regulate_Module PROC
     
        ;mov a,1
        ;sub a,step
        ;snz C
        ;jmp loop1_step
        ;sz  Vin_H              ;STEP0 or step1
        ;JMP to_step5
        ;mov a,Vin_L
        ;SUB A,230
        ;SZ  C
        ;JMP to_step4
        ;mov a,Vin_L
        ;SUB A,190
        ;SZ  C
        ;JMP to_step2
        ;jmp continue_loop
        
;loop1_step:
        ;mov a,3
        ;sub a,step
        ;snz C
        ;jmp loop2_step
        ;sz  Vin_H              ;STEP2 or step3
        ;JMP to_step5
        ;mov a,Vin_L  
        ;sub a,230
        ;sz  C
        ;jmp to_step4
        ;mov a,Vin_L
        ;sub a,160
        ;snz C
        ;jmp to_step1
        ;jmp continue_loop
        
;loop2_step:                    ;step4 or step5
        ;SZ  Vin_H
        ;JMP continue_loop
        ;MOV A,Vin_L
        ;SUB A,160
        ;SNZ C
        ;JMP to_step1
        ;mov a,Vin_L
        ;SUB A,190
        ;SNZ C
        ;JMP to_step3
        
;continue_loop:        
        ;sz  relay_delay_time
        ;ret 

        ;sz  Vout_H
        ;jmp out_volt_high
        ;mov a,236
        ;sub a,Vout_L
        ;sz  C
        ;jmp justing_205v
;out_volt_high:        
        ;输出电压>=238V
        ;sz  step
        ;jmp next_loop
        ;jmp to_step1
  ;next_loop:        
        ;mov a,1
        ;sub a,step
        ;sz  C
        ;jmp to_step2
        ;mov a,2
        ;sub a,step
        ;sz  C
        ;jmp to_step3
        ;mov a,3
        ;sub a,step
        ;sz  C
        ;jmp to_step4
        ;mov a,4
        ;sub a,step
        ;sz  C
        ;jmp to_step5
        ;ret 
           
;justing_205v:
        ;mov a,204
        ;sub a,Vout_L
        ;snz C
        ;ret             ;输出电压在206V~237V之间
       
        ;mov a,step      ;输出电压<=205V
        ;sub a,5
        ;sz  C
        ;jmp to_step4
        ;mov a,step
        ;sub a,4
        ;sz  C
        ;jmp to_step3
        ;mov a,step
        ;sub a,3
        ;sz  C
        ;jmp to_step2
        ;mov a,step
        ;sub a,2
        ;sz  C
        ;jmp to_step1
        ;mov a,step
        ;sub a,1
        ;sz  C
        ;jmp to_step0
        ;ret
        
;to_step0:        
        ;avr_step0 
        ;MOV A,0
        ;MOV step,A
        ;MOV a,_0s8
        ;mov relay_delay_time,a
        ;ret
        
;to_step1:  
        ;avr_step1 
        ;MOV A,1
        ;MOV step,A
        ;MOV a,_0s8
        ;mov relay_delay_time,a
        ;ret     
        
;to_step2: 
        ;avr_step2 
        ;mov a,2      
        ;mov step,a
        ;mov a,_0s8
        ;mov relay_delay_time,a
        ;ret
        
;to_step3:  
        ;avr_step3
        ;mov a,3
        ;mov step,a       
        ;mov a,_0s8
        ;mov relay_delay_time,a
        ;ret
        
;to_step4:
        ;avr_step4
        ;mov a,4
        ;mov step,a       
        ;mov a,_0s8
        ;mov relay_delay_time,a
        ;ret 
        
;to_step5:  
        ;avr_step5
        ;mov a,5
        ;mov step,a       
        ;mov a,_0s8
        ;mov relay_delay_time,a

        ;ret
        ;*************
        SZ   RL1_status
        jmp  RL1_is_closed
        sz   Vin_H
        jmp  close_rl1
        mov  a,Vin_L
        SUB  A,RL1_pointH
        snz  C
        jmp  control_RL2

close_rl1:
        set  J1
        SET  RL1_status
        mov  a,_200ms
        mov  relay_delay_time,a
        
control_RL2:
        sz   RL2_status
        jmp  RL2_is_closed
        sz   Vin_H
        JMP  close_RL2
        MOV  A,Vin_L
        SUB  A,RL2_pointH
        snz  C
        jmp  control_RL3

close_RL2:
        set  J2
        SET  RL2_status
        mov  a,_200ms
        mov  relay_delay_time,a
        JMP  control_RL3
        
RL1_is_closed:
        SZ   Vin_H
        JMP  control_RL2
        MOV  A,Vin_L
        SUB  A,RL1_pointL
        SZ   C
        JMP  control_RL2
        CLR  J1
        CLR  RL1_status
        mov  a,_200ms
        mov  relay_delay_time,a
        jmp  control_RL2
        
RL2_is_closed:
        sz   Vin_H
        JMP  control_RL3
        MOV  A,Vin_L
        SUB  A,RL2_pointL
        SZ   C
        JMP  control_RL3
        CLR  J2
        CLR  RL2_status
        mov  a,_200ms
        mov  relay_delay_time,a

        ;--------------
control_RL3:
        sz   relay_delay_time
        ret

        SZ   RL3_status
        JMP  RL3_is_closed
        sz   Vout_H
        JMP  close_RL3
        mov  a,Vout_L
        SUB  A,RL3_pointH
        snz  C
        ret   
   
close_RL3:
        SET  J3
        SET  RL3_status
        mov  a,_200ms
        mov  relay_delay_time,a
        RET
        
RL3_is_closed:
        SZ   Vout_H
        RET
        MOV  A,Vout_L
        SUB  A,RL3_pointL
        SZ   C
        RET
        clr  J3
        CLR  RL3_status
        mov  a,_200ms
        mov  relay_delay_time,a
        ret
        ;*************
        
        
Regulate_Module ENDP
;================================================
Display_Module PROC
        SZ   disp_fresh
        ret
        mov  a,_500ms
        mov  disp_fresh,a
        
        sz   sys_status1
        jmp  display_unusual
        sz   sys_status0
        jmp  display_normal
        ;----display delay_time
        mov  a,Out_delay
        mov  temp5,a
        clr  temp4
        sz   bled2
        jmp  clr_bled2
        set  bled2
off_two_led:        
        clr  bled1
        clr  bled0
        jmp  display_next
clr_bled2:
        clr  bled2
        jmp  off_two_led
        
display_normal:
        sz   temp_status
        jmp  display_unusual
        ;-----display normal
        SZ   display_4s
        JMP  disp_input

actual_disp:
        mov  a,Vout_L
        MOV  temp5,a
        mov  a,Vout_H
        MOV  temp4,a
con_disp:        
        set  bled0
        clr  bled1
        set  bled2
        jmp  display_next
disp_input:
        sz   flash
        jmp  give_zero
        set  flash
turn_on_led:
        sz   flash
        jmp  off_dig_led
        
        mov  a,Vin_L;Vin_dspL;
        MOV  temp5,a
        mov  a,Vin_H;Vin_dspH;
        mov  temp4,a
        clr  bled0
        set  bled2
        set  bled1
display_next:
        call hex2dec
        call con_disp_code
        ret
give_zero:
        clr  flash
        jmp  turn_on_led        

      
display_unusual:
        sz   flash
        jmp  flsh_clr
        set  flash
        jmp  next_unusual
flsh_clr:  
        clr  flash  
            
next_unusual:         
        sz   flash
        jmp  off_dig_led
        
        sz   temp_status
        jmp  disp_temp_high
               
        sz   sys_status0
        jmp  disp_L
        ;-----disp High
        set  bled2
        clr  bled1
        set  bled0
        mov  a,12   
        mov  temp1,a;dig1 off
        mov  temp3,a;dig3 off
        mov  a,10
        mov  temp2,a;dig2 H
        call con_disp_code
        ret
disp_L: 
        set  bled2
        set  bled1
        clr  bled0
        mov  a,12
        mov  temp1,a;dig1 off
        mov  temp3,a;dig3 off
        mov  a,11
        mov  temp2,a;dig2 L
        call con_disp_code        
        ret        
disp_temp_high:
        set  bled2
        clr  bled1
        clr  bled0
        mov  a,14
        mov  temp1,a;dig1 c
        mov  a,12   
        mov  temp2,a;dig2 off
        mov  a,10
        mov  temp3,a;dig3 H
        call con_disp_code
        ret
off_dig_led:        
        set  bled2
        clr  bled1
        clr  bled0
        mov  a,12   
        mov  temp1,a;dig1 off
        mov  temp2,a;dig2 off
        mov  temp3,a;dig3 off
        call con_disp_code
        ret

       
Display_Module ENDP
;================================
hex2dec proc 
        ;------TEMP4,TEMP5 is the value should be converted
	clr TEMP1
	clr TEMP2
	clr TEMP3
hex2dec_init:
	mov a,100
	mov TEMP6,a 
	mov a,temp5
	sub a,TEMP6
	MOV A,temp4
	CLR TEMP6
	SBC A,TEMP6
	snz C
	jmp next_step
	mov a,100
	mov TEMP6,a
	mov a,temp5
	sub a,TEMP6
	mov temp5,a
	CLR TEMP6
	MOV A,temp4
	SBC A,TEMP6
	MOV temp4,A
	inc TEMP1		;counter add one 
	jmp hex2dec_init
next_step:
	mov a,10
	mov TEMP6,a 
	mov a,temp5
	sub a,TEMP6
	snz c 
	jmp second_step
	mov a,10
	mov TEMP6,a 
	mov a,temp5
	sub a,TEMP6
	mov temp5,a 
	inc temp2
	jmp next_step
second_step:
	mov a,temp5
	mov temp3,a
	ret
hex2dec endp
;================================
con_disp_code proc

	mov a,temp1
	ADD A,0D0H
	mov tblp,a 
	tabrdl temp1    	;look for the table to get disp code 
	sz bled0
	clr temp1.7		
	mov a,temp2
	ADD A,0D0H
	mov tblp,a 
	tabrdl temp2
	sz bled1		
	clr temp2.7
	mov a,temp3
	ADD A,0D0H
	mov tblp ,a 
	tabrdl temp3
	sz bled2
	clr temp3.7
	
	DISABLE_TIMER
	
	mov a,temp1
	mov disp_buf0,a
	mov a,temp2
	mov disp_buf1,a
	mov a,temp3
	mov disp_buf2,a
	
	ENABLE_TIMER

	ret
con_disp_code endp 

;=================================================
;THE FOLLOWING IS DEFINE THE TABLE DATA FOR DISP
;==================================================
org 7D0H
dc 0c0h		;num 0
dc 0f9h		;    1
dc 0a4h		;    2
dc 0b0h		;    3
dc 99h		;    4
dc 92h		;    5
dc 82h		;    6
dc 0d8h		;    7
dc 80h		;    8	
dc 90h		;    9
dc 89h		;H   10
dc 0c7h 	;L   11
dc 0ffh		;clrx	   12
DC 00H		;ALL LIGHT 13
DC 0a7h         ;c   14

END 


⌨️ 快捷键说明

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