我在MPLAB中编写PIC16f877 (使用汇编)。我有4x4的开关板。我可以接受输入,但我无法检测它来自哪个开关。我正在使用端口B,将第一个RB4设置为RB7输入,将RB0设置为RB3输出,但例如SW0、SW4、SW8、SW12的功能是否相同?我如何才能严格地确定它们??
以下是我的代码的相关部分
...
bsf TRISB,5
bcf TRISB,2
bcf STATUS,RP0
bsf STATUS,RP0
bcf OPTION_REG,7
bcf STATUS,RP0
...
btfs PORTB,5
call button1
goto main
button1:
movlw b'11111111'
movwf PORTD
clrf PORTE
bsf PORTE,2
call delay
return发布于 2011-04-04 20:38:32
一次驱动一列,扫描行,然后驱动下一列。听起来像是同时在驱动多个列,所以无法分辨是哪个开关,因为同一行处于活动状态。有some sample code here,但您需要将其转换为程序集。Alternative a good Microchip app note (AN1081)描述了问题和解决方案,即使您的硬件不同,也可以从中学习。
https://stackoverflow.com/questions/5519561
复制相似问题