真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C語言us延遲函數(shù) c語言中延遲函數(shù)

c語言中一個標(biāo)準(zhǔn)的延時1us的函數(shù)怎么寫?

如果是單片機上,是有可能的

創(chuàng)新互聯(lián)專注于安居企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計,商城網(wǎng)站建設(shè)。安居網(wǎng)站建設(shè)公司,為安居等地區(qū)提供建站服務(wù)。全流程按需開發(fā),專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

單片機12M晶振執(zhí)行一條指令1us,所以C語言1us延時程序 用12M晶振延時1us,用—_nop_();

#includeintrins.h //頭文件

_nop_(); //這一個語句表示1us延時

C語言延時函數(shù)

C語言的延遲函數(shù)一般是利用無意義程序運行來控制時間從而達到延時的目的

舉個例子:

for(i=0;ix;i++)

for(j=0;j120;j++);

這是延時x毫秒的for循環(huán)語句。

值得注意的是記得最后的;一定得記得寫。

求一個C語言的微秒級延時函數(shù)

c語言,微秒級延時

void?Delay_us?(unsigned?char?time_us)

{

unsigned?long?int??TM_LODAE;

TR2???=?0;??????????????????????????//?Stop?timer

TF2H??=?0;??????????????????????????//?Clear?timer?overflow?flag

TM_LODAE?=?65535-(UINT)(SYSCLK/1000000)?*?(UINT)(time_us);

//?TMR2??=?-(?(UINT)(SYSCLK/1000000)?*?(UINT)(time_us)?);

TMR2H?=??TM_LODAE8;

TMR2L =??TM_LODAE0x00FF;

TR2???=?1;??????????????????????????//?Start?timer

while?(!TF2H);??????????????????????//?Wait?till?timer?overflow?occurs

TR2???=?0;??????????????????????????//?Stop?timer

}

程序分析:

前面一起住航分析一下該代碼,

unsigned?long?int??TM_LODAE;??聲明一個長整型數(shù)據(jù),

TR2???=?0;????定時器2停止計時

TF2H??=?0;??????清除定時器2中斷標(biāo)志

TM_LODAE?=?65535-(UINT)(SYSCLK/1000000)?*?(UINT)(time_us);????計算定時器初值。?SYSCLK是系統(tǒng)的晶振頻率,SYSCLK/1000000是系統(tǒng)?1uS?執(zhí)行的指令。?(UINT)(SYSCLK/1000000)?*?(UINT)(time_us)就是系統(tǒng)?time_us執(zhí)行的指令數(shù)。?65535-(UINT)(SYSCLK/1000000)?*?(UINT)(time_us)定時器需要?TM_LODAE指令周期才會溢出。

該單片機的一個指令周期就是一個時鐘周期.TMR2H?=??TM_LODAE8;??TMR2L =??TM_LODAE0x00FF;置定時器寄存器的初值、

TR2???=?1;???啟動單片機計時? while?(!TF2H); ?等待定時器2寄存器溢出。TR2???=?0;停止計時,在這段代碼注釋中已經(jīng)說明了應(yīng)該有50nS的誤差,這個是函數(shù)調(diào)用產(chǎn)生的。

51單片機C語言程序中延時函數(shù)delay的原理是什么?

原理:只是執(zhí)行一些所謂的“無實際意義的指令”,如縮放或執(zhí)行一個int自加,簡單地說,就像高中數(shù)學(xué)中的“乘法原理”一樣,很容易迅速增加上面提到的“無意義指令”的數(shù)量

關(guān)于大小的值:如果是在C語言中,該值不僅與水晶振動、單片機本身的速度,但也與C的編譯器,所以,雖然這個值可以精確計算,但大多數(shù)情況下,程序員是經(jīng)驗值。

當(dāng)然,如果你在匯編中編程,情況就不同了,因為每條指令使用一定數(shù)量的機器周期,你當(dāng)然可以根據(jù)所有指令使用的總時間來計算特定延遲的總時間。

擴展資料:

定義延遲XMS毫秒的延遲函數(shù)

Voiddelay(unsignedintXMS)//XMS表示需要延遲的毫秒數(shù)

無符號intx,y;

For(x=XMS;X0;X-)

For(y=110;Y”0;Y-);

使用:

VoidDelay10us(ucharMs)

Uchar數(shù)據(jù)我;

(;女士“0;------Ms)

對于(I = 26)我 0;我-);

I=[(延遲值-1.75)*12/ms-15]/4


網(wǎng)頁標(biāo)題:C語言us延遲函數(shù) c語言中延遲函數(shù)
URL標(biāo)題:http://weahome.cn/article/ddjshie.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部