« PICのお勉強(21) C言語編 TMR0割り込み | トップページ | PIC16F84Aのテストボード その2 »

2012年6月 9日 (土)

PICのお勉強(22) C言語編 TMR0割り込みでLEDのPWM制御

 TMR0割り込みを使ってLEDをじわーっと点灯させたり消灯させたりのPWM制御をやってみました。ソースはこれ→lesson22.c
 「ブレッドボードではじめる マイコンプログラミング」って本に載ってたソースを参考にしました。この本,初心者向けでオススメです(^^)

/************************************
16F84A  HI-TECH C v.9.83
TIMER0割り込みでPWM制御
************************************/

#define _LEGACY_HEADERS
#include "PIC.h"
#define _XTAL_FREQ 20000000 //20MHz
__CONFIG(HS & WDTDIS & PWRTDIS & UNPROTECT);

static unsigned short int count;
static unsigned short int duty;

static void interrupt warikomi(void)//0.2μs×256=51.2μsごとに割り込み処理
{
T0IF = 0; //TMR0割り込み禁止
if (count < duty)
{
PORTB = 0xFF; //点灯
}
else
{
PORTB = 0x00; //消灯
}

count++;
if (count == 100)
{
count = 0;
}
}

void main(void)
{
unsigned short int i;
TRISB = 0x00;
PORTB = 0x00;
count = 0;
duty = 0;
OPTION = 0x08; //プリスケーラを設定しない
TMR0 = 0x00; //TMR0は0からスタート
T0IE = 1; //TMR0割り込み許可
GIE = 1; //すべての割り込み許可

while (1)
{
for (i = 0; i <= 100; i++)
{
duty = i; //dutyを0から100まで増やす
__delay_ms(10); //10ms待つ
}

for (i = 0; i <= 100; i++)
{
duty = 100-i; //dutyを100から0まで減らす
__delay_ms(10);
}
}
}

| |

« PICのお勉強(21) C言語編 TMR0割り込み | トップページ | PIC16F84Aのテストボード その2 »

PICマイコン」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: PICのお勉強(22) C言語編 TMR0割り込みでLEDのPWM制御:

« PICのお勉強(21) C言語編 TMR0割り込み | トップページ | PIC16F84Aのテストボード その2 »