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);
}
}
}
| 固定リンク | 0
「PICマイコン」カテゴリの記事
- ZK-80で足し算(2020.07.23)
- TK-80互換機 ZK-80のキット(2020.07.21)
- PICのお勉強(37) C言語編 12F683でA/D変換(2015.06.02)
- UVレジンでLEDイルミネーション (2)(2015.05.15)
- PICのお勉強(35) C言語編 PWMでサーボモータを動かす(2014.10.05)
コメント