📄 detect.asm
字号:
bset checktimeflag
mov_ timer1m,#60
bclr oneminuteflag
bclr havecookerflag
bclr ptcout ;close IGBT
bclr fpwm1out
bclr ftc1enb ;stop t1 pwm
bclr fp01ien
;-----
mov_ seg1temp,seg1buf
mov_ seg2temp,seg2buf
mov_ seg3temp,seg3buf
mov_ seg1buf,#Errorvalue
mov_ seg2buf,#Errorvalue1
bset nocookerflag
bclr startflag
ret
;------
checkingtime:
b0bts1 oneminuteflag
jmp cookercheck60
;----
bclr oneminuteflag
bset stoprunflag
bset buzzerflag
mov_ buzzercnt,#120 ;蜂鸣器鸣叫一分钟后关机
;-----
cookercheck60:
;// bclr ptcout ;close IGBT
bclr fpwm1out
bclr ftc1enb ;stop t1 pwm
bclr ptpwm
bclr fp01ien
ret
;-----------------
havecookerdeal:
;有锅处理
bset havecookerflag
bclr Igbtstartupflag
bclr checktimeflag
bclr secondflag
;-----
b0bts1 nocookerflag
jmp cookercheck90
bclr nocookerflag
bclr buzzerflag
clr buzzercnt ;解除报警
mov_ seg1buf,seg1temp
mov_ seg2buf,seg2temp
mov_ seg3buf,seg3temp
ret
;------------------------
cookercheck80:
b0bts1 onecycleflag
jmp cookercheck90
;-----
bclr onecycleflag
bclr checkcookerflag
;-----
cookercheck90:
ret
;**********************************************
;Name :mnADconvert
;Function:A/D转换四次,然求四次的平均值
;Input :
;Output :
;Register Used:var1
;***********************************************
mnADconvert:
b0bset fgchs ;enable ain
b0bset fadenb ;enable ad
call delay100us ;stable ad circuit
;----
convert_again:
b0bset fads ;start convert
waitadchigh:
b0bts1 feoc ;check finish convert or not
jmp waitadchigh
bclr feoc
;----
mov a,adr
and a,#0fh
mov ADCtemp,a
swap adb
and a,#0f0h
or a,ADCtemp
add ADCvaluel,a
swap adb
and a,#0fh
adc ADCvalueh,a
decms ADCcnt
;// jmp convert_again ;check again
jmp mnADconvert90
;----
bset ADCendflag ;set A/D convert over
b0bclr fgchs ;disable ain
b0bclr fadenb ;disable ad
clr p4con ;release AIN pin
;----
bclr fc
rrcm ADCvalueh
rrcm ADCvaluel
;---
bclr fc
rrcm ADCvalueh
rrcm ADCvaluel ;AD/4
mnADconvert90:
ret
;**********************************************
;Name :mnpwmpulseset
;Function:pwm adjust
;Input :temp3,temp2,temp1,temp0
;Output :
;Register Used:
;***********************************************
mnpwmpulseset:
mov a,temp0
sub a,powervaluel
mov a,temp1
sbc a,powervaluem ;temp2,1,0-powervalueh,powervaluem,powervaluel
mov a,temp2
sbc a,powervalueh
b0bts1 fc
jmp incvolpwm ;<
;----- ;>
mov a,pwmpulsebuf ;dec pwm pulse width
sub a,#5
b0bts1 fc
jmp lessvalue
decms pwmpulsebuf
nop
jmp sendvolvalue
;----
incvolpwm:
mov a,pwmpulsebuf
sub a,#17h
b0bts0 fc
jmp beyondrange
incms pwmpulsebuf
nop
jmp sendvolvalue
;----
beyondrange:
mov_ pwmpulsebuf,#17h
jmp sendvolvalue
;----
lessvalue:
mov_ pwmpulsebuf,#5
;----
sendvolvalue:
mov_ tc1r,pwmpulsebuf
ret
;**********************************************
;Name :voltageanalyse
;Function:市电电压分析
;Input :
;Output :
;Register Used:temp0,temp1
;***********************************************
voltageanalyse:
;-----
;过压分析
mov_ temp0,#uppervaluel
mov_ temp1,#uppervalueh
;----
mov a,ADCvaluel
sub a,temp0
mov a,ADCvalueh
sbc a,temp1
b0bts0 fc
jmp beyondvolt ;过压
;----
mov_ temp0,#lowervaluel
mov_ temp1,#lowervalueh
;----
mov a,ADCvaluel
sub a,temp0
mov a,ADCvalueh
sbc a,temp1
b0bts0 fc
jmp normalvolt ;电压正常
;----
;欠压
b0bts0 pushvalueflag
ret
bset pushvalueflag
mov_ seg1temp,seg1buf
mov_ seg2temp,seg2buf
mov_ seg3temp,seg3buf
mov_ seg2buf,#Errorvalue4
mov_ seg1buf,#Errorvalue
bset abnormalvoltfalg
bclr startflag
ret
;----
;过压
beyondvolt:
b0bts0 pushvalueflag
ret
bset pushvalueflag
mov_ seg1temp,seg1buf
mov_ seg2temp,seg2buf
mov_ seg3temp,seg3buf
mov_ seg2buf,#Errorvalue3
mov_ seg1buf,#Errorvalue
bset abnormalvoltfalg
bclr startflag
ret
normalvolt:
b0bts1 abnormalvoltfalg
ret
bclr abnormalvoltfalg
bclr pushvalueflag
bclr detecttimeflag
bclr checkcookerflag
bclr cyclestartflag
bclr onecycleflag
mov_ seg1buf,seg1temp
mov_ seg2buf,seg2temp
mov_ seg3buf,seg3temp
bclr secondflag
ret
;**********************************************
;Name :currentanalyse
;Function:过流分析
;Input :
;Output :
;Register Used:temp0,temp1
;***********************************************
currentanalyse:
mov_ temp0,#currentvaluel
mov_ temp1,#currentvalueh
;----
mov a,ADCvaluel
sub a,temp0
mov a,ADCvalueh
sbc a,temp1
b0bts1 fc
jmp normalcurrent
;----
;过流
mov_ seg2buf,#Errorvalue0
mov_ seg1buf,#Errorvalue
bset malfunctionflag
ret
;----
normalcurrent:
ret
;**********************************************
;Name :hotestanalyse
;Function:陶瓷面板过热分析
;Input :
;Output :
;Register Used:temp0,temp1
;***********************************************
hotestanalyse:
mov_ temp0,#hotestvaluel
mov_ temp1,#hotestvalueh
;----
mov a,ADCvaluel
sub a,temp0
mov a,ADCvalueh
sbc a,temp1
b0bts1 fc
jmp normaltemp
;----
;过热
mov_ seg2buf,#Errorvalue6
mov_ seg1buf,#Errorvalue
bset malfunctionflag
ret
;----
normaltemp:
;// bclr malfunctionflag ;需手动解除
ret
;**********************************************
;Name :sensoranalyse
;Function:传感器分析
;Input :
;Output :
;Register Used:temp0,temp1
;***********************************************
sensoranalyse:
;----
;开路分析
mov_ temp0,#openvaluel
mov_ temp1,#openvalueh
;----
mov a,ADCvaluel
sub a,temp0
mov a,ADCvalueh
sbc a,temp1
b0bts1 fc
jmp openproblem ;传感器开路
;----
;短路分析
mov_ temp0,#shortvaluel
mov_ temp1,#shortvalueh
;----
mov a,ADCvaluel
sub a,temp0
mov a,ADCvalueh
sbc a,temp1
b0bts1 fc
jmp sensornormal ;传感器正常
;----
;传感器短路
mov_ seg2buf,#Errorvalue6
mov_ seg1buf,#Errorvalue
bset malfunctionflag
ret
;------------------
;传感器开路
openproblem:
mov_ seg2buf,#Errorvalue5
mov_ seg1buf,#Errorvalue
bset malfunctionflag
ret
;-------------
sensornormal:
;// bclr malfunctionflag ;需手动解除
ret
;**********************************************
;Name :func_analyse
;Function:under which function
;Input :
;Output :
;Register Used:temp0,temp1
;***********************************************
func_analyse:
func_analyse90:
ret
;**********************************************
;Name :ADC16x16bit
;Function:两个无符号16bit数相乘temp3,2,1,0=ADCvolbufh,l X ADCcurbufh,l
;Input :temp5,temp4,ADCvolbufh,ADCvolbufl;ADCcurbufh,ADCcurbufl
;Output :temp3,temp2,temp1,temp0
;Register Used:var1
;***********************************************
ADC16x16bit:
mov a,#16
mov var1,a
clr temp0
clr temp1
clr temp2
clr temp3
clr temp4
clr temp5
;-----
loop_mul:
bclr fc
rrcm ADCcurbufh
rrcm ADCcurbufl
b0bts1 fc
jmp adjustposition
;-----
mov a,ADCvolbufl
add temp0,a
mov a,ADCvolbufh
adc temp1,a
mov a,temp4
adc temp2,a
mov a,temp5
adc temp3,a
;-----
adjustposition:
bclr fc
rlcm ADCvolbufl
rlcm ADCvolbufh
rlcm temp4
rlcm temp5
decms var1
jmp loop_mul
ADC16x16bit90:
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -