微控制器C語言中多個延時程式同時使用怎樣編寫? 20

2025-01-31 08:40:27 字數 2188 閱讀 1903

微控制器c語言中多個延時程式同時使用怎樣編寫?

1樓:匿名使用者

延時子函式 直接呼叫就行了 這裡以一毫秒計算 10秒的話你自己算一下 精確計時就用定時器比較好。

void delay(unsigned z)unsigned uint x,y;

for(x=0;xfor(y=0;y<110;y++)

2樓:網友

用定時器,不佔用cpu資源。

微控制器怎麼實現多工延時

3樓:網友

什麼叫「多工延時 」?是不是在延時的時候,其它程式正常執行?如果這樣的話,可以使用定時器中斷實現。

假如定時器每50毫秒中斷一次,你定義乙個全域性變數(c51),在每次執行中斷函式時給它加一,想延時多長時間都可以。

補充:找出四種波半個週期時間的最大公約數,按你給的四個波,最大公約數就是450hz的半個週期時間,即毫秒,將定時器的中斷週期設定為該時間,申明四個全域性變數或靜態變數,初值均為0,每次中斷時四個變數均加一。第乙個變數加到18(20/時讓其變為0,同時輸出25hz方波的微控制器腳反向。

第二個變數其實不用加,每次中斷都讓輸出450hz方波的微控制器腳反向。第三個變數加到315(350/時讓其變為0,同時輸出方波的微控制器腳反向。當第四個變數為0時,讓微控制器腳為高,第四個變數為900(1000/時,讓微控制器腳為低,當它為4500(5000/時,讓其為0,當然,這些變數都必須是整型數。

採用這樣的方法,其它程式正常執行,當然,如果還有其它中斷的話,你必須把定時器中斷的優先順序設為最高。

我不知道你用的是什麼微控制器,所以無法給你寫程式。

微控制器同乙個程式,呼叫兩次不同時間延時函式,除錯發現時間相同

4樓:愽

1:原理:僅僅執行一些,沒有實質性影響的所謂「無意義指令」,比如做比大小啊,做某個int的自加運算啊之類的。

2:兩重for的作用:簡單的說,就像高中數學中的「乘法原理」一樣,這樣可以很輕易的迅速增加上述「無意義指令」的數目。

3:關於取值大小:這個如果是在c下變成,這個值不僅僅與晶振、微控制器本身運算速度有關,而且還與c的編譯器有關,所以說,這個值雖說是可以精確計算的,但大多數情況下,程式設計師用的都是「經驗值」——當然,如果用匯編程式設計,情況就不一樣了,因為每一條指令所使用的機器週期是一定的,你當然可以根據所有指令使用的總時間,精確的算出具體延時的總時間。

綜合你的的問題,我給你一點建議,就是剛學微控制器的時候,還是一定要老老實實的從彙編程式設計學起——這樣,在你以後接觸到c之後,你才能明白,這中間實際上經歷了乙個什麼樣的過程,只有這樣你才能真正理解微控制器。當然,等最終你完全拿下一種微控制器之後,儘量使用c程式設計,無疑是歷史所肯定的。

具體有什麼問題你還可以hi我。

5樓:喔喔

去掉for(;x>0;x--)這一句右括號右邊的;

for(;x>0;x--)

等價於下邊,(;表示一條空語句)

for(;x>0;x--)

for(;x>0;x--)

for(;t>0;t--)

微控制器延時程式怎麼寫?是根據什麼原理寫的?有什麼方法嗎?

6樓:鞠然騰蘊美

1、比較死板的方法是自己寫乙個delay函式,裡面用for,while等做一些迴圈,下面是1ms的延時函式。

voiddelay1ms(void)

unsigned

chari,j;

for(i=0;i<10;i++)

for(j=0;j<33;j++)

具體演算法是//(3j+2)*i=(3×33+2)×10=1010(us),但精確度不高,如果想準確點可以調節相應的引數用示波器來實。

現,上面的函式適用於程式簡單,對時間性要求不高,如:點led燈,單個按鍵操作等等。

2,就是用定時器中斷裡面設定標誌位來產生延時的方法,比如你可以把定時器設定洞扒為每1ms進一次中斷,在中斷裡面。

把乙個標誌位(如flag)置一。

當你需要1ms延時的時候你可以先初始化定時器,然乎顫乎後查詢標誌位是否置一,置一則執行if後面的語句,即if(fla{};

當你需要10ms延時時,你可以把flag設定為uchar,中斷裡面flag++;外面查詢用if(10==flag){}

以此類推,上面的歲悉方法精確度高適用地方。

微控制器C語言程式

define uint unsigned int就是用unit替換unsigned int,unsigned int是c語言關鍵字,unit比較簡單 void delayms uint x 定義乙個函式,無返回值,引數是個 無符號整形的變數叫 x uchar 上面不是定義了unsigned char...

C語言微控制器程式求助

void main 這種方法原理簡單易行,缺點是精度比定時器稍低,注意不要使x y溢位。我們還可以對上面的程式優化 void main 用計數器做!和中斷 中斷設定成 邊沿觸發中斷 在中斷的同時開啟計數器,並判斷是此時高電平還是低電平,然後等到下乙個中斷到來,將計數器的內容另存,然後清空重新計數 這...

微控制器(組合語言)程式,微控制器組合語言

開發當bai然是用c,又快又易懂好維 du護,但是想要優zhi化程式dao還是要懂彙編的,要不然實回現同樣乙個功能答的程式,好的程式設計師可以把程式設計得又短又快,而不做優化的可能會又臭又長,2k以下可以搞定的,你非要搞到4k以上去那最終產品的成本每個至少會相差幾毛到一兩塊錢,而且成本公升高時質量卻...