• 締切済み

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() { この中身の記述方法が分かりません。 教えていただけないでしょうか? } よろしくお願いします。

みんなの回答

  • Interest
  • ベストアンサー率31% (207/659)
回答No.1

電子工作の実験室(http://www.picfun.com/)より。 //////////////////////////////////////////// // This is an example of led control. // Led controled by pararell output. // The interval is about 0.5sec. //////////////////////////////////////////// #device PIC16F84 #use delay(clock=10000000) #byte port_b=6 main() {   set_tris_b(0);     //set all output   while(1){       //endless     port_b=0;     //all led on     delay_ms(500);   //wait 0.5sec     port_b=0xff;    //all led off     delay_ms(500);   } } ///////////////////////////////////////////// http://www.picfun.com/ctechframe.html 大枠の考え方さえ分かれば、後は適当に書き換えていけるでしょ?

関連するQ&A

  • PICマイコン 4つのLEDを点滅させたいのですが

    マイコンのプログラミングはこれから勉強 という所ですが、PICKit3は持っていて、過去に プログラムを作ってもらい、PICに書き込み、 基盤を組んで動作させた事はあります。 本題です。4つのLEDを点滅させたいのですが、 マイコンはPIC10F200で可能だと思います。 ですが、当方やってみたいのが同時点滅でも 順次点灯でもなく、1個1個のLEDの点灯時間を ずらしたいんです。イメージは昔ながらの クリスマスツリーで、バイメタル球の点灯時間が 個体によりばらつきがある、というのをLEDで 再現したいと思ったのですが、PIC10F200で可能 でしょうか? 宜しくお願いします。

  • C言語でプログラミングし、PICマイコンでLEDを制御する

    現在PICを使ってLEDを制御する事を勉強しています。 3つのLEDを3秒間隔で点灯させ、それを無限に繰り返すプログラムを考えてみました。LEDは一つのポートに一つのLEDを割り振るのではなく、ICを使って制御しています。 これを発展させ、待ち時間の3秒間にRA2ポートに入力があるとLEDの点灯をその場所で停止させ、もう一度RA2ポートに入力するとループが再開するといった内容にしようと考えていますが、調べてもどうすればいいのか分かりません、分かる方は教えて頂けないでしょうか # include <16f84a.h> # fuses HS, NOWDT, NOPROTECT # use delay(clock=20000000) int flag, sec, count; main() //main関数の開始宣言 { set_tris_a(0x10); set_tris_b(0x10); #use fast_io(a) //port_aの高速処理を行う設定 #use fast_io(b) //port_bの高速処理を行う設定 while(1){ //無限ループのwhile文の宣言 output_low(PIN_A0); //RA0の出力 output_low(PIN_B5); //RB5の出力 output_low(PIN_B6); //RB6の出力 output_low(PIN_B7); //RB7の出力 //LED1が点灯 delay_ms( 3000 ) ; //3秒待つ   output_high(PIN_A0); //RA0の出力 output_low(PIN_B5); //RB5の出力 output_low(PIN_B6); //RB6の出力 output_low(PIN_B7); //RB7の出力 //LED2が点灯 delat_ms( 3000 ) ; //3秒待つ        output_low(PIN_A0); //RA0の出力 output_high(PIN_B5); //RB5の出力 output_low(PIN_B6); //RB6の出力 output_low(PIN_B7); //RB7の出力 //LED3が点灯 delay_ms( 3000 ) ; //3秒待つ }

  • PIC16F84AのデバイスでC言語を用いて音を出したい

    PIC16F84AデバイスでCCS社のCコンパイラーを用いて音を出したいのですが、C言語の記述が分かりません。 音は、圧電ブザーで、Bポートの1つを使います。 Aポートの1つにスイッチを取り付け、スイッチが入ったら、音を鳴らしたいのですが、C言語で音階が記述できるんでしょうか? 簡単で良いので、C言語で、音を鳴らす記述を教えていただけないでしょうか?

  • c言語でpicにDelay関数を使いたい

    pic16f84a用にLED点滅のソースコードを書きましたがエラー出て前に進めません。 コードは次の様になっています。 (前段略) #use delay(clock=20000000) void main(void) { TRISA = 0x00; PORTA = 0x03; TRISB = 0x00; PORTB = 0x00; while (1) { PORTA = 0x02; Delay_ms(1000); PORTA = 0x01; Delay_(1000); } } コード書き込み中にすでにDelayの箇所が2か所ともエラーの表示になってしまいます。 一応下記の様にdelya箇所をコメント化してビルドと,picに書き込みを行えます、そしてLEDも点滅できます。 while (1) { PORTA = 0x02; //Delay_ms(1000); PORTA = 0x01; //Delay_(1000); } } 参考のコードを正確に書き込みましたがこのような状況でしたので、   #use delay(clock=20000000) は自分が勝手に追加してみましたが結果はやはり同じでした。 何が原因なのでしょうか。 何方か教えて頂けませんか。お願いいたします。 自分の環境は、Windows8 MPLABX IDE2.10  XC8  PIC16F84A pickit3 です。

  • PICマイコンのLED制御

    PICマイコンのLED制御 pic12Fを使って、LEDのPWM制御を行おうと考えていますが、うまくいかないので知恵をおかしください。 それぞれの出力端子に3色のLEDをつけて、順にだんだん明るくなってから、だんだん消灯してゆくプログラムを考えましたが、 最初のLEDが消える前に、2番目のLEDをゆっくり点灯させたいと思っていますが、うまくいきません 少しだけ同時点灯するには、どのような考えをすればいいのでしょうか。だんだん消えていく中で、点灯を始める処理がわかりません。よろしくお願いします。

  • PIC LEDの点滅プログラム

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

  • PICマイコンを使用した赤外線簡易リモコン

    PIC16F84Aを使って作れる赤外線リモコンの回路とプログラムを教えてください。赤外線の送受信部分の処理がよくわかりません。動作としては簡易的な物で十分ですTTLレベル出力で2チャンネルほどコントロールできればいいです。コンパイラはCCS社のCコンパイラです、アセンブラ(MPASM)でも結構です、PICを使用した電子工作の経験はあります。 よろしくお願いします。

  • LEDの点灯(C言語,PIC)

    PICを用いてLEDを点滅させます. #INT_RTCC rtcc_pulse() { counter++; if(counter == t){ counter = 0; LED1_ON(); delay_ms(10); } else{ LED1_OFF(); } この関数のtの値を変調させ,OFFの時間を徐々に増やしていき,それを繰り返したいのですが,やり方がわからず困ってます. tはfor(t=52;t<=152;t+=10)のように増やしていきたいです.

  • PICのCコンパイラーについて

    PICのCコンパイラーでどれを使うかで迷っています。 高価なものでCCS社やmicrochipのものがいいかなと思うんですが、 やはり安く済まそうと思うとmikroCやBoostCがやすいかなって思います。安いにこしたことはないんですが、購入後に不便に感じて、あっちのコンパイラーをにしとけば良かったなどと後悔したくもありません。 実際、ある程度の経験がないとそれぞれの(コンパイラーの)長所と短所が見えてこない気がしましたので、お伺いします。 説明がわかりづらいかもしれませんが、よろしくお願いします。

  • 思い通りに動かせず、困っています

    ZIG100BeeモジュールとPIC12F675を2つずつ使って回路を作ろうとしているのですが、 ZIGBeeがどんなプログラムで動くのか、検索しても全く解りません。 送信側PIC 4ピン→1kΩ抵抗でプルアップ+スイッチ 7ピン→ZIGBeeTxDに接続 6ピン→ZIGBeeRxDに接続 受信側PIC 4ピン→ZIGBeeTxDに接続 5ピン→ZIGBeeRxDに接続 7ピン→LEDアノード側に接続 6ピン→ブザー+側に接続 このような回路で、送信側スイッチを押すと受信側LEDが点灯、ブザーが鳴るようにしたいのです。 送信側プログラム #include<12F675.h> #byte GPIO =0x09 #byte TRISTO =0x85 #byte CMCON = 0x19 #byte ANSEL =0x9F #fuses INTRC_IO,NOWDT,PUT,NOPROTECT,NOMCLR,NOBROWNOUT #use delay(clock=4000000) #use rs232(BAUD=9600,xmit=PIN_A1,rcv=PIN_A0,bits=8) #use fast_io(a) void main() { set_tris_a(0x09); delay_ms(50); while(1){ if(input(PIN_A3)==0x00){ putc(0x00); delay_ms(50); output_A(0x09); } } } 受信側プログラム #include<12f675.h> #byte GPIO =0x05 #byte TRISTO =0x85 #byte CMCON = 0x19 #byte ANSEL = 0x9F #fuses INTRC_IO, NOWDT, PUT, NOPROTECT,NOMCLR,NOBROWNOUT #use delay(clock = 4000000) #use rs232(BAUD = 9600, XMIT = PIN_A2, RCV = PIN_A3,bits = 8) #use fast_io(A) void main() { set_tris_A(0x08); delay_ms(50); while(1) { if(input(PIN_A3)== 0x00) { if(kbhit()) { delay_ms(500); output_high(PIN_A0); delay_ms(500); output_low(PIN_A1); } } } } このようなプログラムにしたのですが、受信側が送信側の操作に反応せず、 電源プラグを挿しただけで動作してしまいました。 すみませんが、誰か解る方がいたら教えてくれませんか?

専門家に質問してみよう