JH7UBCブログ

アマチュア無線 電子工作 家庭菜園など趣味のブログです

PIC16F1705 LED点滅

2019-04-04 14:12:10 | PIC16F1705

 PIC16F1705の勉強を始めます。このPICは、これまで勉強してきたPIC16F1827などよりアナログ機能などが強化されたPICです。

 具体的には、従来のPICの機能に加えて、OPアンプを2個内蔵しているほかゼロクロス検出機能やCLC機能(Configurable Logic Cell ),COG機能(Complementary Output Generator )などを有するコンパクトな14Pパッケージの新時代のPICです。

 「きむ茶工房ガレージハウス」というサイトに詳しい説明があり、たいへん参考になります。

 では、PICの新品種の時に行うLED点滅(Lチカ)から始めます。

 なお、こちらの環境は、MPLAB X v5.05 , XC8 v2.00(またはv1.45) プログラマは、PICkit3 です。

 回路図です。電源は乾電池(3V)とし、RC3にLEDを接続します。

ブレッドボードです。

プログラムです。

クロックは、内部クロック8MHzとしました。

-------------------------------------------------------------

/*
 * File:   main.c
 * Author: JH7UBC Keiji Hata
 * PIC16F1705 LED Blink
 * Created on 2019/04/03
 */
 
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
 
// CONFIG1
#pragma config FOSC = INTOSC    //内部クロックを使う
#pragma config WDTE = OFF       //ウォッチドックタイマー無効
#pragma config PWRTE = ON       //パワーアップタイマーを有効にする
#pragma config MCLRE = OFF      //MCLRピンをRA3として使用する
#pragma config CP = OFF         //プログラムメモリを保護しない
#pragma config BOREN = ON       //ブラウンアウトリセットを有効にする
#pragma config CLKOUTEN = OFF   //クロック出力を無効とし、RA4ピンとして使用する
#pragma config IESO = OFF       //内部・外部クロックの切り替えでの起動を行わない
#pragma config FCMEN = OFF      //外部クロックを監視しない
 
// CONFIG2
#pragma config WRT = OFF        //フラッシュメモリを保護しない
#pragma config PPS1WAY = OFF    //ロック解除シーケンスで何度でもPPSLOCKをセット/クリアできる
#pragma config ZCDDIS = ON      //ゼロクロス検出回路無効
#pragma config PLLEN = OFF      //×4PLLを動作させない
#pragma config STVREN = ON      //スタックオーバーフローリセットを行う
#pragma config BORV = HI        //ブラウンアウトリセット電圧を高(2.7V)に設定
#pragma config LPBOR = OFF      //低消費電力ブラウンアウトリセット無効
#pragma config LVP = OFF        //低電圧プログラミングを行わない
 
#define _XTAL_FREQ 8000000

void main() {
    OSCCON = 0b01110010 ;     // 内部クロック8MHz
    ANSELA = 0b00000000 ;     // AN0-AN3は使用しない
    ANSELC = 0b00000000 ;     // AN4-AN6は使用しない
    TRISA  = 0b00000000 ;     // PORTAは全て出力
    TRISC  = 0b00000000 ;     // PORTCは全て出力
    PORTA  = 0b00000000 ;     // PORTA初期化
    PORTC  = 0b00000000 ;     // PORTC初期化

    while(1){
        RC3 = 1;    //LED ON
        __delay_ms(500);
        RC3 = 0;    //LED OFF
        __delay_ms(500);
    }
}
 
---------------------------------------------------------------

クロックを最高速の32MHzで動作させるためには、

OSCCON = 0b01110000 ; として

CONFIG2で PLLEN = ON として×4PLLを有効にします。

更に、#define _XTAL_FREQ = 32000000  とします。


最新の画像もっと見る

コメントを投稿