4x4开关面板检测

时间:2011-04-01 22:31:40

标签: assembly microcontroller pic

我正在MPLAB中编程PIC16f877(使用汇编程序)。我有4x4开关面板。我可以接受输入,但我无法检测它来自哪一个开关。 我正在使用portb,第一个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

1 个答案:

答案 0 :(得分:2)

一次驱动一列,扫描行,然后驱动下一列。听起来你正在同时驱动多个列,因此无法确定它是哪个开关,因为同一行变为活动状态。有some sample code here,但您需要将其转换为程序集。备选方案good Microchip app note (AN1081)描述了问题和解决方案,即使您的硬件不同,也可以从中学习。