Обнаружение 4x4 панели переключателей - PullRequest
0 голосов
/ 02 апреля 2011

Я программирую PIC16f877 в MPLAB (используя сборку).У меня 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 Ответ

2 голосов
/ 04 апреля 2011

Управляйте одним столбцом за раз, сканируйте строки, затем управляйте следующим столбцом.Звучит так, будто вы ведете несколько столбцов одновременно, поэтому не можете определить, какой это переключатель, потому что активна одна и та же строка.Здесь есть пример кода , но вам нужно преобразовать его в сборку.Альтернатива Хорошая заметка о приложении Microchip (AN1081) описывает проблему и решение, из которой вы можете узнать, даже если ваше оборудование отличается.

...