2

PICの入力ピンに電圧がかかっているかどうかをチェックするプログラムを書く必要があります。電圧が存在する場合、 のような選択された出力ピンに電圧が与えられますPORTB.RB1=1;。それ以外の場合は、のような他の選択された出力ピンに電圧を与えますPORTC.RC1=1;

出来ますか?私はこれをやろうとしましたが、うまくいきません。

void main() {

    TRISB=0;
    TRISA=1;
    TRISC=0;

    while(1){
        delay_ms(500);
        // PORTB=0;
        if(PORTA==1){
            PORTB.RB1 =1;
        }
        else{
            PORTC.RC1 =1;
        }
    }
}
4

3 に答える 3

0

ハードウェア接続: 入力ポートのビットを 5v 電源とスイッチに配線します。この後、プルダウン抵抗で接続します。

void main(){
TRISB = 1;     //set portB as input       
TRISC = 0;     //set portC as output
while(1){

 if(PORTB.B0 == 0){           //if RB0 == 0 ?
          PORTC.F0 = 1;       //set RC0 = 1 ,(high)
          }else PORTC.F0 = 0; //set RC0 = 0 ,(low)
 if(PORTB.B1 == 0){           //if RB1 == 0 ?
          PORTC.F1 = 1;       //set RC1 = 1 ,(high)
          }else PORTC.F1 = 0; //set RC1 = 0 ,(low)

  //set if else block for numbers of bit as you want.....
       }
}

pic ポート A はアナログ入力のデフォルトであり、このポートをデジタル ポートとして使用する場合は、ADCON レジスタを変更し、データシートに従ってください。

于 2016-07-21T07:32:07.447 に答える
0

他のポート出力をオフにしておらず、PORTA の入力ピンを絶縁していません。ビット 0 の場合、マスクは 1、ビット 1 の場合、マスクは 2 などです。

void main() {

    TRISB=0;
    TRISA=1;
    TRISC=0;

    while(1){
        delay_ms(500);
        if(PORTA & 1){
            PORTB.RB1 =1;
            PORTC.RC1 =0;
        }
        else{
            PORTB.RB1 =0;
            PORTC.RC1 =1;
        }
    }
}
于 2015-03-25T20:11:56.113 に答える
0

PORTA と PORTE はアナログ ポートです。それらをデジタル入力として使用する場合は、PIC がそれらをアナログ入力として使用するのを防ぐ必要があります。ADCON1=0x06; PORTA または PORTE を入力として設定する前に、次の命令を追加する必要があり ます。

このコードは正常に動作します:

void main()
{
    ADCON1=0x06;
    TrisA=1;
    TrisE=1;
    TrisC=0;
    PortC=0;
    while (1)
    {
        if (PortA.B0==1)
            PortC.B0=1;
        else
            PortC.B0=0;

        if (PortA.B1==1)
            PortC.B1=1;
        else
            PortC.B1=0;

        if (PortA.B2==1)
            PortC.B2=1;
        else
            PortC.B2=0;

        if (PortA.B3==1)
            PortC.B3=1;
        else
            PortC.B3=0;

        if (PortA.B5==1)
            PortC.B4=1;
        else
            PortC.B4=0;

        if (PortE.B0==1)
            PortC.B5=1;
        else
            PortC.B5=0;

        if (PortE.B1==1)
            PortC.B6=1;
        else
            PortC.B6=0;

        if (PortE.B2==1)
            PortC.B7=1;
        else
            PortC.B7=0;
    }
}
于 2016-05-03T20:33:13.640 に答える