⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 detect.asm

📁 应用松翰母体写的一款电磁炉
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	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 + -