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

📄 scankey.asm

📁 应用松翰母体写的一款电磁炉
💻 ASM
字号:
/*
;-----
;2x7	
	line0	equ	p5.0
	line1	equ	p5.1
;-----
	row0	equ	p2.0
	row1	equ	p2.1
	row2	equ	p2.2
	row3	equ	p2.3
	row4	equ 	p2.4
	row5	equ	p2.5
	row6	equ	p2.6	
;-----
;loopj=2 loopi=7
*/
;**********************************************
;Name	:mnkey
;Function:
;Input  :loopi,loopj
;Output	:aplcode
;Register Used:var1,var2
;***********************************************
mnkey:
	call	p2input
	mov	a,#11110000b
	or	p4,a
	mov	a,p5
	and	a,#11111100b
	mov	p5,a
	call	delay_10us
	mov	a,p2
	and	a,#01111111b
	xor	a,#01111111b
	b0bts0	fz		;judge have key push or not
	jmp	mnkey80		;no key push
;-----
	b0bts0	keystatflag	;have key push,then delay 30ms~100ms
	jmp	delaytime
	bset	keystatflag
	mov_	Keychat,#3
	jmp	mnkey90
;-----
delaytime:
	b0bts0	getonekeyflag
	jmp	longpushjudge
	mov	a,Keychat
	b0bts1	fz
	jmp	mnkey90
	jmp	checkpushkey
;-----
longpushjudge:
	b0bts1	checktimeflag		;用于长按键的判定
	jmp	mnkey90
	b0bts1	t1sflag
	jmp	mnkey90
	bclr	t1sflag
	bset	keyokflag
	bclr	checktimeflag
	jmp	mnkey90
;-----
;check which key push
checkpushkey:
	bclr	keystatflag
	mov	a,#7
	mov	loopi,a		;
;------
;line0
	mov	a,#11111110b
	mov	var1,a
scanline:
	mov	a,var1
	and	p5,a
	call	delay_10us
	mov	a,p2
	mov	var2,a		;save line value
;----
	mov	a,#2
	mov	loopj,a
;----
loopcheck:
	rrcm	var2
	b0bts1	fc
	jmp	havekeypush
	decms	loopj
	jmp	loopcheck
;-----
	bset	fc
	rlcm	var1
	decms	loopi
	jmp	scanline
	ret
;----------
havekeypush:
	bset	getonekeyflag
	mov	a,loopi
	sub	a,#1
	mov	loopi,a
;----				
	bclr	fc		;aplcode=2x(loopi-1)+loopj
;//	rlcm	loopj
	rlc	loopi		;x2
	mov	aplcode,a
	mov	a,loopj
	add	aplcode,a	
	cmprs	a,#9
	jmp	mnkey70
;-----
	bset	checktimeflag
	mov_	timer1s,#100
	bclr	t1sflag
	ret
;-----
mnkey70:
	bset	keyokflag
	ret
;-----
mnkey80:
	bclr	keyokflag
	bclr	getonekeyflag
;-----
mnkey90:
	bset	line0
	bset	line1
	ret
;*******************************************************
;*******************************************************
;*******************************************************
p2input:
	clr	p2m		;set p2 is input
	mov_	p2ur,#0ffh	;set p2 have pull_up
	jmp	$+1
	jmp	$+1
	ret
;-----------------
p2output:
	mov_	p2m,#0ffh	;set p2 is output
	clr	p2ur		;clr p2 pull_up
	jmp	$+1
	jmp	$+1
	ret

⌨️ 快捷键说明

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