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

📄 mnapp.asm

📁 应用松翰母体写的一款电磁炉
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;**********************************************
;Name	:mnapp
;Function:
;Input  :
;Output	:
;Register Used:
;***********************************************
mnapp:
	call	checkkey
	call	getinitparameter  ;某些功能下,不需要
	call	function
	
mnapp90:
	ret
;**********************************************
;Name	:ensure which key should operate
;Function:
;Input  :
;Output	:
;Register Used:
;***********************************************
checkkey:
	b0bts0	poweronflag
	jmp	checkkey90	;刚通电,不响应按键
	b0bts1	keyokflag
	jmp	checkkey100
;----
	bclr	keyokflag
	mov	a,aplcode
	@jmp_a	14
	jmp	checkkey90	;0
	jmp	boilwaterkey	;1,煮水
	jmp	warmmilkkey	;2,热奶
	jmp	soupingkey	;3,煲汤
	jmp	cookingkey	;4,煮饭,可定时
	jmp	barbecuekey    	;5,烧烤,可定时
	jmp	chaffydishkey   ;6,火锅
	jmp	frieddishkey    ;7,炒菜
	jmp	offkey		;8
	jmp	inckey		;9
	jmp	deckey		;10
	jmp	oneminkey	;11,一分钟
	jmp	tenminkey    	;12,十分钟
	jmp	canceltimekey	;13,一分钟和十分钟键同时按下	
;************************************************
frieddishkey:
;----
	call	clearallflag
	bset	frieddishflag
	bset	operateflag	;开始工作标志
	bset	parameterflag
	bset	settimeflag
	bset	fp01ien
;----
;初始化参数
	call	initparameter
	bclr	frieddishled	;light led
	bclr	temp160cled	;1200w
	mov_	stepbuf,#4	;level_4
;----
	bclr	t1mflag
	mov_	timer1m,#60	;1 minute set

	jmp	checkkey90
;************************************************
chaffydishkey:
;----
	call	clearallflag
	bset	chaffydishflag
	bset	operateflag	;开始工作标志
	bset	parameterflag
	bset	settimeflag
	bset	fp01ien
;----
;初始化参数
	call	initparameter
	bclr	chaffydishled
	mov_	stepbuf,#3	;level_3
	
	jmp	lightled
;************************************************
barbecuekey:
;----
	call	clearallflag
	bset	barbecueflag
	bset	operateflag	;开始工作标志
	bset	parameterflag
	bset	settimeflag
	bset	fp01ien
;----
;初始化参数
	call	initparameter
	bclr	barbecueled
	bclr	temp160Cled
	mov_	stepbuf,#4	;level_4
;----
	jmp	checkkey90	
;************************************************
cookingkey:
;----
	call	clearallflag
	bset	cookingflag
	bset	operateflag	;开始工作标志
	bset	fp01ien
;----
;初始化参数
	call	initparameter
	bclr	cookingled
	bclr	temp160cled	;1000w led
	bclr	t1mflag
	mov_	timer1m,#60	;1 minute set
	mov_	timerbuf1,#2	;set 2 minute
;---------------
;初始默认1000w/60℃
	mov_	ADCvolbufl,#ADC1000WvalueL
	mov_	ADCvolbufh,#ADC1000WvalueH
	
	mov_	ADCcurbufl,#ADCcurvalue4L
	mov_	ADCcurbufh,#ADCcurvalue4H
	
	mov_	ADCtempbufl,#ADC60CvalueL
	mov_	ADCtempbufh,#ADC60CvalueH
	
	jmp	checkkey90	
;************************************************
soupingkey:
;----
	call	clearallflag
	bset	soupingflag
	bset	operateflag	;开始工作标志
	bset	fp01ien
;----
;初始化参数
	call	initparameter
	bclr	soupingled
	bclr	temp160cled	;1000w led
;---------------
;初始默认1000w/80℃
	mov_	ADCvolbufl,#ADC1000WvalueL
	mov_	ADCvolbufh,#ADC1000WvalueH
	
	mov_	ADCcurbufl,#ADCcurvalue4L
	mov_	ADCcurbufh,#ADCcurvalue4H
	
	mov_	ADCtempbufl,#ADC80CvalueL
	mov_	ADCtempbufh,#ADC80CvalueH
	
	jmp	checkkey90	
