// PIC16F84A
// #include <xc.h>
// // // CONFIG // // //
#pragma config FOSC = HS // 高周波発振 セラミック振動子をつかいますよー
#pragma config WDTE = OFF // ウォッチドックタイマはつかいませんよー
#pragma config PWRTE = OFF // パワーアップタイマーはつかいませんよー
#pragma config CP = OFF // こーどプロテクトもしませんよーというおまじない
#define _XTAL_FREQ 10000000 //マイコンが動くクロックを10mhzに設定しますよー
void main(void) {
TRISB = 0; //RBポートをすべて出力としてつかいますよー
PORTB = 0; //とりあえず0を入れてクリアしときますよー
while(1){
//wile(x)はxが1なら永遠{ }でかこんだ処理をくりかえしますよ。
//wile(1)なんで有無を言わさず無限ループ
PORTB = 0b10000000; //RBはRB0-RB7まで8ポートあり、右はしからRB0-RB7とならんでます
//んでまずRB7を出力して
__delay_ms(20); //20msec待ちます
PORTB = 0b01000000; //順番に点灯させていきます。20msec毎にLEDが順番に光る
__delay_ms(20);
PORTB = 0b00100000;
__delay_ms(20);
PORTB = 0b00010000;
__delay_ms(20);
PORTB = 0b00001000;
__delay_ms(20);
PORTB = 0b00000100;
__delay_ms(20);
PORTB = 0b00000010;
__delay_ms(20);
PORTB = 0b00000001;
__delay_ms(20);
PORTB = 0b00000010;
__delay_ms(20);
PORTB = 0b00000100;
__delay_ms(20);
PORTB = 0b00001000;
__delay_ms(20);
PORTB = 0b00010000;
__delay_ms(20);
PORTB = 0b00100000;
__delay_ms(20);
PORTB = 0b01000000;
__delay_ms(20);
PORTB = 0b10000000;
__delay_ms(20);
}
return; //returnはお決まり文法
}
実際にはこんな感じでうごきました。
このあといろいろ点灯スピードや順番を変えて光らせるとすごく楽しい事に気がつきLEDピカピカもかなりおもろい印象をうけました。
これでLEDのかわりにAC電源のスイッチングに使える半導体リレー(SSRとか)なんかを使うと、センサーが反応すればAC電源で稼働する装置を動かせたりと夢が膨らみますね。
まぁあくまで私の目標・夢はACモーターのスピードコントロールを行いミニ人工心肺装置の作成する事です。
次回はサーボモータを動かすです。
乞うご期待。
スポンサードリンク