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

📄 成功-单键1224.txt

📁 用汇编语言实现的PS/2键盘按键通信程序
💻 TXT
字号:
					clock	equ	p3.2
					testclock	equ	p3.4
					todata	equ	p3.1
					testdata	equ	p3.0
					
					
					org 0000h
					ljmp main
					org 0100h
main:		
								
					mov	p0,#0ffh
					;mov	p3,#0ffh
					mov	p2,#0
					;调试程序,直接输出确定数字
					;lcall	delay7ms
					;lcall	delay10ms
					;lcall	delay40us
main3:		
					mov	a,p0
					mov	b,a
					cjne	a,#0ffh,keyhit
					ajmp	main
keyhit:					
					lcall	delay10ms
					mov	p0,#0ffh
					mov	p2,#0
					mov	a,p0
					cjne	a,b,main
					rrc	a
					mov	30h,#0
					jnc	column
					
					ljmp	main
					
column:					
					mov	p0,#0ffh
					mov	p2,#0f7h
					mov	a,p0
					mov	40h,#0
					cjne	a,#0ffh,getset
					
					ljmp	main

getset:					mov	a,40h
					add	a,30h
					mov	dptr,#table
					movc	a,@a+dptr
					mov	60h,a
					mov	50h,a
					mov	r0,50h
					lcall	displaytocomp
					
keyfree:				
					mov	p0,#0ffh
					mov	a,p0
					cjne	a,#0ffh,keyfree
					mov		50h,#0F0h
					mov		r0,50h
					lcall	displaytocomp
					lcall	delay7ms
					mov	a,60h
					mov	50h,a
					mov	r0,50h			
					lcall	displaytocomp
					ljmp	main

displaytocomp:
					jnb	testclock,$
					lcall	delay40us
					jb	testclock,testtodata				
					ljmp	main
					;mov	c,clock
					;jnc	main
testtodata:
					;mov	c,todata
					;jc	sendout
					jb	testdata,sendout
					ljmp	main
sendout:	
					;lcall	delay20us			
					;clr	c
					clr	todata
					lcall	delay20us
					;clr	c
					;mov	clock,c
					clr	clock
					lcall	delay40us
					;setb	c
					;mov	clock,c
					setb	clock
					lcall	delay20us
					;jnb	testclock,main
					;lcall	delay20us					;send start
					mov	r1,#8		;可能需要修改
					mov	a,r0
					clr	c
gogogo:					rrc	a
					mov	todata,c							;send 8 bit data
					lcall	delay20us
					;clr	c
					;mov	clock,c
					clr	clock
					lcall	delay40us
					;setb	c
					;mov	clock,c
					setb	clock
					lcall	delay20us
					;mov	c,clock
					;jc	gonextbit
					;jb	testclock,gonextbit
					;ljmp	main
					
gonextbit:
					djnz	r1,gogogo
					
					mov	a,50h			;odd ?
					mov	c,psw.0
					cpl	c
					mov	todata,c
					lcall	delay20us
					;clr	c
					;mov	clock,c
					clr	clock
					lcall	delay40us
					;setb	c
					;mov	clock,c
					setb	clock
					lcall	delay20us
					;mov	c,clock
					;jc	sendstopbit
					;jb	testclock,sendstopbit
					;ljmp	main
					
sendstopbit:								;send stop bit to ps/2
					;setb	c
					;mov	todata,c
					setb	todata
					lcall	delay20us
					;clr	c
					;mov	clock,c
					clr	clock
					lcall	delay40us
					;setb	c
					;mov	clock,c
					setb	clock
					lcall	delay40us
					lcall	delay20us
					
					ret

delay20us:
					mov	r4,#5
					djnz	r4,$
					ret
delay40us:
					mov	r4,#10
					djnz	r4,$
					ret
delay10ms:                   ;delay 10ms  			
    		 			 MOV R6,#40
D1:      				 MOV R7,#128
D2:					DJNZ R7,D2
    					DJNZ R6,D1
    					RET	
delay7ms:				
					mov	r6,#23
delay7msb:				mov	r7,#128
					djnz	r7,$
					djnz	r6,delay7msb  
					ret
					  			
table:		DB      45H,16H,1EH,26H,25H,2EH,36H,3DH     ;通码表
					DB	3EH,46H,1CH,32H,21H,23H,24H,2BH
    			end

⌨️ 快捷键说明

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