;************************************************
warmmilkkey:
;----
	call	clearallflag
	bset	warmmilkflag
	bset	operateflag	;开始工作标志
	bset	fp01ien
;----
;初始化参数
	call	initparameter
	bclr	warmmilkled
	bclr	temp120Cled
	bclr	keepwarmled
;---------------
;初始默认300w/70℃
	mov_	ADCvolbufl,#ADC300WvalueL
	mov_	ADCvolbufh,#ADC300WvalueH
	
	mov_	ADCcurbufl,#ADCcurvalue2L
	mov_	ADCcurbufh,#ADCcurvalue2H
	
	mov_	ADCtempbufl,#ADC70CvalueL
	mov_	ADCtempbufh,#ADC70CvalueH	
;-----
	bclr	t1sflag
	mov_	timer1s,#100
	mov_	timerbuf1,#10		;恒温10s
		
	jmp	checkkey90	
;************************************************
boilwaterkey:
;----
	call	clearallflag
	bset	boilwaterflag
	bset	operateflag	;开始工作标志
	bset	fp01ien
;----
;初始化参数
	call	initparameter
	bclr	boilwaterled
	bclr	temp200Cled
	bclr	temp270Cled
;---------------
;初始默认1800w/70℃
	mov_	ADCvolbufl,#ADC1900WvalueL
	mov_	ADCvolbufh,#ADC1900WvalueH
	
	mov_	ADCcurbufl,#ADCcurvalue6L
	mov_	ADCcurbufh,#ADCcurvalue6H
	
	mov_	ADCtempbufl,#ADC70CvalueL	;水沸腾时的温度是?
	mov_	ADCtempbufh,#ADC70CvalueH
	
	jmp	checkkey90	

;************************************************
tenminkey:
;-----
	b0bts1	settimeflag
	jmp	checkkey90	;在某些功能下无效
;---
	bset	refurbishflag
	bset	timekeyflag
	mov	a,timerbuf
	and	a,#0f0h
	sub	a,#90h
	b0bts0	fc
	jmp	turnoffnum1
;-----
	mov	a,#10h
	add	timerbuf,a
	jmp	checkkey90
;---------------------
turnoffnum1:
	mov	a,#0fh
	and	timerbuf,a
	jmp	checkkey90	
;************************************************
oneminkey:
;-----
	b0bts1	settimeflag
	jmp	checkkey90	;在某些功能下无效
;---
	bset	refurbishflag	
	bset	timekeyflag
	mov	a,timerbuf
	and	a,#0fh
	sub	a,#9
	b0bts0	fc
	jmp	backzeronum0
;-----
	mov	a,#1
	add	timerbuf,a
	jmp	checkkey90
;-----
backzeronum0:
	mov	a,#0f0h
	and	timerbuf,a
	jmp	checkkey90
;************************************************
inckey:
;----
	b0bts1	operateflag
	jmp	checkkey90
;----
	mov	a,flag3
	and	a,#01111000b
	b0bts1	fz
	jmp	checkkey90
;-----
	mov	a,stepbuf	;0~8
	sub	a,#8
	b0bts0	fc
	jmp	checkkey90
;----
	incms	stepbuf
	nop
	bset	parameterflag
	bset	tempkeyflag
;-------------------
lightled:
	b0mov	y,#ledtbl$m
	b0mov	z,#ledtbl$l
	mov	a,stepbuf
	add	z,a
	mov	a,#0
	adc	y,a
;---
	movc	
	mov	seg4buf,a	
	jmp	checkkey90	
;************************************************
deckey:
;----
	b0bts1	operateflag
	jmp	checkkey90
;-----
	mov	a,flag3
	and	a,#01111000b
	b0bts1	fz
	jmp	checkkey90
;-----
	b0bts1	barbecueflag
	jmp	checkstep50
;---
	mov	a,stepbuf
	cmprs	a,#3
	jmp	stepdec	
	jmp	checkkey90
;-------------
checkstep50:
	mov	a,stepbuf
	b0bts0	fz
	jmp	checkkey90
;----
stepdec:
	decms	stepbuf
	nop
	bset	parameterflag
	bset	tempkeyflag
	jmp	lightled	
