線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1032
推到 Plurk!
推到 Facebook!

關於Delay問題

答題得分者是:
mihopaul
一般會員


發表:25
回覆:59
積分:16
註冊:2002-03-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-02 15:09:48 IP:61.230.xxx.xxx 未訂閱
請問各位大大    如何寫一個可以不在乎8051本身時脈的Dealy常式或是比較精確的Delay??    我看別人的DealyMs是這樣子寫的,請問當使用標準12Mhz時?? DELAY_TICKS大約會是多少?? 謝謝    
void DelayMs(uchar ticks)
{
    uchar count;        while(ticks--)
    {
        for(count = 0; count <= DELAY_TICKS; count  )
        {            }
    }
}
Sorry,原文是有排好的,我不知貼上會變不見^^""" 發表人 - mihopaul 於 2005/08/02 18:56:57 發表人 - mihopaul 於 2005/08/02 18:57:46

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-02 18:46:01 IP:211.22.xxx.xxx 未訂閱
PO程式碼請縮排~~不知如何做請參考版規. 煩請修改配合~謝謝!
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-02 23:13:01 IP:220.134.xxx.xxx 未訂閱
Delay一定會受51本身時脈影響~~因為你執行每一指令的速度都取決於OSC的時脈.計時器也是.較精準的寫法就是用timer. 你所謂的DELAY_TICKS是指啥?沒看到你任何定義.你是指這個變數的值嗎?
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
mihopaul
一般會員


發表:25
回覆:59
積分:16
註冊:2002-03-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-08-02 23:30:52 IP:61.230.xxx.xxx 未訂閱
主要是問看看是否有人寫過像 Delay(clock,ms)這樣子的常式, 嗯,因為Delay我想是8051程式常常要寫的常式,應該有人會寫出來才對 用C語言比較難控制,選了最佳化或是某個選項改變,執行時間就會差很多 有人有c版本的DelayMs的常式嗎?? 如果不行,只好用組語來寫了。 是的,我是問像這樣子的條件下,DELAY_TICKS會是設為多少才能成立要Delay的情況。 謝謝

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-08-03 00:14:41 IP:220.134.xxx.xxx 未訂閱
delay最簡單的就是
void Delay(int i)
{ 
  while(i--);
}
Delay(1000); =>這樣就可以呼叫了.至於會delay多久, C模擬一下就知道了.OSC設對不會差太多.想用組語寫也行. "像這樣子的條件下,DELAY_TICKS會是設為多少才能成立要Delay的情況" 這要看你要delay多久ㄚ,還是那句話模擬一下就知道了.現在C都有附模擬工具了.甚至你可以看到他轉為組語後的code.
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
阿信
版主


發表:111
回覆:983
積分:813
註冊:2005-03-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-08-03 09:07:01 IP:61.66.xxx.xxx 未訂閱
>主要是問看看是否有人寫過像 Delay(clock,ms)這樣子的常式 你的第一篇的程式就是答案了 問題在DELAY_TICKS值的設定
        for(count = 0; count <= DELAY_TICKS; count  )
應要4道組語指令 花上5個指令週期 12MHz 一個週期1uS 要Delay 1mS DELAY_TICKS應為200
系統時間:2024-05-18 8:26:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!