0

マイクロチップ v8.63 と c コンパイラを搭載した picdem 18F4550 を使用しています。私が使用しているコンポーネントは次のとおりです。 - 3 つの LED (赤、緑、青)。- LDR (327700 NORPS-12 ファーネル)。

出力として RB4、RB5、RB6 に 3 つの LED (赤、緑、青) を接続しました。また、RB1 に LDR を接続します。

私の質問は、別の LED の緑色が点灯したときに、LDR が測定するコード内の値を取得するにはどうすればよいですか?

私は自分のコードを含めました:

#include "p18cxxx.h"
#pragma config WDT = OFF 

void main(void) 
{ 
    // turn off all LED latches 
    LATDbits.LATD0 = 0; 
    LATDbits.LATD1 = 0; 
    LATDbits.LATD2 = 0; 
    // make port d bits which drive LEDs outputs 
    TRISDbits.TRISD0 = 0; 
    TRISDbits.TRISD1 = 0; 
    TRISDbits.TRISD2 = 0;

    TRISB = 0;
    // RB port output.
    PORTB = 0;
    PORTB = 0b10001111; // 0b01011010

    if(PORTBbits.RB4 == 0) {
        LATDbits.LATD0 = 1;     
    }
    if(PORTBbits.RB5 == 0) {
        LATDbits.LATD1 = 1;
    }
    if(PORTBbits.RB6 == 0) {
        LATDbits.LATD2 = 1;
    }   
    if(PORTBbits.RB1 == 1) {

    }
    while(1) {
        ;
    }   
}
4

1 に答える 1

0

LDR を GPIO として構成されたピンに接続していると仮定します。GPIO ピンの電圧しきい値が適用されます。ピンで読み取られる値は、論理ローと論理ハイの両方を生成するのに十分な幅でスイングする LDR の抵抗に依存します。ほとんどの場合、LDR を GPIO の代わりに PIC A/D ピンに接続します。ADCON を使用して A/D を構成します。A/D を変換用にセットアップし、A/D 完了割り込みを待ちます。次に、LDR のアナログ電圧を生成する ADRESH と ADRESL を読み取ります。

于 2011-07-26T00:41:27.150 に答える