找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3813|回復(fù): 11
收起左側(cè)

求助大神延時程序

[復(fù)制鏈接]
ID:162333 發(fā)表于 2017-1-20 16:13 | 顯示全部樓層 |閱讀模式
void Delay_Ms(unsigned int ms)
{
     unsigned int i;
         do{
              i = MAIN_Fosc / 96000;
                  while(--i);   //96T per loop
     }while(--ms);
}

這個程序應(yīng)該怎么理解

回復(fù)

使用道具 舉報

ID:162333 發(fā)表于 2017-1-20 16:14 | 顯示全部樓層
#define MAIN_Fosc                11059200UL前面已有宏定義
回復(fù)

使用道具 舉報

ID:158248 發(fā)表于 2017-1-21 10:23 | 顯示全部樓層
這是個嵌套的循環(huán)。先完成里面這個while(--i);96000次,在完成外面的循環(huán)ms次,相當(dāng)9600*ms次時間
回復(fù)

使用道具 舉報

ID:162622 發(fā)表于 2017-1-21 11:35 | 顯示全部樓層
這個是對STC1T單片機而言的,對不同的時鐘,都能得到ms延時,你在config.h中去看,對應(yīng)的時鐘就與你選擇的時鐘是否一至
回復(fù)

使用道具 舉報

ID:152682 發(fā)表于 2017-1-21 12:07 | 顯示全部樓層
調(diào)用該函數(shù)后,進(jìn)入do...while循環(huán),在該循環(huán)里面,先給i賦初值,然后進(jìn)入while循環(huán),當(dāng)--i等于0時,結(jié)束wile循環(huán),進(jìn)入while(--ms),判斷--ms是否等于零,若不為零,則重復(fù)上述步驟!
回復(fù)

使用道具 舉報

ID:155507 發(fā)表于 2017-1-21 15:47 | 顯示全部樓層
mS延時函數(shù), //96T per loop 一層循環(huán) 96 機器周期
回復(fù)

使用道具 舉報

ID:162333 發(fā)表于 2017-1-21 16:54 | 顯示全部樓層
為什么要除以96000呀
回復(fù)

使用道具 舉報

ID:111634 發(fā)表于 2017-1-21 18:26 | 顯示全部樓層
這種非標(biāo)不通用程序,沒頭沒尾,只能用于專門的某一系統(tǒng)。試問MAIN_Fosc能隨意定義和賦值嗎?
回復(fù)

使用道具 舉報

ID:162333 發(fā)表于 2017-1-22 03:39 | 顯示全部樓層
zl2168 發(fā)表于 2017-1-21 18:26
這種非標(biāo)不通用程序,沒頭沒尾,只能用于專門的某一系統(tǒng)。試問MAIN_Fosc能隨意定義和賦值嗎?

好像是特定單片機的頻率把
回復(fù)

使用道具 舉報

ID:162066 發(fā)表于 2017-1-22 09:18 | 顯示全部樓層
#define MAIN_Fosc   96000            //這是前面已有宏定義,也就是MAIN_Fosc = 96000
回復(fù)

使用道具 舉報

ID:162736 發(fā)表于 2017-1-22 17:28 | 顯示全部樓層
循環(huán)體延時1ms。這個程序最大的優(yōu)點是適合不同時鐘頻率
回復(fù)

使用道具 舉報

ID:162841 發(fā)表于 2017-1-24 23:00 來自手機 | 顯示全部樓層
這就是一個嵌套循環(huán)語句
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表