📄 avr-1k2k-21p.asm
字号:
MOV Vin_BUFF12,A
MOVAM Vin_BUFF14
ADDC TEMP3,M
MOV Vin_BUFF11,A
MOVAM Vin_BUFF13
ADD TEMP4,M
MOV Vin_BUFF10,A
MOVAM Vin_BUFF12
ADDC TEMP3,M
MOV Vin_BUFF9,A
MOVAM Vin_BUFF11
ADD TEMP4,M
MOV Vin_BUFF8,A
MOVAM Vin_BUFF10
ADDC TEMP3,M
MOV Vin_BUFF7,A
MOVAM Vin_BUFF9
ADD TEMP4,M
MOV Vin_BUFF6,A
MOVAM Vin_BUFF8
ADDC TEMP3,M
MOV Vin_BUFF5,A
MOVAM Vin_BUFF7
ADD TEMP4,M
MOV Vin_BUFF4,A
MOVAM Vin_BUFF6
ADDC TEMP3,M
MOV Vin_BUFF3,A
MOVAM Vin_BUFF5
ADD TEMP4,M
MOV Vin_BUFF2,A
MOVAM Vin_BUFF4
ADDC TEMP3,M
MOV Vin_BUFF1,A
MOVAM Vin_BUFF3
ADD TEMP4,M
MOV Vin_BUFF0,A
MOVAM Vin_BUFF2
ADDC TEMP3,M
MOV TEMP1,A
MOVAM Vin_BUFF1
ADD TEMP4,M
MOV TEMP0,A
MOVAM Vin_BUFF0
ADDC TEMP3,M
BC STATUS,C
RRC TEMP3,M
RRC TEMP4,M
BC STATUS,C
RRC TEMP3,M
RRC TEMP4,M
BC STATUS,C
RRC TEMP3,M
RRC TEMP4,M
;BC STATUS,C
;RRC TEMP3,M
;RRC TEMP4,M
mov temp4,a
movam Vin_L
mov temp3,a
movam Vin_H
;======================
lcall sample_OUTvol
clr temp3
clr temp4
MOV Vout_BUFF29,a
MOVAM Vout_BUFF31
ADD TEMP4,M
MOV Vout_BUFF28,A
MOVAM Vout_BUFF30
ADDC TEMP3,M
MOV Vout_BUFF27,A
MOVAM Vout_BUFF29
ADD TEMP4,M
MOV Vout_BUFF26,A
MOVAM Vout_BUFF28
ADDC TEMP3,M
MOV Vout_BUFF25,A
MOVAM Vout_BUFF27
ADD TEMP4,M
MOV Vout_BUFF24,A
MOVAM Vout_BUFF26
ADDC TEMP3,M
MOV Vout_BUFF23,A
MOVAM Vout_BUFF25
ADD TEMP4,M
MOV Vout_BUFF22,A
MOVAM Vout_BUFF24
ADDC TEMP3,M
MOV Vout_BUFF21,A
MOVAM Vout_BUFF23
ADD TEMP4,M
MOV Vout_BUFF20,A
MOVAM Vout_BUFF22
ADDC TEMP3,M
MOV Vout_BUFF19,A
MOVAM Vout_BUFF21
ADD TEMP4,M
MOV Vout_BUFF18,A
MOVAM Vout_BUFF20
ADDC TEMP3,M
MOV Vout_BUFF17,A
MOVAM Vout_BUFF19
ADD TEMP4,M
MOV Vout_BUFF16,A
MOVAM Vout_BUFF18
ADDC TEMP3,M
MOV Vout_BUFF15,A
MOVAM Vout_BUFF17
ADD TEMP4,M
MOV Vout_BUFF14,A
MOVAM Vout_BUFF16
ADDC TEMP3,M
MOV Vout_BUFF13,A
MOVAM Vout_BUFF15
ADD TEMP4,M
MOV Vout_BUFF12,A
MOVAM Vout_BUFF14
ADDC TEMP3,M
MOV Vout_BUFF11,A
MOVAM Vout_BUFF13
ADD TEMP4,M
MOV Vout_BUFF10,A
MOVAM Vout_BUFF12
ADDC TEMP3,M
MOV Vout_BUFF9,A
MOVAM Vout_BUFF11
ADD TEMP4,M
MOV Vout_BUFF8,A
MOVAM Vout_BUFF10
ADDC TEMP3,M
MOV Vout_BUFF7,A
MOVAM Vout_BUFF9
ADD TEMP4,M
MOV Vout_BUFF6,A
MOVAM Vout_BUFF8
ADDC TEMP3,M
MOV Vout_BUFF5,A
MOVAM Vout_BUFF7
ADD TEMP4,M
MOV Vout_BUFF4,A
MOVAM Vout_BUFF6
ADDC TEMP3,M
MOV Vout_BUFF3,A
MOVAM Vout_BUFF5
ADD TEMP4,M
MOV Vout_BUFF2,A
MOVAM Vout_BUFF4
ADDC TEMP3,M
MOV Vout_BUFF1,A
MOVAM Vout_BUFF3
ADD TEMP4,M
MOV Vout_BUFF0,A
MOVAM Vout_BUFF2
ADDC TEMP3,M
MOV TEMP1,A
MOVAM Vout_BUFF1
ADD TEMP4,M
MOV TEMP0,A
MOVAM Vout_BUFF0
ADDC TEMP3,M
BC STATUS,C
RRC TEMP3,M
RRC TEMP4,M
BC STATUS,C
RRC TEMP3,M
RRC TEMP4,M
BC STATUS,C
RRC TEMP3,M
RRC TEMP4,M
BC STATUS,C
RRC TEMP3,M
RRC TEMP4,M
mov temp4,a
movam Vout_L
mov temp3,a
movam Vout_H
;======================
btsc out_on
ret
btsc _SW
LGOTO delay_180s
;========delay 6s
btsc bSW_delay
ret
bs bSW_delay
movla _3sens
movam out_delay
ret
delay_180s:
btss bSW_delay
ret
bc bSW_delay
movla _3minutes
movam out_delay
ret
;===========================================
Detect_Module:
lcall HiLo_voltage
lcall Temp_protect
ret
;--------------------
HiLo_voltage:
btsc sys_status1
lgoto continue_detect
btss sys_status0
ret
continue_detect:
movla 01H
sub Vout_H,A
BTSS STATUS,C
LGOTO is_lower_260V
BTSS STATUS,Z
LGOTO imidiate_pro
MOVLA 04H
SUB Vout_L,A
BTSC STATUS,C
LGOTO imidiate_pro ;is higher than 260V
is_lower_260V:
BTSC sys_status1
LGOTO restore_HiLo
mov Vout_H,a
btss STATUS,Z
lgoto out_higher_250V
movla .250
sub Vout_L,A
btss STATUS,C
lgoto judge_low
out_higher_250V:
bs sys_status1 ;Output voltage is bigger than 250V
bc sys_status0 ;in 3secends close output
ret
judge_low:
movla .180
SUB Vout_L,A
BTSC STATUS,C
LGOTO _is_normal ;output voltage is normal
BS sys_status1 ;output voltage is low
BS sys_status0
;movla _3s
;movam pro_delay ;in 3secends close output
ret
restore_HiLo:
btsc sys_status0
lgoto restore_Lo
;--------restore High
tmsc Vout_H
RET
movla .245
sub Vout_L,a
btsc STATUS,C
ret ;still is high
btsc out_on
lgoto _is_normal
bc sys_status1 ;to delay for output
bc sys_status0
movla _3s
movam pro_delay
movla _3sens
movam out_delay
bs bSW_delay
ret
_is_normal:
bc sys_status1
bs sys_status0
movla _3s
movam pro_delay
ret
restore_Lo:
movla .195
sub Vout_L,A
BTSS STATUS,C
RET
btsc out_on
LGOTO _is_normal
bc sys_status1 ;to delay for output
bc sys_status0
movla _3s
movam pro_delay
movla _3sens
movam out_delay
bs bSW_delay
ret
imidiate_pro:
clr pro_delay
bs sys_status1
bc sys_status0
ret
;===========================================
Temp_protect:
nop
btsc sys_status1
ret
btss sys_status0 ;to test the temperature under normal status
ret
tmsc check_temp_dly
ret
btsc _TmpTest
lgoto temp_is_normal
;=========;追加指令
btss temp_status
;=========
bs temp_status
ret
temp_is_normal:
;=========;追加指令
btsc temp_status
;=========
bc temp_status
ret
;===========================================
Output_Module:
btsc sys_status1
lgoto keep_status
btsc sys_status0
lgoto keep_status
tmsc out_delay
ret
movla _30S
movam check_temp_dly
bs sys_status0;into normal status
ret
keep_status:
btsc sys_status1
lgoto is_unusual
btsc out_on
ret
;=====turn on out
bs _RL5
BS out_on
ret
is_unusual:
TMSC pro_delay
ret
btss out_on
ret
BC _RL5
BC out_on
nop
ret
;===========================================
Regulate_Module:
;*************
tmsc startup
RET
btss RL1_status
lgoto RL1_is_opened
tmsc Vin_H
lgoto open_RL1
movla RL1_pointH
SUB Vin_L,A
btss STATUS,C
lgoto control_RL2
open_RL1:
;*************
lcall check_zero
lcall delay_5ms
;*************
bc _RL1
BC RL1_status
movLa _200ms
movam relay_delay_time
control_RL2:
btss RL2_status
lgoto RL2_is_opened
tmsc Vin_H
lgoto open_RL2
MOVLA RL2_pointH
SUB Vin_L,A
BTSS STATUS,C
LGOTO control_RL3
open_RL2:
;*************
lcall check_zero
lcall delay_5ms
;*************
BC _RL2
BC RL2_status
movla _200ms
movam relay_delay_time
control_RL3:
btsc RL3_status
lgoto RL3_is_closed
tmsc Vin_H
lgoto close_RL3
MOVLA RL3_pointH
SUB Vin_L,A
BTSS STATUS,C
LGOTO control_RL4
close_RL3:
;*************
lcall check_zero
lcall delay_9ms
;*************
bs _RL3
BS RL3_status
movla _200ms
movam relay_delay_time
lgoto control_RL4
RL1_is_opened:
tmsc Vin_H
lgoto control_RL2
MOVLA RL1_pointL
SUB Vin_L,A
BTSC STATUS,C
LGOTO control_RL2
;*************
lcall check_zero
lcall delay_5ms
;*************
bs _RL1
bs RL1_status
movla _200ms
movam relay_delay_time
lgoto control_RL2
RL2_is_opened:
tmsc Vin_H
lgoto control_RL3
MOVLA RL2_pointL
SUB Vin_L,A
BTSC STATUS,C
LGOTO control_RL3
;*************
lcall check_zero
lcall delay_9ms
;*************
bs _RL2
BS RL2_status
movla _200ms
movam relay_delay_time
lgoto control_RL3
RL3_is_closed:
tmsc Vin_H
lgoto control_RL4
MOVLA RL3_pointL
SUB Vin_L,A
BTSC STATUS,C
LGOTO control_RL4
;*************
lcall check_zero
lcall delay_5ms
;*************
BC _RL3
BC RL3_status
movla _200ms
movam relay_delay_time
control_RL4:
tmsc relay_delay_time
ret
btsc RL4_status
lgoto RL4_is_closed
tmsc Vout_H
lgoto close_RL4
movla RL4_pointH
SUB Vout_L,A
btss STATUS,C
ret
close_RL4:
;*************
lcall check_zero
lcall delay_9ms
;*************
bs _RL4
BS RL4_status
movla _200ms
movam relay_delay_time
RET
RL4_is_closed:
tmsc Vout_H
RET
MOVLA RL4_pointL
SUB Vout_L,A
BTSC STATUS,C
RET
;*************
lcall check_zero
lcall delay_5ms
;*************
BC _RL4
BC RL4_status
movla _200ms
movam relay_delay_time
;*************
ret
;=============================
check_zero:
clr temp1
movla .5
movam temp2;total samples times
movla 0FFH
movam temp3
movla ZERO_SAMPLE_TIME
movam SAMPLETIME
;=============
start_adc:
NOP
MOVLA 01H
MOVAM AD_CTL1
MOVLA 02H;01H
MOVAM AD_CTL2
MOVLA 02H
MOVAM AD_CTL3
NOP
NOP
BTSC AD_CTL1,7
LGOTO $-1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -