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

📄 keyboard.txt

📁 实现PIC16F877的键盘控制液晶显示功能
💻 TXT
字号:
keyscan                           ;RD7~RD4为行线,RB3~RB0为列线
                                  ;有键按下时value为位置码无按下时value为ffh
 bank1                            ;选择体1,使得D和B端口为输入
 bcf option_reg,7                 ;启动B口上拉电阻

 movlw 0fh                        ;D端口的低4位为输入,高4位为输出
 movwf trisd
 movlw 0ffh                       ;B端口全为输入(这一步是为了从RB3~RB0获得列码)
 movwf trisb
 bank0                            ;恢复到体0 
 movlw 00h                        ;4条行线输出全0  
 movwf portd
 nop
 nop
 movf portb,0                     ;读取列线状态
 andlw 0fh                        ;取出B端口的低4位
 movwf value                      ;将其值送到value
 xorlw 0fh                        ;检测是否有按键按下,没有按键则结果为全0
 btfsc status,2                   ;是0就跳过下条指令,说明有键按下
 goto nokey                       ;没按键则调用"没有按键子程序"

 bank1                            
 movlw 0f0h
 movwf trisd                      ;将端口D的高4位设为输入,低4位设为输出
 movlw 0f0h
 movwf trisb                      ;将端口B的高4位设为输入,低4位设为输出
 bank0                            ;(这一步是从获得的列码后进一步行码,最后组合成value的完整码) 
 movf value,0                     
 movwf portb                      ;读取列码,再经过列线(RB3~RB0)输出
 nop                              ;等待输出状态稳定下来
 nop
 movf portd,0                     ;读取行线状态
 andlw 0f0h                       ;只取高4位
 iorwf value,1                    ;组合成完整的按键码送value
 return
nokey                             ;没有按键按下value为0ffh
 movlw 0ffh
 movwf value
 return

⌨️ 快捷键说明

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