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

📄 pic单片机键盘电路四例源程序.txt

📁 PIC单片机键盘电路四例源程序
💻 TXT
字号:
中断服务程序清单如下:
		ORG	0004H					;中断入口
			CALL	JPSM					;调用键盘扫描显示处理
			RETFIE							;返回断点
JPSM	BCF			STATUS,5
		CALL		DELAY10MS			;延迟10ms
		MOVLW 	0F0H				;再次判断是否有键按下
		MOVWF		PORTB				;送W内容到PORTB,使PORTB高4位高电平
		MOVLW		B'11110000'			;送0F0H到W寄存器
		ANDWF		PORTB,W			;PORTB内容和0F0H相与,结果送W
		SUBLW		B'11110000'			;W内容和0F0H相减
		BTFSC		STATUS,Z			;由Z标志位判断运算结果是否为0
		RETURN						;结果为0,Z标志位置1,无键按下,返回
		MOVLW		B'11111110'			;有键按下,送B'11111110'到W寄存器
		MOVWF		PORTB				;送W内容到PORTB,以检测第一行
		BTFSS		PORTB,4				;判断0键是否按下
		GOTO		KYE0				;按下,执行键0对应程序
		BTFSS		PORTB,5				;没按下,判断1键是否按下
		GOTO		KYE1				;按下,执行键1对应程序
		BTFSS		PORTB,6				;没按下,判断2键是否按下
		GOTO		KYE2				;按下,执行键2对应程序
		BTFSS		PORTB,7				;没按下,判断3键是否按下
		GOTO		KYE3				;按下,执行键3对应程序
		MOVLW		B'11111101'			;送B'11111101'到W寄存器
		MOVWF		PORTB				;送W内容到PORTB,以检测第二行
		BTFSS		PORTB,4				;判断4键是否按下
		GOTO		KYE4				;按下,执行键4对应程序
		BTFSS		PORTB,5				;没按下,判断5键是否按下
	GOTO		KYE5				;按下,执行键5对应程序
		BTFSS		PORTB,6				;没按下,判断6键是否按下
		GOTO		KYE6				;按下,执行键6对应程序
		BTFSS		PORTB,7				;没按下,判断7键是否按下
		GOTO		KYE7				;按下,执行键7对应程序
		MOVLW		B'11111011'			;送B'11111011'到W寄存器
		MOVWF		PORTB				;送W内容到PORTB,以检测第三行
		BTFSS		PORTB,4				;判断8键是否按下
		GOTO		KYE8				;按下,执行键8对应程序
		BTFSS		PORTB,5				;没按下,判断9键是否按下
		GOTO		KYE9				;按下,执行键9对应程序
		BTFSS		PORTB,6				;没按下,判断10键是否按下
		GOTO		KYE10				;按下,执行键10对应程序
		BTFSS		PORTB,7				;没按下,判断11键是否按下
		GOTO		KYE11				;按下,执行键11对应程序
		MOVLW		B'11110111'			;送B'11110111'到W寄存器
		MOVWF		PORTB				;送W内容到PORTB,以检测第四行
		BTFSS		PORTB,4				;判断12键是否按下
		GOTO		KYE12				;按下,执行键12对应程序
		BTFSS		PORTB,5				;没按下,判断13键是否按下
		GOTO		KYE13				;按下,执行键13对应程序
		BTFSS		PORTB,6				;没按下,判断14键是否按下
		GOTO		KYE14				;按下,执行键14对应程序
		BTFSS		PORTB,7				;没按下,判断15键是否按下
		GOTO		KYE15				;按下,执行键15对应程序
		RETUNR						;都没按下,则返回
KYE0	CALL		SF_KEY				;调用释放子程序
		MOVLW		D’00’				
		MOVWF		PORTD
		RETURN
KYE1	CALL		SF_KEY				;调用释放子程序
		MOVLW		D’01’				
		MOVWF		PORTD
		RETURN
KYE2	.
		.
		.
KYE15	CALL		SF_KEY				;调用释放子程序
		MOVLW		D’15’				
		MOVWF		PORTD
		RETURN
SF_KEY	MOVLW		0F0H				;按键释放送0F0H到W
		MOVWF		PORTB				;B口低4位全为低电平状态
		MOVLW		B'11110000'
		ANDWF		PORTB,W			;屏蔽低4位
		SUBLW		B'11110000'			;与W内容相减
		BTFSC		STATUS,Z			;由Z标志位判B口高4位是否全为1
		GOTO		SF_KEY				;不全为1,键未释放,继续进行判断
		CALL		DELAY10MS			;调用10ms延时
		MOVLW		0F0H				;再判一次
		MOVWF		PORTB				;B口低4位全为低电平状态
		MOVLW		B'11110000'
		ANDWF		PORTB,W			;屏蔽低4位
		SUBLW		B'11110000'			;与W内容相减
		BTFSC		STATUS,Z			;由Z标志位判B口高4位是否全为1
		GOTO		SF_KEY				;刚才是虚假释放,返回继续判断
		RETURN						;键释放,返回
DELAY10MS								;10MS软件延时子程序略去

⌨️ 快捷键说明

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