1樓:匿名使用者
既然想到了用定時器 怎麼不繼續往下想呢 想要時間盡量精確 定時器是首選
2樓:
定時器開總中斷ea=1;
定時器中斷 et0=1或et1=1;
開啟定時器tr0\1=1;
寫定時器中斷函式
3樓:匿名使用者
下面的是我用定時器0做的延時函式,你看看,可以精確到10ms,如果你還想精確,調定時器的初值就可以。最高精度是1ms.
void inittimer0(void) reentrant // initialize t0 for timer 0.01s
// timer0 interrupt
void timer0_isr(void) interrupt 1 // timer0 interrupt
// delay time
void delaytime(int16u sec, int16u msec) reentrant // time delay function
4樓:溫馨鬼腳七
用定時器肯定可以精確地控制時間啊
5樓:哨案亞該
定時器是可以的,,不過要用到至少兩個執行緒才可能比較好
51微控制器c語言中delay函式是怎麼定義和使用的?
6樓:匿名使用者
定義乙個延時xms毫秒的延時函式
void delay(unsigned int xms)// xms代表需要延時的毫秒數
使用:void delay10us(uchar ms)i=[(延時值-1.75)*12/ms-15]/41、在c51中進行精確的延時子程式設計時,盡量不要或少在延時子程式中定義區域性變數,所有的延時子程式中變數通過有參函式傳遞。
2、在延時子程式設計時,採用do…while,結構做迴圈體要比for結構做迴圈體好。
3、在延時子程式設計時,要進行迴圈體巢狀時,採用先內迴圈,再減減比先減減,再內迴圈要好。
7樓:天雲一號
delay函式是一般自己定義的乙個延時函式。
c語言定義延時函式主要通過無意義指令的執行來達到延時的目的。下面給出乙個經典的延時函式。
// 定義乙個延時xms毫秒的延時函式
void delay(unsigned int xms) // xms代表需要延時的毫秒數
8樓:匿名使用者
這是乙個延時函式()
裡的unsigned int a是乙個形參,為int型變數最 大值為32767;{}裡的unsigned int i和()裡的一樣 只是變數的名稱不同,為i;while就是迴圈語句 如果他後面的()裡的量不為零就執行他{}裡的內容,一旦為零就跳出該語句。for(i=0;i<600;i++);就是把i定為零,如果i在for裡小於600就跳到第三步i++(也就是i自增1);然後i=1但他還是小於600,接著就到第三步。。。。599次之後i=600,600就不小於600,這時就跳出for。
while後的()如果為零就跳出while
9樓:匿名使用者
5 51微控制器c語言中delay函式是怎麼定義和使用的?
voiddelay(unsignedinta){unsignedinti;while(--a!=0)
10樓:匿名使用者
c的話其實時間沒有辦法完全定性地計算的
如果非得精確的話只能使用定時器了,或者彙編的也行不過時間要求精度不是很高的話使用下面的**就行了當時使用示波器把時間完全調準的,65536ms範圍內還是比較準的,已經可以滿足通常的要求了:
#include "reg51.h" //標頭檔案包含//巨集定義
#define uint unsigned int#define uchar unsigned charvoid delay(uint ms) // 毫秒級延時(at89c52 @ 11.0592mhz)
//112}}
呼叫方式如下:
delay(400); //開機延時400ms夠詳細了吧?!
11樓:神奇號
假如說執行for(i = 0; i < 600; i++); 要1s,那a決定了執行1s的次數,這個延時就是a秒,懂了嗎?
不過12m晶振的話,大家一般是for(i = 0; i < 114; i++); 執行這句要1ms
12樓:匿名使用者
這是個延遲函式,delay 括號中的表示式是定義的無符號的整形變數,它是形參,你只要知道它是定義乙個變數既可,它的值由main 函式傳遞過來,a的值有了,就進入了while 迴圈。不知你是否學過c語言,如果沒有,就看看while 迴圈。
13樓:匿名使用者
delay後面的()當中的a,是呼叫函式時,傳遞過來的變數,此值越大,延遲的時間就越長。
51微控制器執行一條c語言程式需要多長時間?
14樓:匿名使用者
求乙個51微控制器簡單的中斷c語言程式51微控制器c語言程式51微控制器c語言程式求助!51微控制器,幫忙寫個c語言程式一道51微控制器的c語言程式,關於串列埠通訊的,很簡單.....51微控制器:
程式 51微控制器:c語言 51微控制器:語言 51微控制器:
中斷 51微控制器:手冊51微控制器燒寫程式通常需要哪些軟體?怎樣燒寫?
51微控制器匯程式設計序求教!51微控制器與ds18b20程式51微控制器程式求51微控制器c程式一:要求通過按鍵輸入控制8個流水燈的...
馮子衡�0�22012-3-21 指令週期,和你的晶振有關,然後c語言的內容也是有關係的,不是所有語句都一樣的。不過,都很快。 �0�22012-3-21 那要看你這條語句的步數了,
用彙編解釋這條語句,再查對應會變語句的步數,
關於51微控制器c語言除法的問題
15樓:匿名使用者
需要使用'('和')'來代替'['和']', c語言中用()來確定運算優先順序, 是數學中的表達方式.
標頭檔案是pc機編譯器c/c++裡的標頭檔案, 需要確定51編譯器中是否有此標頭檔案.
/1024其實就是移位操作, 如果變數u的取值範圍足夠大, 可以使用移位操作, 即》10來代替/1024. 像處理器這種東西, 最怕做的是除法, 代價很高, 速度很慢.
另外, 51微控制器是8位處理器, double型和float型的取值範圍是一樣的.
-中國物聯網校企聯盟技術部
16樓:匿名使用者
/1024
用右移演算法,速度會非常快
17樓:匿名使用者
c語言沒有中括號,直接用小括號就行了。
關於51微控制器的中斷問題,51微控制器外部中斷0的問題
優先中斷,就是在執行乙個中斷的時候,又來了乙個中斷 如果新來的中斷,其優先順序高於正在執行的中斷,那麼就會暫停現在的中斷而去執行新來的中斷,等這個新中斷執行完之後再會回去繼續執行剛才那個沒執行完也就是那個被打斷的中斷 如果新來的中斷,其優先順序不如正在執行的中斷的優先順序高,那麼程式會繼續執行這個中...
51微控制器按鍵控制流水燈左移,51微控制器的c語言 左移右移怎麼用?想用來控制流水燈,請幫忙寫個完整的c程式,參考下,埠隨意
按鍵不能用while函式來寫,第八行 if k1 0 按一次執行一次函式內容 開始學習微控制器的同學們寫注意了,在執行程式後,現象不正確的時候,不要首先就找軟體的錯誤,我的經驗是從源頭開始找問題,首先你得確定你的平臺是正確的,你說是按鍵沒效果,先用萬用表測試一下你的引腳的電平,是否被拉低了如果按鍵沒...
關於51微控制器的跑馬燈設定問題,關於51微控制器跑馬燈程式碼的修改。。。
蘇羽奇偶 自己看程式修改一下 include include 延時子程式 void delayms unsigned char ms 主程式 main 穿假鞋打街球 中斷程式void int0 void interrupt0 void int1 void interrupt2 延時程式void de...