|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
如何計(jì)算軟件延時(shí) |
| 作者:6261666 欄目:單片機(jī) |
為何10ms的編程方式不同呢? while(i=10;i>0;i--) {for(j=0;j<72;j++) {;} } 而這種方式卻不同 for(i=10;i>0,i--) {for(j=0;j<120;j++) {;} } 不解為什么第一個(gè)循環(huán)次是72,第二種卻是120,還有這個(gè)具體的精確的時(shí)間是怎么算出來的?謝謝各位高手 |
| 2樓: | >>參與討論 |
| 作者: 月之暗面 于 2005/5/31 17:05:00 發(fā)布:
最簡單的辦法就是用keil C的模擬運(yùn)行一下 看一下花了多少時(shí)間 |
|
| 3樓: | >>參與討論 |
| 作者: zlgdz 于 2005/6/2 8:41:00 發(fā)布:
樓主怎么知道第一個(gè)運(yùn)行了72次的? 精確的計(jì)算時(shí)間,我想要看編譯后的程序了吧 |
|
| 4樓: | >>參與討論 |
| 作者: lihai813 于 2005/6/4 9:06:00 發(fā)布:
請問可不可以學(xué)C語言而不學(xué)匯編?聽很多人說初學(xué)先學(xué)匯編好點(diǎn),是這樣嗎? |
|
| 5樓: | >>參與討論 |
| 作者: aibxyz 于 2005/6/4 9:35:00 發(fā)布:
可是可以的,但那樣無法深入 |
|
| 6樓: | >>參與討論 |
| 作者: huashi911 于 2005/6/4 15:04:00 發(fā)布:
一般延時(shí)的計(jì)算需要對匯編有一定的了解, 比如你說的 12M 的晶振, 那么每條指令的機(jī)器周期就是1/12M s 然后你自己來計(jì)算需要多少指令就可以延時(shí)10ms(要對每條指令占多長幾個(gè)周期要清楚) |
|
| 7樓: | >>參與討論 |
| 作者: apsbj 于 2005/6/4 17:12:00 發(fā)布:
一般延時(shí)的計(jì)算都是在keil C下反匯編 |
|
| 8樓: | >>參與討論 | |
作者: lihai813 于 2005/6/4 23:54:00 發(fā)布:
無法深入? |
||
| 9樓: | >>參與討論 |
| 作者: 韋爾西 于 2005/7/7 9:58:00 發(fā)布:
還是匯編看的一目了然,呵呵 |
|
| 10樓: | >>參與討論 |
| 作者: ee168 于 2005/7/7 10:18:00 發(fā)布:
你用C語言去要求知道精確的定時(shí),這正是C語言的弱點(diǎn),C語言編譯時(shí)各個(gè)編譯軟件的不同,產(chǎn)生的變量的存儲(chǔ)方法,程序段放在什么地方都影響到定時(shí)的長短.如1樓說的,還不如模擬一下來的快. |
|
| 11樓: | >>參與討論 |
| 作者: huasha2001 于 2005/7/7 15:15:00 發(fā)布:
如果你想自己來進(jìn)行你知道的確定的時(shí)間,可以在C語言程序中插入用匯編編寫的延時(shí)程序,那樣也能做到準(zhǔn)確的定時(shí)。但這種方法沒有模擬來的快 |
|
| 12樓: | >>參與討論 |
| 作者: mirrorok 于 2005/7/9 14:07:00 發(fā)布:
1.用 #PRAGMA ASM 直接嵌入?yún)R編 2.#PRAGMA CODE 在編譯目錄下面會(huì)有一個(gè)LST文件,里面有匯編的代碼,具體運(yùn)行了多少時(shí)間,計(jì)算一下就知道了 |
|
| 13樓: | >>參與討論 | |
作者: jani 于 2005/7/9 14:28:00 發(fā)布:
看它把你這段程序編譯成哪些匯編語句了,然后查算每條語句需要多少執(zhí)行時(shí)間,然后加起來就 |
||
| 14樓: | >>參與討論 |
| 作者: jani 于 2005/7/9 14:30:00 發(fā)布:
用中斷延時(shí)吧,不用去計(jì)算了 |
|
| 15樓: | >>參與討論 |
| 作者: jani 于 2005/7/9 14:31:00 發(fā)布:
哈,有這樣的寫法嗎? while(i=10;i>0;i--) { } |
|
| 16樓: | >>參與討論 |
| 作者: wygzhy 于 2005/7/9 17:26:00 發(fā)布:
哈,有這樣的寫法嗎? while(i=10;i>0;i--) { } 呵呵呵,jani.xu這是人家的自創(chuàng)語法! |
|
| 17樓: | >>參與討論 |
| 作者: mirrorok 于 2005/7/12 17:17:00 發(fā)布:
哈,有這樣的寫法嗎? while(i=10;i>0;i--)==========》if((i=10;i>0;i--) { } |
|
| 18樓: | >>參與討論 |
作者: 慕容帝 于 2005/8/7 11:45:00 發(fā)布:
![]() |
|
| 19樓: | >>參與討論 |
| 作者: 徐正全 于 2005/8/16 21:33:00 發(fā)布:
準(zhǔn)確來說第二條延時(shí)時(shí)間要準(zhǔn)確些.用WHILE時(shí)先要運(yùn)行完下面FOR的再去判斷是否滿足條伯,我算了下,第二個(gè)的誤差大約只有幾US,而條一個(gè)確有幾十US.你自己再多想下咯.不難的! |
|
| 20樓: | >>參與討論 |
| 作者: 威去滴邏 于 2005/8/25 16:35:00 發(fā)布:
還是匯編感覺好些,雖然難點(diǎn)但準(zhǔn)確 |
|
| 21樓: | >>參與討論 |
| 作者: gaoshou 于 2005/8/29 4:44:00 發(fā)布:
好像用I--的不能實(shí)現(xiàn)。我在做延時(shí)的時(shí)候,也用上種方法,不能用,我就改成I++的,就好了 |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |