📄 power.asm
字号:
;********************************************************
; PROJECT NAME : nimh charger *
; Author : borg *
; VERSION : V0.0 *
; BODY : SN8P2704a *
; COMPILER : 1.99N *
; function : *
; input : *
; output : tempvolt1_l, tempvolt1_h *
; tempvolt2_l, tempvolt2_h *
; use register : data1, data2, tempvolt1_l, tempvolt1_h*
; tempvolt2_l, tempvolt2_h *
; use flag : dtemp1_f, dtemp2_f *
; run cycles : *
; *******************************************************
;主要是利用p=u*i,通过检测市电电压、电流,计算现时功率与设定功率的差值,调整pwm,调整电流
mnpower:
b0bts1 power_f
jmp mnpower90
b0bts1 flag4.5
jmp mnpower90
mov a,voltage_l
mov multiplier_l,a ;乘数
mov a,voltage_h
mov multiplier_h,a
mov a,current_l
mov multiplicand_l,a ;被乘数
mov a,current_h
mov multiplicand_h,a
call mul2x2
mov a,result_l
mov power_l,a
mov a,result_ml
mov power_ml,a
mov a,result_mh
mov power_mh,a
mov a,result_h
mov power_h,a
;************************************************
mnpower10:
mov a,power_l
sub a,#80h
b0bts1 fc
jmp mnpower20
jmp mnpower101
mnpower101:
mov a,#0h
adc power_ml,a
jmp mnpower20
;************************************************
mnpower20:
mov a,power_ml
sub a,power_set_l
mov delta_power_l,a
mov a,power_mh
sbc a,power_set_h
mov delta_power_h,a
b0bts1 fc
jmp mnpower201
jmp mnpower202
mnpower201: ;功率低于设定值
bset power_low_f
bclr power_high_f
mov a,#0ffh
xor delta_power_l,a
mov a,#0ffh
xor delta_power_h,a
bset fc
mov a,#0h
adc delta_power_l,a
adc delta_power_h,a
jmp mnpower30
mnpower202: ;功率高于设定值
b0bts0 fz
jmp mnpower203
mnpower204:
bset power_high_f
bclr power_low_f
jmp mnpower30
mnpower203:
mov a,delta_power_l
sub a,#10h
b0bts0 fc
jmp mnpower204
bclr power_high_f
bclr power_low_f
jmp mnpower90
;************************************************
mnpower30:
mov a,delta_power_l
sub a,#092h
mov a,#09h
mov power_temp,a
mov a,delta_power_h
sbc a,power_temp
b0bts1 fc
jmp mnpower301
jmp mnpower302
mnpower301: ;低于设定功率200w以内
mov a,delta_power_l
sub a,#0c9h
mov a,#4h
mov power_temp,a
mov a,delta_power_h
sbc a,power_temp
b0bts1 fc
jmp mnpower303
jmp mnpower304
;------------------------------------------------
mnpower302: ;低于设定功率200w以外
b0bts0 power_high_f
jmp mnpower302_high
b0bts0 power_low_f
jmp mnpower302_low
jmp mnpower90
mnpower302_high:
mov a,tc0r_copy
sub a,#10
mov tc0r,a
mov tc0r_copy,a
jmp mnpower90
mnpower302_low:
mov a,tc0r_copy
add a,#10
mov tc0r,a
mov tc0r_copy,a
jmp mnpower90
;------------------------------------------------
mnpower303: ;低于设定功率100w以内
mov a,delta_power_l
sub a,#064h
mov a,#2
mov power_temp,a
mov a,delta_power_h
sbc a,power_temp
b0bts1 fc
jmp mnpower305
jmp mnpower306
;------------------------------------------------
mnpower304: ;100w~200w
b0bts0 power_high_f
jmp mnpower304_high
b0bts0 power_low_f
jmp mnpower304_low
jmp mnpower90
mnpower304_high:
mov a,tc0r_copy
sub a,#10
mov tc0r,a
mov tc0r_copy,a
jmp mnpower90
mnpower304_low:
mov a,tc0r_copy
add a,#10
mov tc0r,a
mov tc0r_copy,a
jmp mnpower90
;------------------------------------------------
mnpower305: ;低于设定功率50w以内
mov a,delta_power_l
sub a,#0f5h
mov a,#0
mov power_temp,a
mov a,delta_power_h
sbc a,power_temp
b0bts1 fc
jmp mnpower307
jmp mnpower308
;------------------------------------------------
mnpower306: ;50w~100w
b0bts0 power_high_f
jmp mnpower306_high
b0bts0 power_low_f
jmp mnpower306_low
jmp mnpower90
mnpower306_high:
mov a,tc0r_copy
sub a,#5
mov tc0r,a
mov tc0r_copy,a
jmp mnpower90
mnpower306_low:
mov a,tc0r_copy
add a,#5
mov tc0r,a
mov tc0r_copy,a
jmp mnpower90
;------------------------------------------------
mnpower307: ;低于设定功率20w以内
mov a,delta_power_l
sub a,#07ah
mov a,#0
mov power_temp,a
mov a,delta_power_h
sbc a,power_temp
b0bts1 fc
jmp mnpower309
jmp mnpower300
;------------------------------------------------
mnpower308: ;20w~50w
b0bts0 power_high_f
jmp mnpower308_high
b0bts0 power_low_f
jmp mnpower308_low
jmp mnpower90
mnpower308_high:
mov a,tc0r_copy
sub a,#2
mov tc0r,a
mov tc0r_copy,a
jmp mnpower90
mnpower308_low:
mov a,tc0r_copy
add a,#2
mov tc0r,a
mov tc0r_copy,a
jmp mnpower90
;------------------------------------------------
mnpower309: ;低于设定功率10w以内
b0bts0 power_high_f
jmp mnpower309_high
b0bts0 power_low_f
jmp mnpower309_low
jmp mnpower90
mnpower309_high:
mov a,tc0r_copy
sub a,#1
mov tc0r,a
mov tc0r_copy,a
jmp mnpower90
mnpower309_low:
mov a,tc0r_copy
add a,#1
mov tc0r,a
mov tc0r_copy,a
jmp mnpower90
;------------------------------------------------
mnpower300: ;10w~20w
b0bts0 power_high_f
jmp mnpower300_high
b0bts0 power_low_f
jmp mnpower300_low
jmp mnpower90
mnpower300_high:
mov a,tc0r_copy
sub a,#1
mov tc0r,a
mov tc0r_copy,a
jmp mnpower90
mnpower300_low:
mov a,tc0r_copy
add a,#1
mov tc0r,a
mov tc0r_copy,a
jmp mnpower90
;************************************************
mnpower90:
mov a,tc0r_copy
sub a,#245
b0bts1 fc
jmp mnpower901
jmp mnpower902
mnpower901:
jmp mnpower905
mnpower902:
mov a,tc0r_copy
sub a,#10
mov tc0r_copy,a
jmp mnpower909
mnpower905:
mov a,tc0r_copy
sub a,#11
b0bts1 fc
jmp mnpower906
jmp mnpower907
mnpower906:
mov a,tc0r_copy
add a,#10
mov tc0r_copy,a
jmp mnpower909
mnpower907:
jmp mnpower909
mnpower909:
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -