你的程式如果這樣寫
那你的8051得在原地一直泡茶都不用做事了 @_@
比較好的作法應該是用timer
研究看看吧 :p
※ 引述《CuckooBoy (阿書)》之銘言:
: 各位大大請教一個問題
: 之前學過FPGA,知道除頻器這名詞
: 相同的,學8051使用25MHZ,想除頻到1Hz
: 請問使用for迴圈中的條件(如:cnt 210 2000)
: 有公式可以計算出這些數字嗎?
: 還是每次都要試...
: 像下面是用uision2去計算執行秒數在1.01164280s
: 1.01就可以當它是1秒嗎?
: #include <AT89C51.h>
: void div(int cnt)
: {
: int i,j,k;
: for (i=0;i<cnt;i++)
: for (j=0;j<210;j++)
: for (k=0;k<2000;k++);
: }
寫loop的話
因為loop的開始和結束都需要branch指令
所以你如果想要算出精確的執行時間
從組合語言出發
實際分析一下會執行哪些指令
這樣就可以算出時間和 cnt, 210, 2000 的關係
: void main(void)
: {
: div(1);
: }
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.128.237