;************************************************
offkey:
;----
	call	clearallflag
	bset	Igbtstartupflag
	bset	stoprunflag
	bclr	ptcout		;close IGBT
	bclr	fpwm1out
	bclr	ftc1enb		;stop t1 pwm
	bclr	fp01ien
	mov	a,#0ffh
	mov	seg1buf,a
	mov	seg2buf,a
	mov	seg3buf,a
	mov	seg4buf,a
	jmp	checkkey90	
;*************************************************
canceltimekey:
	bclr	timekeyflag
	mov	a,#01000000b
	mov	seg1buf,a
	mov	seg2buf,a
	clr	timerbuf
	bclr	t1mflag
	mov_	timer1m,#60	;reset 1 minute
;*************************************************
checkkey90:
	clr	aplcode
;----
;有按键,重新刷新时间
	bclr	t2hflag
	mov_	timer2h,#2	;两小时定时控制
checkkey100:
	ret
	
;**********************************************
;Name	:getinitparameter
;Function:控制参数获得
;Input  :
;Output	:
;Register Used:
;**********************************************	
getinitparameter:
	b0bts1	operateflag
	jmp	getinitparameter90
	b0bts1	parameterflag
	jmp	getinitparameter90
;-----
	bclr	parameterflag
;---------------------------------------------
;/*
	b0mov	y,#steptbl1$m
	b0mov	z,#steptbl1$l
;---
	mov	a,stepbuf
	add	z,a
	mov	a,#0
	adc	y,a
;---
	movc
	mov	ADCvolbufl,a
	mov_	ADCvolbufh,r		;电压参数
;*/
;---------------------------------------------
	b0mov	y,#steptbl2$m
	b0mov	z,#steptbl2$l
;---
	mov	a,stepbuf
	add	z,a
	mov	a,#0
	adc	y,a
;---
	movc
	mov	ADCcurbufl,a
	mov_	ADCcurbufh,r		;电流参数
;---------------------------------------------
	b0mov	y,#temptbl$m
	b0mov	z,#temptbl$l
;---
	mov	a,stepbuf
	add	z,a
	mov	a,#0
	adc	y,a
;---
	movc
	mov	ADCtempbufl,a
	mov_	ADCtempbufh,r		;温度参数
;----------------------------------------------
	mov	a,stepbuf
	sub	a,#3
	b0bts1	fc
	jmp	setintermission		;功率小于600W,采用间歇加热方式
;------
	bclr	intermissionflag
	ret
;------
setintermission:
	bset	intermissionflag
getinitparameter90:
	ret

;**********************************************
;Name	:function
;Function:各种功能的切换
;Input  :
;Output	:
;Register Used:
;**********************************************
function:
	jb0	operateflag,function90		;工作状态下,开启功能控制
	jb1	frieddishflag,frieddishfun    	;炒菜功能
	jb1	chaffydishflag,chaffydishfun   	;火锅功能 
	jb1	barbecueflag,barbecuefun  	;烧烤功能 
	jb1	cookingflag,cookingfun		;煮饭功能 
	jb1	soupingflag,soupingfun		;煲汤功能
	jb1	warmmilkflag,warmmilkfun	;热奶功能
	jb1	boilwaterflag,boilwaterfun	;煮水功能
;----
function90:
	ret
;**********************************************
;Name	:frieddishfun
;Function:炒菜功能控制
;Input  :
;Output	:
;Register Used:
;**********************************************
frieddishfun:
	b0bts0	tempkeyflag
	jmp	frieddishfun90
	b0bts1	t1mflag
	jmp	frieddishfun90
;------
	b0bts0	changestaflag
	jmp	frieddishfun90
;-----
	bset	changestaflag
	bset	buzzerflag
	bset	loadfrequentflag
	bclr	buzfrequentflag
	mov_	buzzercnt,#1
	mov_	frequentbuf1,#20h
	mov	a,#50
	mov	frequentbuf2,a
	mov	loadfrequent,a
;-----
	bset	parameterflag
	mov_	stepbuf,#8

frieddishfun90:
	ret
;**********************************************
;Name	:chaffydishfun

⌨️ 快捷键说明

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