📄 hl-1000a.asm
字号:
movlw 6
movwf adcount
movlw 5
movwf r1
movlw line
movwf 4h
movfw 0h
movwf mix
mix1: incf 4h
movfw 0h
;bcf STATUS,0
subwf mix,0
BTFSC STATUS,0
goto mix2
movfw 0h
movwf mix
mix2: decfsz r1
goto mix1
movlw 5
movwf r1
movlw line
movwf 4h
movfw 0h
movwf min
min1: incf 4h
movfw 0h
; bcf STATUS,0
subwf min,0
BTFSs STATUS,0
goto min2
movfw 0h
movwf min
min2: decfsz r1
goto min1
movlw 5
movwf r1
movlw line
movwf 4h
movfw 0h
movwf sum
clrf sumh
sum1: incf 4h
movfw 0h
; bcf STATUS,0
addwf sum,1
BTFSs STATUS,0
goto sum2
incf sumh
sum2: decfsz r1
goto sum1
movfw min
; bcf STATUS,0
subwf sum
BTFSs STATUS,0
decf sumh
movfw mix
; bcf STATUS,0
subwf sum
BTFSs STATUS,0
decf sumh
rrf sumh
rrf sum
rrf sumh
rrf sum
bsf adcz
btfsc oneturnz
goto oneturnx
movlw 7
subwf onetime1,0
btfss status,0
bsf cetime1z
btfsc oneturnz
goto oneturnx
decfsz onetime ;
goto battery
decfsz onetime1
goto battery
movlw 25
movwf onetime1
bsf oneturnz
goto battery
oneturnx: movfw sum
SUBLW 82 ;电压低于130V,跳到电池供电
BTFSs STATUS,0
goto cityop
BsF STATUS, RP0
movlw 50
movwf electricity1
goto battery
cityop: btfsc cityz
goto ooppy
BsF STATUS, RP0
decfsz electricity
goto battery
decfsz electricity1
goto battery
movlw 50
movwf electricity1
BcF STATUS, RP0
ooppy:
movfw sum
movwf sumb
SUBLW 171 ;
BTFSc STATUS,0
goto city250
;**********************************************过压>275V
bcf light,0 ;跳到电池供电
goto battery
;********************************************** 市电供电
city250:
;*********************************************************计算110%保护电流
movfw sum
SUBLW 107 ;小于130v-170v
BTFSs STATUS,0 ;保护电流调整
goto city250r
bsf currentrun
movlw 168
;movlw 89
movwf r2
call mmlt0a0
movfw l_bytea
movwf rating1
SUBwf Imax,0 ;
BTFSc STATUS,0
goto battery
;*********************************************************计算150%保护电流
movlw 220
movwf r2
call mmlt0a0
movfw l_bytea
movwf rating2
goto city250t
;*********************************************************8
city250r:
bcf currentrun
movlw 168
movwf rating1
movlw 220
movwf rating2
city250t:
btfsc pfcz
goto relay4a
bsf cityz
bsf rly
decfsz onetime ;
goto relay4a
bsf pfcz
bsf CHGOFF
; bsf dcoff
;关DC-DC
bcf batteryz ;清电池工作状态
nop
nop
nop
nop
nop
nop
bcf pfcoffa ;开P
nop
nop
nop
nop
nop
nop
bsf pfcoffa
nop
nop
nop
nop
nop
nop
bcf pfcoffa
bsf pwmoffa ;开spwm
;bcf startupz ;设开启
bsf cn10 ;
bcf cn9
goto relay4a
;
battery:
BcF STATUS, RP0
bcf cityz
battery1:
bcf currentrun
movlw 168
movwf rating1
movlw 220
movwf rating2
bsf cn9 ;
bcf cn10
bsf batteryz ;
bcf city160z
bsf pfcoffa ;关PFC
bcf CHGOFF
bcf dcoff ;开DC-DC
bcf pfcz
movlw 5
subwf pid,0
BTFSC STATUS,0
bsf pwmoffa
;**********************************************
relay4a: nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movlw 0e1h
movwf adcon0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
bsf adcon0,2
relay: btfsc adcon0,2 ;4
; nop
; nop
goto relay
movlw inv
addwf f4a,0
movwf 4h
movfw adres
movwf 0h
btfss adcz
goto pidc
movlw 5
movwf r1
movlw inv
movwf 4h
movfw 0h
movwf mix
mixa1a: incf 4h
movfw 0h
; bcf STATUS,0
subwf mix,0
BTFSC STATUS,0
goto mixa2a
movfw 0h
movwf mix
mixa2a: decfsz r1
goto mixa1a
movlw 5
movwf r1
movlw inv
movwf 4h
movfw 0h
movwf min
mina1a: incf 4h
movfw 0h
; bcf STATUS,0
subwf min,0
BTFSs STATUS,0
goto mina2a
movfw 0h
movwf min
mina2a: decfsz r1
goto mina1a
movlw 5
movwf r1
movlw inv
movwf 4h
movfw 0h
movwf sum
clrf sumh
suma1a: incf 4h
movfw 0h
; bcf STATUS,0
addwf sum,1
BTFSs STATUS,0
goto suma2a
incf sumh
suma2a: decfsz r1
goto suma1a
movfw min
subwf sum
BTFSs STATUS,0
decf sumh
movfw mix
subwf sum
BTFSs STATUS,0
decf sumh
rrf sumh
rrf sum
rrf sumh
rrf sum
movfw sum
movwf suma
SUBLW 155 ;输出电压过高
BTFSs STATUS,0
goto close1
nextq: btfss oneturnz
goto pidc
movfw suma
SUBLW 80 ;输出电压过低
BTFSc STATUS,0
; goto close1
nop
bsf invrly
bcf light,7
bsf light,0
btfss bypassaz
goto pidc
bcf inphasez
bcf bypassaz
bcf inphasez
BsF STATUS, RP0
MOVLW 0c8h
MOVWF PR2
BcF STATUS, RP0
;**********************************************pid 调节
pidc:
movfw suma
;BCF STATUS,0
SUBLW 143
BTFSs STATUS,0 ;当电压在219-222之间不调整
goto pidc1
; BCF STATUS,0
movfw adres
SUBLW 141
BTFSs STATUS,0
goto d_v
; BCF STATUS,0
movfw pid ;当pid 大于240不加
SUBLW 180
BTFSs STATUS,0
goto d_v
incf pid1
clrf pid2
; BCF STATUS,0
movfw pid1
SUBLW 40 ;
BTFSc STATUS,0
goto d_v
incf pid
clrf pid1
goto d_v
pidc1:
incf pid2
clrf pid1
;BCF STATUS,0
movfw pid2
SUBLW 40 ;
BTFSc STATUS,0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -