Hitech C
Hitech Cでサンプルソース
http://sky.geocities.jp/home_iwamoto/picc_02.htm
http://physics.cocolog-nifty.com/weblog/2012/07/post-9765.html
Hitech Cでのコンフィグの説明
http://sky.geocities.jp/home_iwamoto/picc_03.htm
バージョンによってコンフィグの表記が変わるとか。
http://homepage3.nifty.com/mitt/pic/picc/piccix.html
C:\Program Files\HI-TECH Software\PICC\9.83\include
のヘッダーファイル調べてみたら
pic.hで__config()マクロが定義してあって定数はpic16f84a.hで定義してあった。
pic16f84aでつかうのはこれ
// Config Register: CONFIG #define CONFIG 0x2007 // Oscillator Selection bits // RC oscillator #define FOSC_EXTRC 0xFFFF // HS oscillator #define FOSC_HS 0xFFFE // XT oscillator #define FOSC_XT 0xFFFD // LP oscillator #define FOSC_LP 0xFFFC // Watchdog Timer // WDT enabled #define WDTE_ON 0xFFFF // WDT disabled #define WDTE_OFF 0xFFFB // Power-up Timer Enable bit // Power-up Timer is disabled #define PWRTE_OFF 0xFFFF // Power-up Timer is enabled #define PWRTE_ON 0xFFF7 // Code Protection bit // Code protection disabled #define CP_OFF 0xFFFF // All program memory is code protected #define CP_ON 0xC00F
セラロックを使用したいので「FOSC_HS」を使用
http://www.picfun.com/pic20.html
Watchdogは使わないので「WDTE_OFF」
コードプロテクトもしないので「CP_OFF」
Power-up Timerは使うので「PWRTE_ON」
以下の設定になった
#include "pic.h" __CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & CP_OFF);
pic16f84aで組んでみたソースがこれ。ポートを2本モニターして他のポートを動かしリレーを制御する。標準ロジックでも組めるけど。
/***************************************************************** xx-xxx xxxxxxx 電流切替回路 xxxxxxx 追加回路用 DATE VER NAME COMMENT 2012/10/22 V0.00 XXXXXX 新規作成 *****************************************************************/ #include "pic.h" __CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & CP_OFF); int main(void) { unsigned char a; PORTB = 0; TRISB=0b00000011; // PORTB IO 0,1BITを入力、他をを出力に設定 while(1) { a = PORTB & 0b00000011; switch(a){ case 0: //Relay ALL OFF PORTB = 0b00000000; break; case 1: //RB4:1 RB5:0 RB6:0 PORTB = 0b00010000; break; case 2: //RB4:1 RB5:1 RB6:0 PORTB = 0b00110000; break; case 3: //RB4:0 RB5:0 RB6:1 PORTB = 0b01000000; break; } } }