今回からPICの品種をPIC16F628Aに変更します。
このPICのファミリーは、627A, 628A,648Aの3種類あります。違いは、フラッシュメモリとEEPROMの容量の違いです。
PIC16F628Aは、これまで使っていたPIC16F84(84A)に比べると多くの機能をもっています。その分、CONFIをはじめ、様々な設定が必要になります。
とりあえず、動作確認のために、Lチカをやってみます。
PIC16F628Aは、内臓発振器を持っていますので、外付けのレゾネータを省くことができます。(CONFIGで、FOSC = INTOSCIOにします。)発振周波数は、PCONレジスタの設定で、4MHzと47KHzを選ぶことができます。(ディフォルトは、4MHzですので、今回は、PCON設定はしません)
更に4番ピンは、CONFIGの設定で、入力ピンRA5として使うことができます。(MCLRE = OFF)
RA0~RA3はディフォルトでアナログ入力になっていますので、デジタルIOとして使う場合は、CMCONレジスタを
0x07に設定します。
回路図です。RB0に接続したLEDを0.5secごとに点滅させます。非常に簡単です。
ブレッドボードです。電源は、FT234からとっています。
プログラムです。
#include <xc.h>
#define _XTAL_FREQ 4000000
// CONFIG
#pragma config FOSC = INTOSCIO // Oscillator Selection bits (INTOSC oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled)
#pragma config MCLRE = OFF // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is digital input, MCLR internally tied to VDD)
#pragma config BOREN = OFF // Brown-out Detect Enable bit (BOD disabled)
#pragma config LVP = OFF // Low-Voltage Programming Enable bit (RB4/PGM pin has digital I/O function, HV on MCLR must be used for programming)
#pragma config CPD = OFF // Data EE Memory Code Protection bit (Data memory code protection off)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
#pragma config FOSC = INTOSCIO // Oscillator Selection bits (INTOSC oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled)
#pragma config MCLRE = OFF // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is digital input, MCLR internally tied to VDD)
#pragma config BOREN = OFF // Brown-out Detect Enable bit (BOD disabled)
#pragma config LVP = OFF // Low-Voltage Programming Enable bit (RB4/PGM pin has digital I/O function, HV on MCLR must be used for programming)
#pragma config CPD = OFF // Data EE Memory Code Protection bit (Data memory code protection off)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
void main() {
CMCON = 0x07;//comparators OFF
TRISA = 0b00100000;//RA5は入力他は出力
TRISB = 0x00;//PORTBは全て出力
PORTA = 0x00;//PORTAクリア
PORTB = 0x00;//PORTBクリア
while(1){
RB0 = 1;//
__delay_ms(500);
RB0 = 0;
__delay_ms(500);
}
}