[問題] 關於8051C語言時間計算??

看板Electronics作者 (wodada)時間11年前 (2012/12/22 21:23), 編輯推噓2(2012)
留言14則, 6人參與, 最新討論串1/1
各位先進,大家好 末學目前正在自學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

12/22 21:35, , 1F
要精確時間請用計時中斷
12/22 21:35, 1F

12/22 21:37, , 2F
DJNZ Rn,addr Decrements reg and jumps if not 0,3 cycle
12/22 21:37, 2F

12/23 02:52, , 3F
我沒看過用C寫Loop來當時間Delay的
12/23 02:52, 3F

12/23 02:53, , 4F
除非你把assembly貼出來 不然沒人敢保證這跑出來的時
12/23 02:53, 4F

12/23 02:53, , 5F
間是多少 更別論你用不同的compiler 不同版本 甚至是
12/23 02:53, 5F

12/23 02:54, , 6F
不同的參數 都有可能造成結果上的差異
12/23 02:54, 6F

12/23 14:16, , 7F
很多人寫C程式都用loop做delay,認真去算的...差很大
12/23 14:16, 7F

12/23 14:18, , 8F
主要差異在所選51的規格,asm code,以及crystal.
12/23 14:18, 8F

12/23 17:22, , 9F
說不定會被compiler直接砍掉?
12/23 17:22, 9F

12/23 17:23, , 10F
反正做這種事的人大概也是用試的試出來的
12/23 17:23, 10F

12/24 01:13, , 11F
剛學51的時候我也是用loop進行delay,因為timer
12/24 01:13, 11F

12/24 01:13, , 12F
的章節在後面的地方,我用的是"例說89S51 C語言"
12/24 01:13, 12F

08/13 19:34, , 13F
剛學51的時候我也是用 https://muxiv.com
08/13 19:34, 13F

09/17 23:28, , 14F
說不定會被compil https://daxiv.com
09/17 23:28, 14F
文章代碼(AID): #1GrRHX0N (Electronics)