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

📄 display.asm

📁 应用松翰母体写的一款电磁炉
💻 ASM
字号:
;**********************************************
;Name	:mndisplay
;Function:
;Input  :
;Output	:
;Register Used:
;***********************************************
mndisplay:
	b0bts0	stoprunflag
	jmp	mndisplay90	;关机状态下,关闭所有显示
	call	p2output	;如果显示闪动,时间改小(可以用跑一个循环显示一次)
;-------
	mov	a,#11110000b
	or	p4,a
	bset	ptcom5
	bset	ptcom6
	call	delay_10us
;--------------------------------
	b0bts0	com1flag
	jmp	displaycom2
	mov	a,seg1buf
	mov	p2,a
	mov	a,combuf
	and	p4,a
	jmp	mndisplay80
;--------------------------------
displaycom2:
	b0bts0	com2flag
	jmp	displaycom3
	mov	a,seg2buf
	mov	p2,a
	mov	a,combuf
	and	p4,a
	jmp	mndisplay80
;--------------------------------
displaycom3:
	b0bts0	com3flag
	jmp	displaycom4
	mov	a,seg3buf
	mov	p2,a
	mov	a,combuf
	and	p4,a
	jmp	mndisplay80
;--------------------------------
displaycom4:
	b0bts0	com4flag
	jmp	mndisplay90
	mov	a,seg4buf
	mov	p2,a
	mov	a,combuf
	and	p4,a
	mov_	combuf,#11101111b
	ret
;--------------------------------
mndisplay80:
	bset	fc
	rlcm	combuf
;-----	
mndisplay90:
	ret


;**********************************************
;Name	:mntwinkle
;Function:
;Input  :
;Output	:
;Register Used:
;***********************************************
mntwinkle:
	b0bts0	malfunctionflag
	jmp	mntwinkle80
	b0bts1	timecomeflag
	jmp	mntwinkle90
;------
mntwinkle80:
	b0bts1	ledfrequentflag
	jmp	mntwinkle90
;------
	bclr	ledfrequentflag
;-------------------
	b0bts1	frieddishflag
	jmp	mntwinkle10
;---
	notbit	frieddishled
	jmp	mntwinkle90
;--------------------
mntwinkle10:
	b0bts1	chaffydishflag
	jmp	mntwinkle20
;---
	notbit	chaffydishled
	jmp	mntwinkle90
;--------------------
mntwinkle20:
	b0bts1	barbecueflag
	jmp	mntwinkle30
;---
	notbit	barbecueled
	jmp	mntwinkle90
;--------------------
mntwinkle30:
	b0bts1	cookingflag
	jmp	mntwinkle40
;---
	notbit	cookingled
	jmp	mntwinkle90
;--------------------
mntwinkle40:
	b0bts1	soupingflag
	jmp	mntwinkle50
;---
	notbit	soupingled
	jmp	mntwinkle90
;--------------------
mntwinkle50:
	b0bts1	warmmilkflag
	jmp	mntwinkle60
;---
	notbit	warmmilkled
	jmp	mntwinkle90
;--------------------
mntwinkle60:
	b0bts1	boilwaterflag
	jmp	mntwinkle90
;---
	notbit	boilwaterled
	jmp	mntwinkle90
;--------------------
mntwinkle90:
	ret
	
;**********************************************
;Name	:mngetdata
;Function:
;Input  :
;Output	:
;Register Used:temp3
;***********************************************
mngetdata:
	b0bts0	refurbishflag
	jmp	mngetdata70	;刷新显示
;//	b0bts1	operateflag	;只有在使能工作下,进入该程序
;//	jmp	mngetdata90
	b0bts1	timekeyflag
	jmp	mngetdata90
	b0bts1	t1mflag
	jmp	mngetdata90
;----
	bclr	t1mflag		;到计时
;----
	mov	a,timerbuf
	and	a,#0fh
	sub	a,#1
	b0bts0	fc
	jmp	mngetdata60
;----
	mov	a,timerbuf
	sub	a,#10h
	or	a,#09h
	mov	timerbuf,a
	jmp	mngetdata70
;----
mngetdata60:
	decms	timerbuf
	jmp	mngetdata70
	jmp	mngetdata80	;定时到
;----
mngetdata70:
	bclr	refurbishflag
;----
;求得个位值
	b0mov	y,#font_tbl$m
	b0mov	z,#font_tbl$l
	mov	a,timerbuf
	and	a,#0fh
	add	z,a
	mov	a,#0
	adc	y,a
	movc
	mov	seg2buf,a
;----
;求得十位值
	b0mov	y,#font_tbl$m
	b0mov	z,#font_tbl$l
	swap	timerbuf
	and	a,#0fh
	b0bts0	fz
	jmp	hidedisplay
	add	z,a
	mov	a,#0
	adc	y,a
	movc
	mov	seg1buf,a
	ret
;-----
hidedisplay:
	mov_	seg1buf,#0ffh
	ret
;------------------
mngetdata80:
;-----
	b0bts0	firstsettimeflag
	jmp	mngetdata50
	mov_	seg2buf,#0ffh
	bset	timecomeflag
	bclr	timekeyflag
	bclr	ptcout		;close IGBT
	bclr	fpwm1out
	bclr	ftc1enb		;stop t1 count
	ret
;-----
mngetdata50:
	bclr	timekeyflag
	bclr	firstsettimeflag
	bset	timecomeflag
;----
mngetdata90:
	ret
	
/*
;********************************************
;name:conv_hex_bcd
;function:小于10000的十六进制转换BCD码(要作10000以上的加个条件判断)
;input:	hexh,hexl
;output:bcdh,bcdl
;register:
;********************************************
conv_hex_bcd:
	clr	bcdl
	clr	bcdh
gethighnibble:
	mov	a,hexl
	sub	a,#100
	mov	hexl,a
	b0bts1	fc
	jmp	getmidnibble10
;----
highnibbleinc:	
	mov	a,#1
	add	bcdh,a
	mov	a,bcdh
	and	a,#0fh
	sub	a,#0ah
	b0bts1	fc
	jmp	gethighnibble
	mov	a,#06h
	add	bcdh,a
	jmp	gethighnibble
;----
getmidnibble10:
	mov	a,hexh
	sub	a,#1
	mov	hexh,a
	b0bts1	fc
	jmp	getmidnibble00
	jmp	highnibbleinc
;----
getmidnibble00:
	mov	a,#100
	add	hexl,a
getmidnibble:
	mov	a,hexl
	sub	a,#10
	mov	hexl,a
	b0bts1	fc
	jmp	getlownibble00
	incms	bcdl
	nop
	jmp	getmidnibble
;----
getlownibble00:
	add	a,#10
	swapm	bcdl
	or	bcdl,a
	ret
;********************************************
;name:conv_bcd_hex
;function:小于10000的BCD码转换为十六进制
;input:	bcdl,bcdh
;output:hexl,hexh
;register:var3,var4,var5,var6,var7,var8
;********************************************
conv_bcd_hex:
	clr	var3
	clr	var4
	clr	var5
	clr	var6
;----
;x1000
	swap	bcdh
	and	a,#0fh
	mov	var7,a
	mov_	var8,#8	
	mov_	var3,#0e8h
	mov_	var4,#03h
	call	mulsub		;two byte multiply
	mov_	hexl,var5
	mov_	hexh,var6
;----
;x100
	clr	var3
	clr	var4
	clr	var5
	clr	var6
	mov	a,bcdh
	and	a,#0fh
	mov	var7,a
	mov_	var8,#8
	mov	a,#100
	mov	var3,a
	call	mulsub		;two byte multiply
	mov	a,var5
	add	hexl,a
	mov	a,var6
	adc	hexh,a
;----
;x10
	clr	var3
	clr	var4
	clr	var5
	clr	var6
	swap	bcdl
	and	a,#0fh
	mov	var7,a
	mov_	var8,#8	
	mov	a,#10
	mov	var3,a
	call	mulsub		;two byte multiply
	mov	a,var5
	add	hexl,a
	mov	a,var6
	adc	hexh,a
;----
;x1
	mov	a,bcdl
	and	a,#0fh
	add	hexl,a
	mov	a,#0
	adc	hexh,a	
	ret
;**********************************************
;两个BYTE的数相乘
mulsub:
	bclr	fc
	rrcm	var7
	b0bts1	fc
	jmp	deccount
	mov	a,var3
	add	var5,a
	mov	a,var4
	adc	var6,a
;----
deccount:
	decms	var8
	jmp	adjustposition
	ret
;----
adjustposition:	
	bclr	fc
	rlcm	var3
	rlcm	var4
	jmp	mulsub	
*/	

⌨️ 快捷键说明

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