ストップウォッチの中にはあるボタンを押すと,時計は動作しているが,表示はボタンを押したときの時刻表示を
ストップウォッチの骨組み
long int time=0; /*時刻(1/100secでカウント)を保存する変数*/
int countup=0; /*時計を動かすか止めるかをコントロールする変数*/
/*動け:1 とまれ:0*/
main()
{
long int time1;
インターバルタイマで10msecごとのタイマ割り込みを設定
:
while(1) {
ch=SCI1_chkgetChar(); /*すぐに戻ってくる*/
if (ch=='A') countup=1;
else if (ch=='B') countup=0;
else if (ch=='C') time=0;
time1=time; /*表示の途中で変数timeが変更されたときの対策*/
SCI1_printf("%4ld.%02ld \r",time1/100,time1%100);
}
}
10msecごとの割り込み関数()
{
time+=countup; /*if (countup==1) time++;と同じ意味*/
割り込みフラッグクリア;
}
SCI1_printf("%4ld.%02ld \r",time1/100,time1%100);
↑
ここの空白はキーボードからA,B,Cを入力した文字が
表示されるのを隠す目的
ラップタイム機能の追加
long int time=0; /*時刻(1/100secでカウント)を保存する変数*/
int countup=0; /*時計を動かすか止めるかをコントロールする変数*/
/*動け:1 とまれ:0*/
int laptimecount=0; /*0でない時,表示のみ止めるカウンタ*/
main()
{
long int time1;
インターバルタイマで10msecごとのタイマ割り込みを設定
:
while(1) {
ch=SCI1_chkgetChar(); /*すぐに戻ってくる*/
if (ch=='A') countup=1;
else if (ch=='B') countup=0;
else if (ch=='C') time=0;
else if (ch=='D') laptimecount=300;
time1=time; /*表示の途中で変数timeが変更されたときの対策*/
if (laptimecount==0) {
SCI1_printf("%4ld.%02ld \r",time1/100,time1%100);
}
}
}
10msecごとの割り込み関数()
{
time+=countup;
if (laptimecount!=0) laptimecount--;
割り込みフラッグクリア;
}