閲覧総計:10693 (本日:1 昨日:1)
PIC16F1827で、XC8でLED(発光ダイオード)の点滅動作を確認した。
【ポイント】
1.出力には16F1XXXシリーズに装備されたLATレジスターを利用した。
↓なぜLATレジスターが必要か?を解りやすく解説したページ
http://homepage3.nifty.com/mitt/pic/pic1320_06.html
2.__delay_ms()は引数に変数が設定できないので、引数に変数が設定できる
arg_delay_ms()関数を定義した。 2014/1/2
/* LEDの点滅 * PIC16F1827 * XC8 v1.20 * LED:RA1,RA2 */ #include <xc.h> #pragma config FOSC = INTOSC, WDTE = OFF, BOREN = OFF, IESO = OFF, FCMEN = OFF #pragma config PLLEN = OFF, STVREN = OFF, LVP = OFF //__delay_us(), __delay_ms()へのクロック情報の設定 #define _XTAL_FREQ 8000000 //PICのクロックをHzで設定(8MHz) //関数のプロトタイプ宣言 void arg_delay_ms(unsigned int x); int main(void) { //使用変数の定義 unsigned int wait = 500; //待ち時間の設定 //PICの初期設定 PORTA = 0b00000000; //PORTAの中身をきれいにする TRISA = 0b00000000; //PORTA全てを0:出力に設定 OSCCON = 0b01110000; //PLL:OFF, 内部クロック8MHzで駆動 ANSELA = 0b00000000; //RA4(AN4)-RA0(AN0)は全て0:デジタルI/Oとする ANSELB = 0b00000000; //RB7(AN6)-RB1(AN11)は全て0:デジタルI/Oとする //メイン処理 LATAbits.LATA2 = 1; //RA2:パワーオンを示すLED点灯 while(1) { LATAbits.LATA1 = 1; //RA1 LED ON arg_delay_ms(wait); //所定時間待つ LATAbits.LATA1 = 0; //RA1 LED OFF arg_delay_ms(wait); //所定時間待つ } } //待ち時間が変数設定できるarg_delay_ms()関数を定義 //(__delay_ms()は引数に変数設定が出来ない為) void arg_delay_ms(unsigned int x) { while(x) { __delay_ms(1); x--; } }
★この情報は役に立ちましたか?