0

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
4

1 に答える 1

2

一度に 1 列ずつ駆動し、行をスキャンしてから、次の列を駆動します。同時に複数の列を駆動しているように聞こえるので、同じ行がアクティブになるため、どのスイッチかわかりません。ここにいくつかのサンプル コードがありますが、アセンブリに変換する必要があります。別のMicrochip アプリケーション ノート (AN1081)には問題と解決策が記載されており、ハードウェアが異なっていても学ぶことができます。

于 2011-04-04T12:38:31.637 に答える