2018年5月8日 星期二

8051 (2) 單向跑馬燈。(TIMER版本)

影片範例跟上一篇差不多,故不另行貼上了。

程式如下 :

#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;
}
}
}
}
}

看起來有點複雜,但是不難,整合進計時器功能而已,說是會比較準,我倒沒什麼感覺。

沒有留言:

張貼留言

8051 (6) 紅外線避障模組控制LED七段顯示器。

這篇要做的Project就是感測器測到訊號時,LED七段顯示器會開始計算偵測次數, 到第5次時會讓紅色LED燈發光。 程式如下: #include <reg52.h> unsigned char seg[5]={0xf9,...