PIC16F628とSDCCの小部屋
疑問その1
フリーのCコンパイラで16F88を動かそう
http://www.welcome.mech.nagasaki-u.ac.jp/gs400e/pic_sdcc/sdcc_start.htm
のページを参考にして、SDCCのコンパイル環境を作ってみました。

//PICの定義ファイルをインクルード
#include <pic/pic16f88.h>
//PICの書き込み設定
int at 0x2007 __config = _WDT_OFF & _PWRTE_OFF & _CP_OFF & _LVP_OFF & _BODEN_OFF;

void main(void)
{
  long i;
  OSCCON = 0x70;  //PIC16F88を8MHzの内部クロックで動作させる。
  TRISA = 0xfe;   //AポートのRA0のみ出力、他を入力に設定
  while( 1 )    //無限ループ
  {
    for( i = 0 ; i < 55555 ; i ++ ); //約0.5秒待つ
    PORTA = 1; //RA0をHighで出力
    for( i = 0 ; i < 55555 ; i ++ ); //約0.5秒待つ
    PORTA = 0; //RA0をLowで出力
  }
}

こんな感じです。16F88のソースです。

うまくコンパイルでき、hexファイルも出来上がっています。
そこで、ノンノさんに教わったHPから以下のようなソースをゲットして
コンパイルすると、

#define __16f628a
#include "pic/pic16f628a.h"
#include "tsmtypes.h"

// Set the __CONFIG word:
// I usually set it to _EXTCLK_OSC&_WDT_OFF&_LVP_OFF&_DATA_CP_OFF&_PWRTE_ON
Uint16 at 0x2007
__CONFIG = _WDT_OFF & _LVP_OFF & _DATA_CP_OFF & _PWRTE_ON;

static unsigned char count;

static void main(void)
{
  #ifdef __16f628a // Only compile this section for PIC16f628a
  CMCON = 0x07; /*
         * Disable comparators. NEEDED FOR NORMAL PORTA
         * BEHAVIOR ON PIC16f628a!
         */
  #endif
  TRISB = 0x00; // Set port B as all outputs
  TRISA = 0x00; // Set port A as all outputs
  count = 0x00; // Start counting at 0
  while(1) // Infinite loop
  {
    PORTA = count; // Display count on PORTA
    PORTB = count; // Display count on PORTB
    count ++; // Increment count
  }
}


まず、_EXTCLK_OSC がエラーになったので、さしあたりConfigから削除してみました。
コンパイルで、エラーが出ています。hexファイルは出来ていません。
idata.o が必要なのでしょうか?なに?えっ?
その後です。
static void main(void)のstaticを取り払ったら、無事コンパイルできました。
でも、PICに書けません。試しに648Aでもトライしました。こちらもコンパイルが通りますが、
はて、ライターでは、ちゃんとLEDも点灯して上手く行ってるぽいのですが。628は多分ライターが
書き込めて無いと思います。88もだめです。
648では、configレジスタの設定が今一で外部OSCの設定でクリスタルをつないで動かん!
と怒っていましたが、気がついてクリスタルの設定にしましたが、動きません。 フリーのCコンパイラでPIC(PIC16F88)を動かそう のHPのとおり、秋月ライターで試してみたいです。ここの田中さんにはメールでアドバイスをいただいているので、こんどこそ動かすぞー。これができれば、SDCCの大御所になれるよう精進したいと思います。がんばってSDCCとPIC14系のサポートサイトでも立ち上げたいです。
まずは、明日の朝から行動開始ということで、寝ます。


その後、LEDちかちかはちゃんと動作するようになりましたが、LCDではまり、
SDCCはこの段階であきらめました。大御所なんてとんでもないことを書いてしまいました。
次は、ソースブーストのCコンパイラにします。1,200円で購入できます。(千石電商の2階)