この文書の現在のバージョンと選択したバージョンの差分を表示します。
— |
pic [2017/11/05 22:30] (現在) fifi 作成 |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
+ | |||
+ | |||
+ | ## TMR0 | ||
+ | |||
+ | ``` | ||
+ | // ========================== ここから ============================== | ||
+ | // ファイル名 timer0.c | ||
+ | // 作成日 2009.8.22 | ||
+ | // 更新日 2012.5.12 | ||
+ | // 作成者 mit.ueno | ||
+ | // 機種 PIC16F84A | ||
+ | // CLOCK 20MHz | ||
+ | // コンパイラ MPLAB XC8 | ||
+ | // 概要 | ||
+ | // TMR0のテスト | ||
+ | // PORTBのLEDを500mS間隔で点滅させる | ||
+ | //TMR0割り込み | ||
+ | // 1/20MHz*4*64*256=3.2768mS | ||
+ | // TMR0割込み内で500mSの時間を作る | ||
+ | //I/Oポート | ||
+ | // RB3:LED | ||
+ | // | ||
+ | |||
+ | #include <stdlib.h> | ||
+ | #include <xc.h> | ||
+ | //XC8 __CONFIG(HS & WDTDIS & PWRTEN & UNPROTECT); | ||
+ | __CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & CP_OFF); | ||
+ | |||
+ | static bit T500mS; // 500mS経過フラグ | ||
+ | static unsigned char cnt500mS; // 500mSカウンタ | ||
+ | |||
+ | |||
+ | // =================== 割り込み処理 ==================== | ||
+ | static void interrupt intr(void) { | ||
+ | T0IF = 0; // TMR0割り込みクリア | ||
+ | RB1=!RB1; | ||
+ | cnt500mS--; | ||
+ | if (cnt500mS == 0) { | ||
+ | cnt500mS = 153; // 3.2768mS*153=501mS | ||
+ | T500mS = 1; // 500mSフラグセット | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // ==================== メイン処理 ======================= | ||
+ | main() { | ||
+ | // INIT | ||
+ | PORTB = 0x00; | ||
+ | TRISB = 0x00; // RB3:output | ||
+ | |||
+ | //XC8 OPTION = 0x85; // プリスケーラ:64 | ||
+ | OPTION_REG = 0b10000000; // プリスケーラ:2 | ||
+ | // OPTION_REG = 0b10000001; // プリスケーラ:4 | ||
+ | // OPTION_REG = 0b10000010; // プリスケーラ:8 | ||
+ | // OPTION_REG = 0b10000101; //0x85; // プリスケーラ:64 | ||
+ | |||
+ | TMR0 = 0x00; | ||
+ | T0IE = 1; // TMR0割り込み許可 | ||
+ | GIE = 1; // 全体割り込み許可 | ||
+ | |||
+ | cnt500mS = 153; // 3.2768mS*153=501mS | ||
+ | T500mS = 0; | ||
+ | |||
+ | while(1) { | ||
+ | if (T500mS) { | ||
+ | T500mS = 0; | ||
+ | PORTB ^= 0b0000000001; // RB3のLEDを点滅 | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | // ========================== ここまで ============================== | ||
+ | ``` |