📄 hl-1000a.asm
字号:
pa equ porta
pb equ portb
pc equ portc
pdd equ portd
pe equ porte
st equ status
SITEA equ portb.0 ;市电过零检测
RClK equ portb.1 ;595控制
CHGOFF equ portb.2 ;PFC供电电源控制
SER equ portb.3 ;灯的输出数据串口
PWERWATCH equ portb.4 ;12V电源监测
OUTAC equ portb.5 ;逆变同步信号
INAC equ portb.6 ;市电同步信号
LOAD1A equ portb.7 ;过流信号
RLY equ portc.0 ;旁路继电器
PWMOFFA equ portc.3 ;高端IGBT输出控制
INVRLY equ portc.4 ;输出继电器控制
SCLK equ portc.5 ;开机检测 /蜂鸣器
TXDA equ portc.6 ;发送
RXDA equ portc.7 ;接收
PFCOFFA equ portd.0 ;PFC停,开控制
SDAA equ portd.1 ;关机控制
DCOFF equ portd.2 ;DC-DC转换控制
BZ1 equ portd.3 ;蜂鸣器
SCL equ portd.4 ;24C02
SDA equ portd.5 ;24C02
CN9 equ portd.6 ;指示灯
CN10 equ portd.7 ;指示灯
temp equ 55h
bat equ 5bh
line equ 61h
load equ 67h
inv equ 6dh
busa equ 73h
busb equ 79h
frequency equ 0a7h ; 0a7h-- 0adh 用来放 市电周期
light EQU 20H ;灯的状态
r1 EQU 21H ;临时用
r2 EQU 22H
aa EQU 23H
current_time1 equ 24h ;110%过流用
current_time2 equ 25h ;110%过流用
CC equ 26h
mulcnd equ 27h ;8位乘数
mulplr equ 28h ;8位乘数
H_byte equ 29h ;16位高字节
l_byte equ 2ah ;16位低字
rating1 equ 2bh ;110%额定电流
rating2 equ 2ch ;150%额定电流
onetime equ 2dh ;记时用
onetime1 equ 2eh ;
pid equ 2fh ;pid数据
pid1 equ 30h ;
batterytime1 equ 31h
batterytime2 equ 32h
overp equ 33h.0
closez equ 33h.1
adcz equ 33h.2
showz equ 33h.3
keyz equ 33h.4
keygz equ 33h.5
pwmsz equ 33h.6
pwmsAz equ 33h.7
city160z equ 34h.0
bz1z equ 34h.1
hotz equ 34h.2
overc equ 34h.3 ;当报警旁路后,电流小于报警值是用
overc1 equ 34h.4
openz equ 34h.5
batteryz equ 34h.6
startupz equ 34h.7
batteryaz equ 35h.0 ;电池报警
inphasez equ 35h.1 ;同步完成
cityz equ 35h.2 ;
OUTACz equ 35h.3
INACz equ 35h.4
INACZt equ 35h.5
inphashz equ 35h.6
citywz equ 35h.7
timer1 equ 36h
timer2 equ 37h
timer3 equ 38h
timer4 equ 39h
lightcl equ 3ah ;电流显示用
timer6 equ 3bh
timer7 equ 3ch
timer8 equ 3dh
timer9 equ 3eh
mix equ 3fh
min equ 40h
sum equ 41h
sumh equ 42h
pid2 equ 43h
f4a equ 44h
countp equ 45h
suma equ 46h
lightc equ 47h ;电池指示用
lightz equ 48h
sumb equ 49h
copyw equ 4ah
copyst equ 4bh
adcount equ 4ch
tim1 equ 4dh
tim2 equ 4eh
Imax equ 4fh
H_bytea equ 50h ;16位高字节
l_bytea equ 51h ;16位低字
countt equ 52h
closeaz equ 53h.0
batterylowz equ 53h.1
pfcz equ 53h.6
oneturnz equ 53h.7
samez equ 54h.0
highz equ 54h.1
lowz equ 54h.2
bypassz equ 54h.3
bypassaz equ 54h.4
currentoverz equ 54h.5 ;报警用
currentrun equ 54h.6 ;电流调整标志
cetime1z equ 54h.7
lightzl equ 07fh
countpc equ 0a0h
mixp equ 0a1h
minp equ 0a2h
sump equ 0a3h
sumph equ 0a4h
r1p equ 0a5h
f4ap equ 0a6h
electricity equ 0b0h
electricity1 equ 0b1h
ORG 0
RESET: GOTO START
ORG 04H ;中断向量
goto PER_INT_V
PER_INT_V:
movwf copyw
SWAPF STATUS,W
CLRF STATUS
MOVWF copyst
per1: BCF STATUS, RP0
BTFSC PIR1,1 ;T2溢出中断
GOTO PWM
OTHER_INT:
BSF STATUS, RP0
BTFSC INTCON,0 ;b口中断
GOTO PRBIN
TM1: BTFSC PIR1,0 ;T1中断
GOTO TIME1
INT: BTFSC INTCON,1 ;INT口中断
GOTO PRBINT
START:
BcF STATUS, RP0
bcf t1con,0
movlw 0ffh
movwf pa
movlw 0f4h
movwf pb
movlw 00h
movwf pc
movlw 0c5h
movwf pdd
BsF STATUS, RP0
movlw 0ffh
movwf trisa
movlw 0f1h
movwf trisb
movlw 00h
movwf trisc
movwf trisd
movlw 96
movwf 0a0h
movlw 0a0h
movwf 4h
startb1: incf 4h
movlw 00h
movwf 0h
decfsz 0a0h
goto startb1
movlw 6
movwf countpc
movlw 50
movwf electricity1
BcF STATUS, RP0
CLRF PIE1 ;关所有外部中断
clrf CCPR1L
CLRf TMR1H
CLRF TMR1L
CLRF INTCON
CLRF PIR1
movlw 96
movwf 20h
movlw 20h
movwf 4h
startb: incf 4h
movlw 00h
movwf 0h
decfsz 20h
goto startb
movlw 6
movwf adcount
movlw 0ffh
movwf light
movlw 10
movwf lightc
movlw 2
movwf timer2
movlw 20
movwf timer7
movlw 45
movwf current_time2
movlw 17
movwf batterytime2
movlw 100
movwf timer4
movlw 3ch
movwf tmr1h
movlw 0afh
movwf tmr1l
movlw 0c8h
movwf countp
clrf tmr0
movlw 10
movwf timer6
aaa:
decfsz timer8 ;延时
goto aaa
decfsz timer9
goto aaa
btfsc cn9
goto tiaos1
bsf cn9
goto tiaos2
tiaos1:
bcf tiaos1
bcf cn9
tiaos2: decfsz timer6
goto aaa
BTFSs LOAD1A ;过载检测
GOTO overloading
BTFSs PWERWATCH ;12V电源检测
GOTO powersupply
BSF INTCON, GIE ;开全体中断允许
BSF T2CON, TMR2ON ;开定时器T2
BSF INTCON, PEIE ;开外部中断
BsF STATUS, RP0
movlw 1
movwf adcon1
bsf pie1,1
MOVLW 0c8h
MOVWF PR2 ;先设PWM周期最
BcF STATUS, RP0
startup:
bcf cn10
decfsz onetime ;
goto startupaa
decfsz onetime1
goto startupaa
decfsz timer1
goto startupaa
decfsz timer2
goto startupaa
; bsf sdaa
goto startup
startupaa: BTFss openz ;启动检测
GOTO startup
bsf startupz
movlw 20
movwf timer2
movlw 200
movwf timer1
movlw 0ah
movwf onetime1
movlw 0ch
movwf ccp1con
MOVWF CCP2CON
movlw 100
movwf ccpr1l
BTFSC OUTAC ;逆变同步信号
bsf OUTACz
tt2: BTFSC INAC ;市电同步信号
bsf INACz
tt1:
bsf INTCON,3
bsf INTCON, INT
BSF T1CON, 4
startrun:
movlw 0d1h ;2
movwf adcon0
nop
nop
nop
nop
nop
nop
nop
nop
bsf adcon0,2
linead: btfsc adcon0,2
goto linead
movlw line
addwf f4a,0
movwf 4h
movfw adres
movwf 0h
decfsz adcount
goto relay4a
relay3:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -