--------------------------------------------------------------------- #include <xc.h> int Count ; // タイマーの割込み発生回数をカウントする変数 int LEDflg ; // LEDのON/OFF状態フラグ // コンフィギュレーション1の設定 #pragma config FOSC = INTOSC // 内部クロックを使用する(INTOSC) #pragma config WDTE = OFF // ウオッチドッグタイマー無し(OFF) #pragma config PWRTE = ON // 電源ONから64ms後にプログラムを開始する(ON) #pragma config MCLRE = OFF // 外部リセット信号は使用せずにデジタル入力(RA5)ピンとする(OFF) #pragma config CP = OFF // プログラムメモリーを保護しない(OFF) #pragma config CPD = OFF // データメモリーを保護しない(OFF) #pragma config BOREN = ON // 電源電圧降下常時監視機能ON(ON) #pragma config CLKOUTEN = OFF // CLKOUTピンをRA6ピンで使用する(OFF) #pragma config IESO = OFF // 外部・内部クロックの切替えでの起動はなし(OFF) #pragma config FCMEN = OFF // 外部クロック監視しない(FCMEN_OFF) // コンフィギュレーション2の設定 #pragma config WRT = OFF // Flashメモリーを保護しない(OFF) #pragma config PLLEN = OFF // 動作クロックを32MHzでは動作させない(OFF) #pragma config STVREN = ON // スタックがオーバフローやアンダーフローしたらリセットをする(ON) #pragma config BORV = HI // 電源電圧降下常時監視電圧(2.5V)設定(HI) #pragma config LVP = OFF // 低電圧プログラミング機能使用しない(OFF) // タイマー割込みの処理 void interrupt InterTimer( void ) { if (TMR2IF == 1) { // タイマー2の割込み発生か? Count++ ; // 割込み発生の回数をカウントする TMR2IF = 0 ; // タイマー2割込フラグをリセット if (Count >= 125) { // 割込みを125回カウントすると約1秒 Count = 0 ; // 1秒毎にLEDのフラグをON/OFFさせる処理 if (LEDflg == 0) LEDflg = 1 ; else LEDflg = 0 ; } } } // メインの処理関数 void main() { OSCCON = 0b01110010 ; // 内部クロックは8MHzとする ANSELA = 0b00000000 ; // AN0-AN4は使用しない全てデジタルI/Oとする ANSELB = 0b00000000 ; // AN5-AN11はAN9のみアナログで使用し他はデジタルI/Oとする TRISA = 0b00000000 ; // ピン(RA)は全て出力に割当てる(RA5は入力のみとなる) TRISB = 0b00000000 ; // ピン(RB)はRB3(AN9)のみ入力で他は出力に割当てる PORTA = 0b00000000 ; // RA出力ピンの初期化(全てLOWにする) PORTB = 0b00000000 ; // RB出力ピンの初期化(全てLOWにする) T2CON = 0b00000111 ; // TMR2プリスケーラ値を64倍、ポストスケーラ値は1:1の設定 PR2 = 249 ; // タイマーのカウント値を設定 TMR2 = 0 ; // タイマー2の初期化 Count = 0 ; // 割込み発生の回数カウンターを0にする TMR2IF = 0 ; // タイマー2割込フラグを0にする TMR2IE = 1 ; // タイマー2割込みを許可する PEIE = 1 ; // 周辺装置割り込み有効 GIE = 1 ; // 全割込み処理を許可する LEDflg = 0 ; // LEDのフラグ状態をOFFとする while(1) { // LEDのフラグ状態ON/OFFによりLEDをON/OFFする処理 if (LEDflg == 0) RB4 = 0 ; // 10番ピンにLOWを出力する(LED OFF) else RB4 = 1 ; // 10番ピンにHIGHを出力する(LED ON) } } ---------------------------------------------------------------------CコンパイルとPIC書き込みを実行して下さい。
ピン番号 | 16 | 15 | 4 | 3 | 2 | 1 | 18 | 17 |
デジタル入出力ビット名 | RA7 | RA6 | RA5 | RA4 | RA3 | RA2 | RA1 | RA0 |
ピン番号 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 |
デジタル入出力ビット名 | RB7 | RB6 | RB5 | RB4 | RB3 | RB2 | RB1 | RB0 |
MPLAB X用に記事変更(*1) 2015/10/07
【きむ茶工房ガレージハウス】
Copyright (C) 2006-2020 Shigehiro Kimura All Rights Reserved.