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

PIC16F1827 Lチカ

$
0
0
 今回からPIC16F1827について勉強していきます。

 PIC16F1827は、18ピンで、PIC12F1822/40のI/OポートやA/Dコンバータを増やしたようなアーキテクチャを持っています。

 動作を確かめるために、まずはLチカ(LED点滅)をやってみます。

 PIC16F1827は、PIC12F1822同様に最大32MHzで動作させることができます。

 方法は、内部クロックを8MHzとし、PLL=ONとすると8×4=32MHzで動作します。

 LEDは、RB4に接続します。

 回路図です。

イメージ 1

 ブレッドボードです。Vccは、乾電池2本で3Vです。

イメージ 2

 プログラムです。

 0.5秒(500ms)ごとにLEDを点灯、消灯します。

---------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>

/* LEDはRB4に接続 */

// CONFIG1
#pragma config FOSC = INTOSC
#pragma config WDTE = OFF
#pragma config PWRTE = ON
#pragma config MCLRE = OFF
#pragma config CP = OFF
#pragma config CPD = OFF
#pragma config BOREN = ON
#pragma config CLKOUTEN = OFF
#pragma config IESO = OFF
#pragma config FCMEN = OFF

// CONFIG2
#pragma config WRT = OFF
#pragma config PLLEN = ON
#pragma config STVREN = ON
#pragma config BORV = HI
#pragma config LVP = OFF
#define _XTAL_FREQ 32000000   //クロック32MHz

void main() {
    OSCCON = 0b01110000 ;     // 内部クロック8MHz PLL ONで8×4=32MHz
    ANSELA = 0b00000000 ;     // AN0-AN4は使用しない
    ANSELB = 0b00000000 ;     // AN5-AN11は使用しない
    TRISA  = 0b00000000 ;     // PORTAは全て出力(RA5は入力)
    TRISB  = 0b00000000 ;     // PORTBは全て出力
    PORTA  = 0b00000000 ;     // PORTA初期化
    PORTB  = 0b00000000 ;     // PORTB初期化
     // 0.5毎にLEDの点滅を繰り返す
 while(1) {
          RB4 = 1 ;            // LED点灯
          __delay_ms(500) ;    // 0.5sec待つ
          RB4 = 0 ;            // LED消灯
          __delay_ms(500) ;    // 0.5sec待つ
    }
}

 

Viewing all articles
Browse latest Browse all 440

Trending Articles