亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標(biāo)題: 單片機(jī)執(zhí)行C語(yǔ)言時(shí)間計(jì)算 [打印本頁(yè)]

作者: 藍(lán)野    時(shí)間: 2017-9-29 15:32
標(biāo)題: 單片機(jī)執(zhí)行C語(yǔ)言時(shí)間計(jì)算
1T模式,16M赫茲的單片機(jī),在c語(yǔ)言編程做延時(shí)運(yùn)算,使用do while結(jié)構(gòu)void Delay200ms()                //@16MHz{
        unsigned char i, j, k;

        i = 13;
        j = 41;
        k = 198;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}
這個(gè)時(shí)間是怎么推算出來的呀?





作者: luoluoluo136    時(shí)間: 2017-9-29 16:32
根據(jù)運(yùn)行一個(gè)指令的時(shí)間,然后計(jì)算這個(gè)程序運(yùn)行了多少個(gè)指令。如果你用的是STC的單片機(jī)的話,它的那個(gè)下載工具里面有自動(dòng)幫你計(jì)算的工具。
作者: dzbj    時(shí)間: 2017-9-29 19:26
在c下寫這種延時(shí) 設(shè)定好運(yùn)行頻率用c仿真 看經(jīng)過多少時(shí)間 估計(jì)出來的 在c下全c的語(yǔ)句很難精確計(jì)算時(shí)間 不知道c怎么編譯
作者: zl2168    時(shí)間: 2017-9-29 21:48
keil  c中,系統(tǒng)特殊寄存器組“Sys”中有一項(xiàng)“sec”和“states”,可查看程序執(zhí)行時(shí)間和運(yùn)行周期數(shù)。例如,執(zhí)行到延時(shí)子程序時(shí),記錄進(jìn)入該子程序的sec值,然后按過程單步鍵,快速執(zhí)行該子程序完畢,再讀取sec值,兩者之差,即為該子程序執(zhí)行時(shí)間。也可根據(jù)周期數(shù)states與圖2-8中設(shè)置的晶振頻率計(jì)算程序運(yùn)行時(shí)間。以上摘自張志良編著《80C51單片機(jī)實(shí)用教程——基于Keil C和Proteus》高等教育出版社ISBN 978-7-04-044532-9, 用于學(xué)習(xí)51單片機(jī)原理,程序(雙解c和匯編)語(yǔ)句條條有注解,便于閱讀理解,便于自學(xué)。
作者: 藍(lán)野    時(shí)間: 2017-9-29 22:07
luoluoluo136 發(fā)表于 2017-9-29 16:32
根據(jù)運(yùn)行一個(gè)指令的時(shí)間,然后計(jì)算這個(gè)程序運(yùn)行了多少個(gè)指令。如果你用的是STC的單片機(jī)的話,它的那個(gè)下載 ...

“根據(jù)運(yùn)行一個(gè)指令的時(shí)間,然后計(jì)算這個(gè)程序運(yùn)行了多少個(gè)指令。“這個(gè)我能理解;關(guān)鍵是指令語(yǔ)言是相對(duì)匯編而言,而不同結(jié)構(gòu)的C語(yǔ)言反匯編會(huì)有不同的指令語(yǔ)句,那么我的問題就變成了:是否有一種直接的規(guī)則針對(duì)不同的C語(yǔ)言結(jié)構(gòu)對(duì)應(yīng)出相應(yīng)的執(zhí)行時(shí)間?
作者: 藍(lán)野    時(shí)間: 2017-9-29 22:10
luoluoluo136 發(fā)表于 2017-9-29 16:32
根據(jù)運(yùn)行一個(gè)指令的時(shí)間,然后計(jì)算這個(gè)程序運(yùn)行了多少個(gè)指令。如果你用的是STC的單片機(jī)的話,它的那個(gè)下載 ...

還有一個(gè)問題,關(guān)于你的第二個(gè)回答,這是STC芯片。這是一個(gè)已經(jīng)存在的時(shí)間延時(shí)函數(shù),假如我要用此芯片延時(shí)300us,該怎么進(jìn)行修改,就在此模式下,就是說怎么計(jì)算?

作者: 藍(lán)野    時(shí)間: 2017-9-29 22:12
dzbj 發(fā)表于 2017-9-29 19:26
在c下寫這種延時(shí) 設(shè)定好運(yùn)行頻率用c仿真 看經(jīng)過多少時(shí)間 估計(jì)出來的 在c下全c的語(yǔ)句很難精確計(jì)算時(shí)間 不知 ...

這個(gè)其實(shí)在調(diào)試的時(shí)候,可以通過反匯編可以看到執(zhí)行的時(shí)間,關(guān)鍵是怎么設(shè)計(jì)延時(shí),假如我要延時(shí)300us該怎么搞?


作者: yzwzfyz    時(shí)間: 2017-9-30 00:40
簡(jiǎn)單,編譯器生成匯編后,就能看出來了。這樣就可以增刪了。
作者: 愛吃餃子    時(shí)間: 2017-9-30 01:42
有個(gè)調(diào)試的功能  keil  里面     可以看到花了多少時(shí)間
作者: HC6800-ES-V2.0    時(shí)間: 2017-9-30 08:33
這是個(gè)很專業(yè)的問題,我回答不了,但我知道怎么去找答案!
STC的下載軟件,功能是很強(qiáng)大的,其中就有這個(gè)延時(shí)函數(shù)的自動(dòng)生成功能。
在軟件右上角,有很多功能的頁(yè)面,其中就有“軟件延時(shí)計(jì)算器”,我截個(gè)圖,你自己看看。
當(dāng)然,如果你是想自己掌握這個(gè)時(shí)間,那我就幫不了你了。

1.jpg (26.99 KB, 下載次數(shù): 83)

1.jpg

作者: jiajuntao    時(shí)間: 2017-9-30 11:48
反編碼,能夠得到時(shí)間值;
作者: angmall    時(shí)間: 2017-10-1 13:02

  1. void Delay300us()                //@16.000MHz
  2. {
  3.         unsigned char i, j;

  4.         i = 5;
  5.         j = 168;
  6.         do
  7.         {
  8.                 while (--j);
  9.         } while (--i);
  10. }
復(fù)制代碼


  1. DELAY300US:                        ;@16.000MHz
  2.         NOP
  3.         PUSH 30H
  4.         PUSH 31H
  5.         MOV 30H,#4
  6.         MOV 31H,#183
  7. NEXT:
  8.         DJNZ 31H,NEXT
  9.         DJNZ 30H,NEXT
  10.         POP 31H
  11.         POP 30H
  12.         RET
復(fù)制代碼

作者: 924    時(shí)間: 2017-10-10 15:30
void Delay300us()                //@16.000MHz




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1