ホームに戻る
 PICのプログラムをCで書く

pickit2 についていた HI-TECH ANSI C Compiler というのを使ってPICのプログラムを書いてみます。
名前関係はヘッダを読めばだいたい予想がつきそうです。
問題は遅延タイマーの書き方と割り込みのかけ方だと思うのでそのあたりがわかるサンプルにしました。

pickit2 のピン接続の覚え書き

pin 1 to pin 4 of pic16f84a
pin 2 to pin 14 of pic16f84a
pin 3 to pin 5 of pic16f84a
pin 4 to pin 13 of pic16f84a
pin 5 to pin 12 of pic16f84a

/*
*  pic16f84a 用のタイマー割り込みと遅延タイマーによるLED点灯プログラム
*   タイマー割り込みは 25ms * 20 = 500ms のタイマー
*   遅延タイマーは 300ms のタイマー
*/

#include <htc.h> // 内部で pic 1684.h を呼んでいます

__CONFIG (HS & WDTDIS & PWRTEN & UNPROTECT);

#define _XTAL_FREQ 10000000 // __delay_ms を使うために振動子が 10MHz であることを教える

int count = 0;

void interrupt timer0_isr(void)
{
  T0IF = 0; // 割り込み解除

  count++;

  if(count == 20){
    RB1 ^= 1;
    count = 0;
  }
}

void delay_100ms(unsigned int time)
{
  time *= 4;
  while(time){
    __delay_ms(25); // 10MHz では78msが限界です
    time--;
  }
}

main()
{
  TRISB = 0x00;
  PORTB = 0xF0;

  OPTION = 0x87;
  TMR0 =12;

  T0IE = 1;
  GIE = 1;

  while(1){
    delay_100ms(3);

    RB0 ^= 1;
  }
}

inserted by FC2 system