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

📄 detect.asm

📁 应用松翰母体写的一款电磁炉
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;-----
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		;send A/D value to temp
	and	a,#0fh
	mov	ADCtempl,a
	swap	adb
	mov	ADCtemph,a
	and	a,#0f0h
	or	ADCtempl,a
	mov	a,#0fh
	and	ADCtemph,a
;----
;开始比较
	b0bts0	startcompflag
	jmp	comparevalue	
	b0bts0	sendvalueflag
	jmp	sendnextvalue
;----
	bset	sendvalueflag
	mov_	ADCmaxvaluel,ADCtempl
	mov_	ADCmaxvalueh,ADCtemph
	jmp	decADCcount
;-------------------------------
sendnextvalue:
	bset	startcompflag
	mov	a,ADCtempl
	sub	a,ADCmaxvaluel
	mov	a,ADCtemph
	sbc	a,ADCmaxvalueh
	b0bts1	fc
	jmp	sendminvalue
	mov_	ADCminvaluel,ADCmaxvaluel
	mov_	ADCminvalueh,ADCmaxvalueh
	mov_	ADCmaxvaluel,ADCtempl
	mov_	ADCmaxvalueh,ADCtemph
	jmp	decADCcount
;-----
sendminvalue:	
	mov_	ADCminvaluel,ADCtempl
	mov_	ADCminvalueh,ADCtemph
	jmp	decADCcount
;--------------------------------
comparevalue:
	mov	a,ADCtempl
	sub	a,ADCmaxvaluel
	mov	a,ADCtemph
	sbc	a,ADCmaxvalueh
	b0bts1	fc
	jmp	compareminvalue
	mov	a,ADCmaxvaluel	
	add	ADCvaluel,a	
	mov	a,ADCmaxvalueh
	adc	ADCvalueh,a
	mov_	ADCmaxvaluel,ADCtempl
	mov_	ADCmaxvalueh,ADCtemph
	jmp	decADCcount
;--------------------------------
compareminvalue:
	mov	a,ADCtempl
	sub	a,ADCminvaluel
	mov	a,ADCtemph
	sbc	a,ADCminvalueh
	b0bts0	fc
	jmp	Addvalue
	mov	a,ADCminvaluel	
	add	ADCvaluel,a	
	mov	a,ADCminvalueh
	adc	ADCvalueh,a
	mov_	ADCminvaluel,ADCtempl
	mov_	ADCminvalueh,ADCtemph
	jmp	decADCcount
;--------------------------------
Addvalue:
	mov	a,ADCtempl	
	add	ADCvaluel,a	
	mov	a,ADCtemph
	adc	ADCvalueh,a
;--------------------------------
decADCcount:
	decms	ADCcnt		
	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	;AD/2
;----	
mnADconvert90:
	ret
;**********************************************
;Name	:mnpwmpulseset
;Function:pwm adjust
;Input  :temp3,temp2,temp1,temp0
;Output	:
;Register Used:var1,var2,var3
;***********************************************	
mnpwmpulseset:	
	mov_	var1,#ADC50Wvaluel
	mov_	var2,#ADC50Wvaluem
	mov_	var3,#ADC50Wvalueh
	b0bts0	beyondflag
	jmp	lowervaluecheck
;----------------------------------------
;uppervaluecheck
	mov	a,powervaluel
	add	var1,a
	mov	a,powervaluem
	adc	var2,a
	mov	a,powervalueh
	adc	var3,a
;----
	mov	a,temp0
	sub	a,var1
	mov	a,temp1
	sbc	a,var2		;temp2,1,0-powervalueh,powervaluem,powervaluel
	mov	a,temp2
	sbc	a,var3
	b0bts1	fc
	jmp	mnpwmpulseset70	;<
;-----				;>
	bset	beyondflag
	mov	a,pwmpulsebuf	;dec pwm pulse width
	sub	a,#10
	b0bts1	fc
	jmp	lessvalue
	decms	pwmpulsebuf
	nop
	jmp	sendvolvalue
