Quantcast
Channel: JH7UBCブログ
Viewing all articles
Browse latest Browse all 440

PIC16F88 Blink

$
0
0
 今回からPICの品種をPIC16F88に変更して、MPLABX XC8の勉強をしていきます。

 PIC16F88は、発売されてからずいぶん経ちますが、DAコンバータ以外の機能をほとんど持っていて、今でも十分通用する強力なPICです。

 まずは、Lチカをやってみます。

 回路図です。

イメージ 1

 内部クロックを使うことにします。この設定は、まずCONFIGで FOSC = INTOSCIO とします。

 PIC16F88は、内部クロックの周波数を31.25KHz~8MHzの間で設定することができます。

 これを設定するのは、OSCCONレジスタで、bit6-bit4で、111にすると内部クロック8MHzになります。

 それから、PIC16F88は、ディフォルトでRA0~RA4,RB6,RB7はアナログポートに設定されています。

 今回、すべてデジタルポートとしますので、ANSEL = 0x00とします。

 ブレッドボードは、簡単なので省略します。

 プログラムです。CONFIGの項目が多くなります。PWRTE = ONにして他はOFFにしました。
 0.5sec(500ms)ごとにLEDが点滅します。

#include <xc.h>
#include <stdio.h>
#include <stdlib.h>
// CONFIG1
#pragma config FOSC = INTOSCIO  //内部クロック
#pragma config WDTE = OFF
#pragma config PWRTE = ON
#pragma config MCLRE = OFF
#pragma config BOREN = OFF
#pragma config LVP = OFF
#pragma config CPD = OFF
#pragma config WRT = OFF
#pragma config CCPMX = RB0
#pragma config CP = OFF
// CONFIG2
#pragma config FCMEN = OFF
#pragma config IESO = OFF

#define _XTAL_FREQ 8000000

void main() {
    ANSEL = 0x00;           //アナログポートを利用しない
    OSCCON = 0b01110000;    // 内部クロック8MHz
    TRISA = 0b01000000;     // RA5 input 他はoutput
    TRISB = 0b00000000;     // RB0-RB7 output
    PORTA = 0x00;           // PORTA初期化
    PORTB = 0x00;           // PORTB初期化
    while(1){               // 無限ループ
        PORTB = 1;          // LED点灯
        __delay_ms(500);    // 500ms wait
        PORTB = 0;          //LED消灯
        __delay_ms(500);    // 500ms wait
    }
}


Viewing all articles
Browse latest Browse all 440

Trending Articles