微控制器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以上去那最終產品的成本每個至少會相差幾毛到一兩塊錢,而且成本公升高時質量卻...