コード:
#include <pic.h>
//ライトをオンにする
int lighton(int i)
{
//次のライト信号を生成
i = i * 2 + 0b00000010;
//信号を更新
PORTB = i;
//最新の点灯状況を返す
return i;
}
//ライトをオフにする
int lightoff(int i)
{
//次のライト信号を生成
i = i * 2 ;
//信号を更新
PORTB = i;
//最新の点灯状況を返す
return i;
}
void main(){
//変数初期値
int i = 0b0000000;
//タイマーのオーバーフロー数カウンター
int j = 0;
//PORTBの入出力初期設定
TRISB = 0b11000001;
//OPTION_REGの初期設定
//256倍のプリスケーラー
OPTION = 0b11000111;
//ライト信号の初期値
PORTB = 0b11000001;
//5つ目のライトがついていない限り
while(RB5 == 0)
{
//タイマーカウンターがオーバーフローしたら
if(T0IF == 1)
{
//オーバーフローを1カウント
j++;
//オーバーフローをリセット
T0IF = 0;
}
if(j > 76)
{
//ライトオン関数実行
i = lighton(i);
//タイマーオーバーフローカウンターをリセット
j = 0;
}
}
//5つ目のライトがついている限り
while(RB5 == 1)
{
//タイマーカウンターがオーバーフローしたら
if(T0IF == 1)
{
//オーバーフローを1カウント
j++;
//オーバーフローをリセット
T0IF = 0;
}
//13.1ms×77回=1s秒たったら
if(j > 76)
{
//ライトオフ関数実行
i = lightoff(i);
//タイマーオーバーフローカウンターをリセット
j = 0;
}
}
}