📄 avr165-46r47.asm
字号:
;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 + -