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

📄 mykey.asm

📁 基于单片机的键盘扫描程序
💻 ASM
字号:
	org 0000h
	ajmp main
	org 0030h
main:
	mov sp,#50h
	mov r0,#30h
start:
	lcall key
	mov @r0,a
	inc r0
	ljmp start
key:
	mov p1,#0f0h
	mov r7,#0ffh
key1:
	djnz r7,key1
	mov a,p1
	orl a,#0fh		;
	cpl a
	jz key			;
	lcall delay20ms
skey1:
	mov r2,#00h
	mov r3,#00h
	mov r4,#0feh
skey2:
	mov a,r4
	mov p1,a
	nop
	nop
	nop
	mov a,p1
	mov r3,a
	orl a,#0fh  		 ;
	cpl a
	jnz skey3
	inc r2
	mov a,r4
	rl a
	mov r4,a
	mov a,r2
	cjne a,#04h,skey2	 ;
	ljmp key		 ;
ekey:
	ret
skey3:
	mov a,r3
	jnb acc.4,skey5
	jnb acc.5,skey6
	jnb acc.6,skey7
	jnb acc.7,skey8
	ajmp ekey
skey5:
	mov r1,#00h
	ajmp dkey
skey6:
	mov r1,#01h
	ajmp dkey
skey7:
	mov r1,#02h
	ajmp dkey
skey8:
	mov r1,#03h
	ajmp dkey

dkey:
	acall decode
	push acc	;
key2:
	mov p1,#0f0h	;
	mov r7,#0ffh	;
key3:	
	djnz r7,key3	;
key4:
	mov a,p1	;
	orl a,#0fh	;
	cpl a		;
	jnz key4	;
	lcall delay20ms	;
	pop acc		;
	ajmp ekey
decode:
	mov a,r2
	mov b,#04h
	mul ab
	add a,r1
	ret
	
delay20ms:
	mov R7,#14H	;
dl:
	mov R6,#0FFH	;
dl1:
	djnz R6,dl1		;
	djnz R7,dl	;
	ret		;
	end	 

⌨️ 快捷键说明

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