;---------------------------------------------
lowervaluecheck:
	mov	a,powervaluel
	sub	var1,a
	mov	a,powervaluem
	sbc	var2,a
	mov	a,powervalueh
	sbc	var3,a
;----
	mov	a,temp0
	sub	a,var1
	mov	a,temp1
	sbc	a,var2		;temp2,1,0-powervalueh,powervaluem,powervaluel
	mov	a,temp2
	sbc	a,var3
	b0bts0	fc
	jmp	mnpwmpulseset80	;>
;----
incvolpwm:			;<
	mov	a,pwmpulsebuf
	sub	a,#58
	b0bts0	fc
	jmp	beyondrange
	incms	pwmpulsebuf
	nop
	jmp	sendvolvalue
;----
beyondrange:
	mov_	pwmpulsebuf,#58
	jmp	sendvolvalue
;----
lessvalue:
	mov_	pwmpulsebuf,#10
;----
sendvolvalue:
	mov_	tc1r,pwmpulsebuf
	ret
;----
mnpwmpulseset70:
	bset	beyondflag
	ret
;----
mnpwmpulseset80:
	bclr	beyondflag
;----
mnpwmpulseset90:
	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	;过压
;----
	b0bts0	highvoltflag
	jmp	waithighnormal
;----
	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
	call	pushsegvalue
	mov_	seg2buf,#Errorvalue4
	mov_	seg1buf,#Errorvalue
	bset	abnormalvoltflag
	bset	lowvoltflag
	bclr	startflag
	ret
;----
;过压
beyondvolt:
	b0bts0	pushvalueflag
	ret
	bset	pushvalueflag
	call	pushsegvalue
	mov_	seg2buf,#Errorvalue3
	mov_	seg1buf,#Errorvalue
	bset	abnormalvoltflag
	bset	highvoltflag
	bclr	startflag
	ret
;------
waithighnormal:
	mov_	temp0,#uppervalue1
	mov_	temp1,#uppervalue2
;----
	mov	a,ADCvaluel
	sub	a,temp0
	mov	a,ADCvalueh
	sbc	a,temp1
	b0bts0	fc
	ret	
	bclr	highvoltflag
	ret
;-------------------
normalvolt:
	b0bts0	lowvoltflag
	jmp	waitlownormal
	b0bts1	abnormalvoltflag
	ret
	bclr	abnormalvoltflag
	bclr	pushvalueflag
	bclr	detecttimeflag
	bclr	checkcookerflag
	bclr	cyclestartflag
	bclr	onecycleflag
	call	popsegvalue
	bclr	secondflag
	ret
;-----
waitlownormal:
	mov_	temp0,#lowervalue1
	mov_	temp1,#lowervalue2
;----
	mov	a,ADCvaluel
	sub	a,temp0
	mov	a,ADCvalueh
	sbc	a,temp1
	b0bts1	fc
	ret
	bclr	lowvoltflag
	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
	ret
;----
;过流
	mov_	seg2buf,#Errorvalue0
	mov_	seg1buf,#Errorvalue
	bset	malfunctionflag
	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
	ret
;----
;过热
	mov_	seg2buf,#Errorvalue6
	mov_	seg1buf,#Errorvalue
	bset	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
	ret				;传感器正常
;----
;传感器短路
	mov_	seg2buf,#Errorvalue6
	mov_	seg1buf,#Errorvalue
	bset	malfunctionflag
	ret
;------------------
;传感器开路
openproblem:
	mov_	seg2buf,#Errorvalue5
	mov_	seg1buf,#Errorvalue
	bset	malfunctionflag
	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
;********************************************************
;********************************************************
initADCbuf:
	mov_	ADCcnt,#4	
	clr	ADCvaluel
	clr	ADCvalueh
	clr	ADCtempl
	clr	ADCtemph
	bclr	sendvalueflag
	bclr	startcompflag
	ret
;********************************************************
;********************************************************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -