ikkei blog

電子工作やパズルのブログです。主にLEDを使った電子工作をやっています。

「PIC12F509でLEDを回転点滅させてみた」のソースコード

2013年05月23日 21時28分37秒 | PIC
先のブログ「PIC12F509でLEDを回転点滅させてみた」のソースコードを開示します。
PICの作法はよく分かっていませんので、変なところが有るかも知れません。

/*
 * 5 LED rotation
 *
 *  Created: 2013/05/19
 *  Author: ikkei

 sink output
    GP0--LED1
    GP1--LED2
    GP2--LED3
    GP4--LED4
    GP5--LED5

 */

//#include "pic.h" //MPLAB V8
#include <xc.h>

//__CONFIG(UNPROTECT & MCLRDIS & WDTDIS & INTRC); //MPLAB V8
#pragma config OSC = IntRC  // internal RC oscillator
#pragma config WDT = OFF    // WDT disabled
#pragma config CP = OFF     // Code protection off
#pragma config MCLRE = OFF  // GP3/MCLR pin function is digital input


unsigned char led_patt[] = { 0x01, 0x02, 0x04, 0x10, 0x20};
unsigned char pat_cnt;

#define STEP 195  // 256us * 195 = 50ms
#define T_STEP 256 - STEP

int main(void) {
    TRIS = 0x00;
    // wake up disable, pull-up enable, clock source internal, prescaler 1/256
    // internal 4MHz -> 1/4 -> 1/256 -> TM0     256us clock
    OPTION = 0x87; 
    TMR0 = T_STEP;
    pat_cnt = 0;
    while(1){
        if (TMR0 == 0){
            TMR0 = T_STEP;
            GPIO = ~led_patt[pat_cnt];
            pat_cnt++;
            pat_cnt %= 5;
        }
    }
}



見て分かる通り、タイマーを使って配列の中身を出力しているだけです。
50msのタイマー設定なので、1周250msとなります。



では、問題です。
1周500msにするにはどうすれば良いでしょうか?
出来るだけ簡単な方法で実現して下さい。

最新の画像もっと見る

1 コメント

コメント日が  古い順  |   新しい順
いっちゃん簡単に 、ならば (cde)
2013-05-24 06:52:13
STEPを…なんて引っ掛かりませんよw
返信する

コメントを投稿