Ⅰ 怎麼理解這個單片機延遲函數
這個單片機延遲函數,其實就是 空操作 加 計數循環,至於延時時間 就要看用的單片機 指令周期而定,12T指令周期的約40uS左右,1T指令周期的約為5~6uS吧,單片機延遲函數可以有很多方法編寫,看行程需要而定,有得較長時間的延時最好不要用延時函數寫(因為延時函數是佔用CPU時間資源的)。
Ⅱ 51單片機C語言中delay函數是怎麼定義和使用的
定義一個延時xms毫秒的延時函數
void delay(unsigned int xms) // xms代表需要延時的毫秒數
{
unsigned int x,y;
for(x=xms;x》0;x--)
for(y=110;y》0;y--);
}
使用:
void Delay10us(uchar Ms)
{
uchar data i;
for(;Ms》0;Ms--)
for(i=26;i》0;i--);
}
i=[(延時值-1.75)*12/Ms-15]/4
1、在C51中進行精確的延時子程序設計時,盡量不要或少在延時子程序中定義局部變數,所有的延時子程序中變數通過有參函數傳遞。
2、在延時子程序設計時,採用do?while,結構做循環體要比for結構做循環體好。
3、在延時子程序設計時,要進行循環體嵌套時,採用先內循環,再減減比先減減,再內循環要好。
Ⅲ 51單片機C語言中delay函數是怎麼定義和使用的
delay函數是一般自己定義的一個延時函數。
c語言定義延時函數主要通過無意義指令的執行來達到延時的目的。下面給出一個經典的延時函數。
// 定義一個延時xms毫秒的延時函數
void delay(unsigned int xms) // xms代表需要延時的毫秒數
{
unsigned int x,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--);
}
Ⅳ (51單片機)那個大佬給講解一下這個延時函數
u16 i,這是定義一個16位整型的形參變數 i ,其實信唯,u16 並不是C51的變數類型,而是在程序的前面用#define u16 unsigned int 宏定義的。
延時就是利用循環滑滾培體while(i--); 來實現的,變數x先減1,判斷不是0,繼續循備鍵環,繼續減1,判斷,直到x=0,結束循環,延時結束。