先のブログ「PIC12F509でLEDを回転点滅させてみた」のソースコードを開示します。
PICの作法はよく分かっていませんので、変なところが有るかも知れません。
見て分かる通り、タイマーを使って配列の中身を出力しているだけです。
50msのタイマー設定なので、1周250msとなります。
では、問題です。
1周500msにするにはどうすれば良いでしょうか?
出来るだけ簡単な方法で実現して下さい。
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にするにはどうすれば良いでしょうか?
出来るだけ簡単な方法で実現して下さい。