看板 Electronics 關於我們 聯絡資訊
各位先進,大家好 末學目前正在自學8051,所用的正是12MHz 無意間寫到一段CODE如下: for( x=1; x<=ms; x++ ) { for(y=1;y<=300; y++ ) // =:= 300 x 3 = 1000 us = 1ms ; } 我用keil c裡面的diassembly window 把它變成組語想試者算出時間為何是1ms(註解有標) 但礙於功力太差,無法想出 想請各位前輩告訴我該如何知道秒數的計算,謝謝!! ps:程式的迴圈內容我已經很熟,但時間並不了解 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.40.244
lion21:要精確時間請用計時中斷 12/22 21:35
kdjf:DJNZ Rn,addr Decrements reg and jumps if not 0,3 cycle 12/22 21:37
mosquito520:我沒看過用C寫Loop來當時間Delay的 12/23 02:52
mosquito520:除非你把assembly貼出來 不然沒人敢保證這跑出來的時 12/23 02:53
mosquito520:間是多少 更別論你用不同的compiler 不同版本 甚至是 12/23 02:53
mosquito520:不同的參數 都有可能造成結果上的差異 12/23 02:54
narcissusli:很多人寫C程式都用loop做delay,認真去算的...差很大 12/23 14:16
narcissusli:主要差異在所選51的規格,asm code,以及crystal. 12/23 14:18
kdjf:說不定會被compiler直接砍掉? 12/23 17:22
kdjf:反正做這種事的人大概也是用試的試出來的 12/23 17:23
hongsiangfu:剛學51的時候我也是用loop進行delay,因為timer 12/24 01:13
hongsiangfu:的章節在後面的地方,我用的是"例說89S51 C語言" 12/24 01:13
sneak: 剛學51的時候我也是用 https://muxiv.com 08/13 19:34
sneak: 說不定會被compil https://daxiv.com 09/17 23:28