meideru blog

家電メーカーで働いているmeideruのブログです。主に技術系・ガジェット系の話を書いています。

PICマイコン(12F683)で割り込み処理をやってみた

      2018/10/20

PICマイコン(12F683)で割込み処理をやってみました。

私の備忘録も兼ねてブログに貼っておきたいと思います。

一定周期で割り込み処理を行うプログラムです。

ソースコード

// PIC12F683 Configuration Bit Settings
// 'C' source line config statements
#include <xc.h>

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

// CONFIG
#pragma config FOSC = INTOSCIO  // Oscillator Selection bits (INTOSCIO oscillator: I/O function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN)
#pragma config WDTE = OFF        // Watchdog Timer Enable bit (WDT enabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = ON       // MCLR Pin Function Select bit (MCLR pin function is MCLR)
#pragma config CP = OFF         // Code Protection bit (Program memory code protection is disabled)
#pragma config CPD = OFF        // Data Code Protection bit (Data memory code protection is disabled)
#pragma config BOREN = ON       // Brown Out Detect (BOR enabled)
#pragma config IESO = ON        // Internal External Switchover bit (Internal External Switchover mode is enabled)
#pragma config FCMEN = ON       // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is enabled)

#define _XTAL_FREQ 4000000      // delay_ms(x) のための定義

//割り込み処理
void interrupt ISR(void)
{
    GIE = 0;    //割り込みを拒否する
    
    //TMR0の割り込み処理
    if(T0IF)
    {

    }
    
    T0IF = 0;   //割り込みフラグをリセット
    GIE = 1;    //割り込みを許可
}


void main(void)
{
    //初期設定
    TRISIO = 0b00000000;        //ピンを全て出力に設定
    OSCCON = 0b01100000;        //クロックの設定
    ANSEL = 0b00000000;         //全てのピンをデジタル入出力に設定
    OPTION_REG = 0b00000111;    //オプション設定
    //TMR0の設定
    INTCON = 0b10100000;        //TMR0の割り込みを許可
    
    while(1);
}

 

これで割り込み処理ができました( ^ω^ )

ポイント

関数ISR(void)の中のif(T0IF){}の中に割り込みで処理する内容を記述すれば完成です。

 - 技術系