• 締切済み

PICのピン設定について

PORTBの入出力ピンをすべて出力モードにしていて、すべてHighにする命令をしているのですが、RB5ピンだけHighになりません。 どのような原因があるのでしょうか?

みんなの回答

回答No.1

 PICの型番は?  PICと言っても10種や20種ではないのでハッキリしないと アドバイスのしようが無いです。

ka198765
質問者

お礼

コンフィギュレーションビットのLVPがONになってRB5ピンが使えなくなっていました。考えていただいてありがとうございました。

ka198765
質問者

補足

すいません。忘れていました。 PICはPIC18F24K20を使用しています。

関連するQ&A

  • PICマイコンで、ピンが足りません。

    PICでちょっとした電子工作をしています。 18pinのPICを使い、スイッチの組み合わせを適宜変更し出力する回路としてを組んでいます。 PortA(8pinを全て入力/全ピンpullup) PortB(8pinを全て出力) スイッチが1~8まであり、例えば1のスイッチが押された場合、3のスイッチが押されたことにして出力するというような、 スイッチの組み合わせを変更する機能を持たせます。 このスイッチの入出力組み合わせを複数持たせることが今回の目的です。 ロータリースイッチを使い8種類の設定ができる用にするとして、割り当て設定用として新たに3ピンが必要です。 ですが、上記のようにPortAB共に全ピン利用しており、単純に割り当てることが出来ません。 これをどうにかして、利用済みのピンと共存させ18pinで済ませることができないでしょうか。 スイッチの組み合わせは、PIC起動したら変更されることがありません。 ですので、PIC起動時に一度だけロータリースイッチの状態を読めばいいことになります。 なお出力の先につながる回路は、プルアップされたアクティブローの入力端子です。

  • PIC16F819

    PIC16F819のADコンバータを使用しています。 RA0からアナログ信号を入力して、PORTBのそれぞれのピンから1bitずつ(計8bit)のデジタル信号を出力させるためのプログラムを書いてみましたが、まったく動作しません。レジスタの設定なども変えてみましたが動作しませんでした。特にPORTBを全てHighにした場合、なぜかRB6とRB7からの出力を確認することができませんでした。 動作しない原因がまったく分からないので困っています。原因が分かる方がおられましたらご教授お願いします。 #include <pic.h> __CONFIG(DEBUGEN&WDTDIS&LVPDIS&HS&PWRTEN); void init_a2d(void){  ADCON0=0x40;  ADCON1=0x40;  ADON=1; } unsigned char read_a2d(unsigned char channel){  channel&=0x07;  ADCON0&=0xC5;  ADCON0|=(channel<<3);  GODONE=1;  while(GODONE)continue;  return(ADRESH); } void main(void){  unsigned char x1;  init_a2d(); //initialise the A2D module  GIE=0; // we don't want interrupts  TRISB=0x00;     // PORTB will be used in output mode  PORTB=0x00;  x1=read_a2d(1); // sample the analog value on RA0  PORTB=x1; }

  • PIC16F1827

    プログラムの一部ですが、ここだけを見ると TRISB=0x00; RB0=0; RB1=0; RB2=0; RB3=0; PORTB=0b00000001; RB0から1、RB1から0、RB2から0、RB3から0が出力されると考えてもよいのでしょうか お手数おかけしますがよろしくお願いします。

  • PICマイコン 動作せず、教えて下さい。

    PICマイコン初心者です。 PICマイコン(PIC16F877)をHI-TEC社のPICCでコンパイルして、Buildしたものを 焼き込んで電源印可しますが全然動作せず。  出力に設定しているピン(PORTB)の電圧をみると全て3.8Vぐらいになっています。(不定??)  ちなみに出力PinはVdd(5V) => 発光D => 抵抗 => PORTBと接続されています。  どこが悪いか教えて頂きたく。  *** ソース ファイル ****   #include"pic.h"   void main(void){ unsigned long i; TRISA = 0x00; TRISB = 0x00;   while(1){ PORTB = 0b11111111; //RB0をLowに設定 for(i=0;i<20000000;i++); PORTB = 0b11111110; //RB1をLowに設定 for(i=0;i<40000000;i++); PORTB = 0b11111101; //RB2をLowに設定 for(i=0;i<15000000;i++);          }        }

  • PICのピンの割り当て、この記述は正しいのでしょうか?

    現在C言語によるプログラムを勉強しているのですが、わからない箇所が出てきました。 PICのピンの入出力の割り当てをする部分の set_tris_a(0x10); //RA1,RA3を入力,RA0,RA2,RA4を出力に設定している。 という部分です。 調べたところ"0x"という部分は16進表記であるという意味で、その後の部分で格ピンの入出力を表しているようなのですが、"10"の部分は10進法表記ではないかと思うのです。 (16進なら"A"と表記するのが正しいのではないでしょうか) また"0x"は16進表記との事ですが、他に、たとえば10進や2進表記で格ピンの割り当ては可能なのでしょうか?

  • PIC の出力ピン(High) には電流は流れ込まない?

    PIC の出力ピン(High) には電流は流れ込まない? プルアップ抵抗の勉強をしています。出力ピンがLow の時は内部でグラウンド接続となっていて、流れ込み電流がありますよね。 ではHigh の時、プルアップ抵抗により電圧が上がるわけですから、出力ピン側に流れ込むと思うんです。従ってPIC の内部ではHigh の時に逆流しないようにダイオード経由になっている、と考えて差し支えないのでしょうか? そういう説明のされたサイトを見かけないので、誤ってますか?

  • C言語 PICプログラムについて質問です

    さっそく中身を書きます PIC16F84Aのプログラムで RB0,RB1,RB6を出力ポートと宣言し、RB7を入力ポートと宣言しています。 PORTB=0x03; とすると、RB7ポートは変な異なったりしちゃいますか。

  • PICの誤動作についての質問です

    現在PIC18F24K20というPICを使用していて、2つの入力信号に対して、1ビットずつ判定を行いその2つの信号が間違っていればPORTBを+1してカウントしていくというプログラムを作っています。 RC0、RC2から信号を入力しています。Receive0でまずタイミングを合わせて、Receiveで間違っているかの判定を行うというプログラムです。 Receive0 BTFSS PORTC,0 ;RC0がHighなら次の命令をスキップ GOTO Receive0 NOP NOP NOP NOP NOP ;*** 入力信号の解析 Receive BTFSS PORTC,0 ;RC0がHighなら次の命令をスキップ GOTO ZERO BTFSS PORTC,2 ;RC2がHighなら次の命令をスキップ INCF PORTB,F ;PORTBを+1 NOP GOTO Receive ZERO BTFSC PORTC,2 ;RC2がLowなら次の命令をスキップ INCF PORTB,F ;PORTBを+1 NOP GOTO Receive (PORTの設定は省かせてもらっています) プログラムにおかしい点があれば指摘していただければうれしいです。 回路は入力をFPGAから直接RC0、RC2に入力して、PORTBも開放してロジアナで波形を観測しています。 ロジアナで見ると思っているような動作ではなく、PORTBが勝手にHighやLowになってしまっています。どのようなことが問題になっているのでしょうか?

  • PICのプログラミングについて

    PIC16F819のプログラムをC言語で行っています。 PORTAは全てアナログ入力、PORTBは全てディジタル出力に設定しています。 試しにRB0に接続してある振動モータを動かそうと思い、RB0をHighにするだけのプログラムを作ったのですが動作しません。 A/D変換などは二の次で、単純にRB0から5V出力されるプログラムを組みたいだけなんですが、どうすればいいのでしょうか?ぜひご教授よろしくお願いします。 ---抜粋--- /***Sample code to set up the A2D module********/ void init_a2d(void){ ADCON0=0x00; ADCON1=0x00; ADON=1; } /***Return an 8 bit result**********************/ unsigned char read_a2d(unsigned char channel){ channel&=0x07; ADCON0&=0xC5; ADCON0|=(channel<<3); ADCON0|=0x04; while(ADCON0&0x04)continue; return(ADRESH); } /***Main関数*************************************/ void main(void){   TRISB=0x00; RB0=1; }

  • PICによるLED制御について

    大学の講義でPICのLED制御の課題がよくわかりません。 どなたか教えていただけないでしょうか? [問]  PIC16F84Aにおいて、動作を実現するプログラムを示せ。  メインルーチンでLED出力の点燈箇所を1秒ごとに巡回させる。   RA3=Low(OFF)のとき、左向きに巡回シフト(RLF命令)させる。   RA3=High(ON)のとき、右向きに巡回シフト(RRF命令)させる。  また割り込みルーチンによって、RA0~RA2の3ビットの値に応じて  点灯速度を変化させる(値が大きいほど速く)  ただし、ポートAは全て入力モード、ポートBはRB0以外を出力モードとし(RB0は割り込み用)、ポートBの初期出力を0000100*(LED出力の初期点燈位置は第3ビットのみ)とせよ。

専門家に質問してみよう