• 締切済み

pi18でLEDを点灯するプログラム教えてください

プログラムはC言語 ソフトはMPLAB IDEv8.60 コンパイラはMPLAB ICD2です。 picはpic18f2550です。 回路は OSCにセラロック RB7とRB6に抵抗とLED が接続されています。 この条件でLEDを点滅させる簡単なプログラムを教えてください。 本やネットで調べ、取り上げられているプログラムを見ていろいろ試したのですがLEDが光りません。 私ではどうしようもないので、よろしくお願いします。 #include <p18f2550.h> void main (void) { }

みんなの回答

noname#137556
noname#137556
回答No.1

RB7 と RB6 を出力ポートに設定して, 1 または 0 (回路に依る)を出力すれば,とりあえず点灯はするはずです。 まずは,ここまで確認して下さい。 ここがダメなら,レジスタの設定の仕方が悪いか, 回路がおかしい可能性も否定できません。 点滅させるのは,そこの切り分けが出来てから。

関連するQ&A

  • CCSコンパイラにてLED点灯プログラムが作成したい

    タイトルにもあるようにCCSコンパイラにてLED点灯プログラムを作成したいのですが、プログラムが上手く組めません。 ハードウェアとしては、PORT_A0にスイッチを接続。 PORT_B0にLEDを接続。 PICは16F873を使用。 動作は、電源を入れた状態でLEDは消灯している状態。 スイッチを1度押すとLEDは点灯(スイッチはモメンタリーを使用) スイッチを離してもLEDは点灯したまま。 もう一度スイッチを押すとLEDは消灯。 これらの動作を繰り返すプログラムを割り込みを使用せずに作成したいのですが、上手くできません。 void main() 以降の{}の中がわかりませんので、 もし宜しければ、教えてください。 #include <16f873.h> #ZERO_RAM #define setup_adc_ports(NO_ANALOG) #use delay(clock = 20000000) void main() { }

  • PICマイコンでLEDの点滅をC言語で記述法を教えてください

    PICマイコン(PIC16F84A)にLEDを1個接続し点滅だけのプログラムをC言語で記述を書きたいのですが、教えていただけないでしょうか? CCS社のコンパイラを用いた時の記述の書き方を教えていただけないでしょうか? 条件は、 ・電池を繋げるとLEDが点滅、スイッチ素子は用いません。 ・LEDは1秒間隔で点滅し、永遠に点滅 ・LEDは、PICマイコン(PIC16F84A)の9番ピン(RB3に該当)に接続 ・水晶発振子は、10MHzを使用。 ・コンパイラは、CCS社を使用 私が分かる範囲は下記なのですが、これから先の記述方法が分かりません。 #include <16f84a.h> #fuses HS, NOWDT, NOPROTECT #use delay(clock=10000000) #byte port_b=6 main() { この中身の記述方法が分かりません。 教えていただけないでしょうか? } よろしくお願いします。

  • PIC16f88でLEDの点灯をしたいのですが、

    PIC16f88でLEDの点灯をしたいのですが、 9番ピン(RB3)だけLEDが点灯しません。 #include<htc.h> __CONFIG(UNPROTECT & DEBUGEN & MCLRDIS & PWRTEN & WDTDIS & HS); void main() { PORTB = 0xff; TRISB = 0x00; } 上記のプログラムでBポートをすべて出力にしてLEDを光らせているつもりです。 書き込みを行い試してみたところ、6,7,8番は点灯してくれました。 いろいろと調べてみたのですが、PWM設定(CCP1)と関係があるのでしょうか? また何かしらの設定が必要でしたら、教えていただけると助かります。

  • 16F88を用いてLEDの点灯パターンを制御する

    16F88を用いてLEDの点灯パターンを制御するプログラムを作ったのですが、思うように動作してくれません。 電源を入れたときはLEDはすべて消灯しており、スタートのためのスイッチを押すとすべてのLEDが3回点滅するはずなのですが、実際のところ、全てのLEDが点灯しっぱなしになってしまいます。 心当たりはコンフィギュレーションビットの設定が間違っている、PICの出力が間違っている(A/Dが正しく設定されていない)といったことを考えたのですが、結局解決には至りませんでした。 ほぼ同じプログラムを16F84Aにて作ったところ正常に作動したため、PICの移行に伴って不具合が生じてしまったのでしょうか。 どなたかお力をお貸しください。 プログラムはMPLAB v8.85 にて作成しており、コンパイラはHI-TECH ANSI C Compiler で、書き込みにはPICKIT2を用いています。 RB0~7にLEDが接続されており、RA0にスイッチが接続されています。 以下、ソースコードになります。 #define _LEGACY_HEADERS #include <htc.h> #define _XTAL_FREQ 20000000 __CONFIG ( HS & WDTDIS & PWRTDIS & UNPROTECT & MCLREN & BOREN & LVPDIS & DEBUGDIS & IESODIS & FCMDIS); void kaeru(void){ ////////////準備点灯3回////////////// PORTB=0xFF; __delay_ms(500); PORTB=0x00; __delay_ms(500); PORTB=0xFF; __delay_ms(500); PORTB=0x00; __delay_ms(500); PORTB=0xFF; __delay_ms(500); PORTB=0x00; __delay_ms(800); //////////////////////////////////// //スペースの都合で省略しています。 } void main(void) { ANSEL=0b00000000;//16F88のPORTAのA/D変換の無効化 OPTION=0x7F;//PORTBのプルアップ PORTA=0x00;//初期設定 PORTB=0x00;//初期設定 TRISA=0x01;//RA0を入力 TRISB=0x00;//RB0~7を出力 if(RA0==1) kaeru(); }

  • 32×16ドットマトリクスLED拡張表示ユニット

    光らせるためのプログラムがわからないです。 1から作るマトリクスled制御より難しいと聞いてやってみようと思いましたがわかりません。至急プログラムおねがいします 使うpicは16f1937でmplabを使いCでやってるのでコンパイラはhiteck-cを使っています

  • PICのプログラムについて質問です

    使用するPICは16F84Aで、MPLAB IDEv8.88を使ってこのようなプログラムを作りました。 #include"pic.h" static void pic_init(); static void Delay_ms(unsigned char ms); static void Delay_1ms(); void main(){ pic_init(); while(1) { RB0 = 1 ; Delay_ms(250); Delay_ms(250); Delay_ms(250); RB0 = 0 ; Delay_ms(250); Delay_ms(250); Delay_ms(250); } static void pic_init() { // GPIO = 0b00000000; TRISA = 0xFF ; TRISB = 0x00 } static void Delay_ms(unsigned char ms) { unsigned char c; for (c=ms ; c>0 ; c--) { Delay_1ms(); } } static void Delay_1ms() { unsigned int cnt; unsigned int i; cnt = 76; for (i=0 ; i<cnt ; i++) { NOP(); } } ポートB0の出力を0から1にするプログラムなのですが、実行すると Error [314] C:\Users\moriwaki\Desktop\PIC program\step_test2.c; 52.24 ";" expected Error [254] C:\Users\moriwaki\Desktop\PIC program\step_test2.c; 77.0 undefined variable: "pic_init" ********** Build failed! ********** というエラーが出ます。このようなエラーが出る原因を教えて頂けないでしょうか。お願いします。

  • PICのコンフィグレーションワードの書き方

    MPLAB + PICC-Lite + PICkit2 で PIC16F877(20MHz)を使用しようとしています。 今まで、16F627Aを使用していて、今回が初めての16F877です。最初にDポートのLED4つを点滅させるプログラムを実行しようとしました。 最初、ディパッガーでも動かなかったのですが、MPLAB IDEのConfigureメニューのConfiguration BitsをHSに変更したら動きました。 ところがPICkitを外して、16F877単体で動きません。 おそらく、コンフィグレーションワードで、HSを書き込まなければだめらしいということは、わかったのですが、その書き方がわかりません。 現在のソースファイルは以下の通りです。 ----------------------- #include <pic.h> void delay(void) { unsigned char i, j; for (i = 0; i < 254; i++) { for (j = 0; j < 254; j++) { } } } void main(void) { TRISD = 0; unsigned char led = 0x01; do { PORTD = led; if (led == 0x08) { led = 0x01; } else { led <<= 1; } delay(); } while (1); }

  • PICのプログラム

    PIC16F84Aのサンプルプログラムを見ると  MOVWF 01F PORAT B GOTO MAIN でRB0のLEDのみ点灯になってるんですが、自分的にはB'00000001' のほうがわかりやすいと思いこれに変更したのですが上手く出来ません。どういう感じでプログラミングすればいいんでしょうか? RB0からRB7まで1個づつドライブさせたいです。

  • PIC LEDの点滅プログラム

    現在C言語でLEDの点滅プログラムを作成しているのですが なかなかうまくいきません。 LEDの点滅プログラムのソースなど公開しているサイトがありましたら教えてください。 参考にしてプログラムを考えていきたいと思っています。 基本的、シンプルな点滅プログラムを希望します。 PIC16F84Aを使用することを前提に考えています。 よろしくお願いいたします。

  • PICのデバックに関して

    PICのデバックモードで悩んでいます。 デバック環境 ●MPLAB Ver.8.53 ●ICD2 及び PicKit3 で評価 ●CPU PIC18F452、PIC18F45k20、PIC16F688、PIC16F690 のそれぞれのCPUで評価 回路仕様 ●1個のLEDをCPUのポートに接続し、ON/OFFさせるテスト基板を用いて、  それそれのCPUで、テストしました(CPUだけ変えてその他の回路は変更無し)。 ●PIC16F、PIC18Fとも内部クロックを使用しています。 ●CPUの電源は、ICD2 または PicKit3から供給しています。 PIC18Fシリーズでは、C言語やアセンブラで書いたプログラムは、MPLABを用いて、実機デバッグテストが可能なのですが、 同じ内容のプログラム(CONFIG記述のみ変更)で、PIC16F688 またはPIC16F690 を実機デバッグテストすると、 (1)ICD2の場合:ICD0083: Debug: Unable to enter debug mode. Please double click this message for more information. (2)PicKit3の場合:pk3err0040: the target device is not ready for debugging. といったエラーが表示され、デバックモードに入ることが出来ません。 本エラーは、コンフィグの設定、配線の間違い、クロックが入っていない場合等に起こるエラーとありましたが、これではないと考えています。 <確かめたこと> (1)Programモードで、コンパイル、リンクは問題なく実行でき、CPUにプログラムを書き込むことも出来ます。  シュミレーションモードに入ることも出来ます。この点では16Fも18Fも問題がありません。  しかし、実機デバッグモードに入ろうとすると、16F(PIC16F688、PIC16F690)では、入ることができません。  実機デバッグモードでは、コンパイル、リンクはエラー無く実行可能です。「RUN」でスタートを掛けると上記(1)、(2)のエラーメッセージが表示されます。 (2)MPLABのCPUの選択は、各々間違ってはいません。 (3)配線も間違っていませんでした。回路自体にも問題があるとは思えません。 (4)PIC16Fでは、CコンパイラはCCS または Hi-TECHを使用しましたが、結果は同じでした。  CCSでは、 #INCLUDE <16F690.h> #DEVICE ICD=TRUE ;ICD2を使用する場合に、NOP命令を入れる様に記載がありましたが、だめです。  また、  アセンブラで、 #INCLUDE <p16F690.inc> __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF   ORG 0   nop      と入れましたが、だめでした。 コンパイラには無関係(Cやアセンプラの言語に関係がない)で起きているようです。 MPLABの設定で、デバイスの選択以外に、16Fと18Fで設定が異なる部分があるのでしょうか?