goo blog サービス終了のお知らせ 

としぶぅ~の「工作部屋」...毎日少しのお勉強

趣味・関心事を書いていこうと思います。

PIC16F88を動かす。。。その2

2012-08-30 23:17:07 | PIC16F88

こんばんわ
としぶぅ~です。

明日で8月も終わりですね・・・今月は疲れた。

本日は昨日の続き。
timer1の設定値の計算および設定値の宣言

まず、基本クロックとTimer1の設定を下記のようにする
クロックの設定
   OSCCON=0x70:クロックをインターナルの8MHzに設定
           (void IoInit(void)にて設定する)
タイマ1の設定
   T1CON=0x00に設定(void Tmr1Init(void)にて設定する)
   T1CKPS=00 : 1:1 Prescale value
   TMR1CS=0 : Internal clock(Fosc/4)

上記の設定を元に、20000回カウントすると10msになるように設定する。
//タイマアップ後のの再設定値を定義
// 20000cycle@(Fsoc=8MHz / 4) == 10ms
// そこからTimer1再設定に要するサイクルを引いたもの
#define WAIT_CYCLE (20000-15)
#define TMR1H_INIT ((unsigned char)(((unsigned short)(65536-WAIT_CYCLE))>>8))
#define TMR1L_INIT ((unsigned char)(((unsigned short)(65536-WAIT_CYCLE))&0x00ff))

結構面倒で、なんでこうやったんだっけって。。。。よく忘れます(笑)

後、トラ技の2009/4に出ていたマクロを宣言
ポートのビットを簡単に扱えるので結構便利なマクロです。

//ビット操作命令のマクロを定義
#define clear_bit( reg, bitNumb ) ((reg) &= ~(1 << (bitNumb))) //指定されたビットをクリア
#define set_bit( reg, bitNumb ) ((reg) |= (1 << (bitNumb))) //指定されたビットをセット
#define test_bit( reg, bitNumb ) ((reg) & (1 << (bitNumb))) //指定されたビットをテスト

これだけ設定して、次はIOのイニシャライズ・・・
その次にTimer1のイニシャライズ・・・・

と行っていきます。


今日はこの辺にしときます。


ちょっと疲れ気味^^;

ではおやすみなさい~