この文書の現在のバージョンと選択したバージョンの差分を表示します。
| — |
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を点滅 | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | // ========================== ここまで ============================== | ||
| + | ``` | ||