FiFiWiki2

FiFiWikiの第2版

ユーザ用ツール

サイト用ツール


pic

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

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を点滅
 + }
 + }
 +}
 +// ========================== ここまで ==============================
 +```
pic.txt · 最終更新: 2017/11/05 22:30 by fifi