簡體   English   中英

在 MikroC 中創建 250 毫秒的延遲

[英]create 250ms delay in MikroC

我正在尋找使用 MikroC 創建 250ms 延遲功能。 在下面的代碼中,我不明白第二部分中的 165 是做什么的。

void MSDelay(unsigned int itime);  // this is the prototype
void MSDelay(unsigned int itime)  { 
    unsigned int i;
    unsigned char j;
    for(i=0;i<itime;i++) {
         for(j=0;j<165;j++); }
    }
}

MikroC 提供內置函數Delay_ms用於產生簡單的阻塞軟件延遲。

 Delay_ms(250);

除非您有其他特定限制,否則這應該有效。

您展示的方法有點像黑客。 對於一個特定的時鍾空的一些具體的PIC for 165迭代循環可能需要1ms左右,所以外環簡單地通過運行內部循環計數毫秒itimeitime毫秒。

您不應該使用這樣的方法,因為它高度特定於以特定時鍾速度運行的特定 PIC,並且還取決於編譯器,而不僅僅是優化整個循環。 無論您為哪個 PIC 構建,內置的延遲功能都應該始終做正確的事情。

Mikroc 中已經提供了一個函數,它負責產生毫秒級的延遲,即 delay_ms() ,程序中的嵌套循環什么也不做,但它使微控制器忙碌了幾微秒或幾毫秒,從而防止程序在沒有完成循環,而只是進入循環周期,微控制器只是執行特定指令,如 nop(在匯編中),這些指令需要一些指令周期,需要時間來執行(與 FSOC 成反比),因此不會改變任何東西在程序中,微控制器產生延遲。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM