影片範例跟上一篇差不多,故不另行貼上了。
程式如下 :
#include "reg52.h"
void main(){
int count=0;
int i=0;
unsigned char seg[]={0x01,0x02,0x04,0x08,0x10}; //I/O輸出陣列P1.0~P1.4。
TMOD=0x01; //模式選擇16位元計時器。
TH0=0xB8; //設高低8位(20ms)。
TL0=0x00;
TR0=1; //啟動計時器。
while(1){
if(TF0==1){ //溢位旗標。
TF0=0; //清除旗標。
TH0=0xB8;//重設高低8位。
TL0=0x00;
count++; //溢位1次計數+1。
if(count>=20){//20X20ms=400,400ms執行如下。
count=0; //計數計清除。
P1=~seg[i];//低電位觸發,"i"從0開始每400ms增加。
i++;
if(i>=5){//第5顆燈點亮後"i"清0。
i=0;
}
}
}
}
}
看起來有點複雜,但是不難,整合進計時器功能而已,說是會比較準,我倒沒什麼感覺。
沒有留言:
張貼留言