導航:首頁 > 操作系統 > 51單片機c語言1ms延時程序

51單片機c語言1ms延時程序

發布時間:2022-09-06 21:06:52

❶ c編程時,51單片機怎麼用定時器寫一個延時1ms的子函數

好辦
用C51,方式一
void delay(unsigned int T) //T的單位取微秒
{
signed int cnt; //這里用符號數的相反數 就是2^16-n的原碼,也可以定義無符號數自己換成2^16-n

cnt=-(fosec*1.0/12)*T; // fosec的單位MHz

TMOD=0x01;
TH0=(unsigned char)(cnt>>8);
TL0=(unsigned char)cnt;
TR0=1;
while(!TF0);
TR0=0;
TF0=0;//加這句是為了可以循環使用

}

❷ 51單片機用c語言怎麼寫延時函數

延時時間的計算與單片機的晶振頻率有關。若晶振頻率為12Mhz,那麼單片機每震動一次所需要的時間是1/12M s。那麼再來看看單片機執行一次自減所需要的振動次數是96次,假如我們對時間要求不是特別精確的話,可以約等於100來計算。現在通過上面兩個數據可以得出:單片機每執行一次自減所需要的時間是1/12M *100(s),即1/120000 s,逆向計算一下,每1ms需要自減多少次?120次對吧。所以一個簡單的延時功能就誕生了,我們只需要自減120次,就可以延時1ms,如果我們要延時50ms呢,那就自減50*120=6000次。那麼在程序上如何表達呢?我們可以用兩套for循環
void delay(int i){
int x,y;
for(x=i;x>0;x--){
for(y=120;y>0;y--)
}
}
參數 i 代表該函數延時多少ms

❸ 51單片機中延時程序

1. sleep()是以毫秒計算的,延時5秒是sleep(5*1000);,延時5分是sleep(5*1000*60);

2.包含的頭文件看你用的什麼編輯軟體。

3.我用的VC++是用包含在#include<windows.h>頭文件中。

#include<stdio.h>#include<windows.h>//Sleep()的頭文件 main() { int i;

int n=10;for(i=1;i<=n;i++) {printf("%d",i);Sleep(5*1000*60);} //

這里修改延時時間,

有些人說是用#include<dos.h>做頭文件你自己試下吧。

還用Sleep的S是大寫的,不是小寫的。

❹ 51單片機中,寫個延時函數,延時1ms,該怎麼寫,為什麼

用匯編語言寫可以精確計算,但有時想拼出整數的ms或10ms也不容易,計算方法如下圖說明:

而C語言靠經驗和實驗得來的,如下面程序

如果不準(與晶振頻率有關),調K的值,,軟體模擬查看,直到大致准確,想更精確用定時器

void delay(unsigned char i)//延時程序
{

unsigned chari,k;

for(j=i;j>0;j--)
for(k=125;k>0;k--);
}

❺ C51單片機,誰幫我寫個1ms的延時

void delay(uint i) //調用子程序所需時間)
{
uchar j,k;
for (j=i; j>0; j--)
for(k=0;k<30;k++);
}

在程序調用函數就可以得到1ms的程序,具體調用如下:
delay(10); //延時1.011ms

❻ 設51單片機晶振頻率為12MHZ,延時1m的子程序

猜想你問的是1ms.
下面為你寫出1ms的程序:
用的是11.0592M的,你如果真的需要是12M的,那自己直接修改成12M就可以了。調用的時候直接把uinsigned int ms改成1就是1ms.

void ConfigTimer0(unsigned int ms)
{
unsigned long tmp;
tmp = 11059200/12;
tmp = (tmp * ms)/1000;
tmp = 65536 - tmp;
tmp = tmp + 18;
T0RH = (unsigned char)(tmp >> 8);
T0RL = (unsigned char)tmp;
TMOD &= 0xF0;
TMOD |= 0x01;
TH0 = T0RH;
TL0 = T0RL;
ET0 =1;
TR0 = 1;
}

❼ 51單片機c語言延時函數 Void delay 1ms(unsigned int ms){un

C程序中可使用不同類型的變數來進行延時設計。經實驗測試,使用unsigned char類型具有比unsigned int更優化的代碼,在使用時應該使用unsigned char作為延時變數。 以某晶振為12MHz的單片機為例,晶振為12MHz即一個機器周期為1us。

void delay_ms(unsigned int ms_number) // ms延時函數 (AT89C51 @ 11.0592MHz)

{

unsigned int i;

unsigned char j;

for(i=0;i<ms;i++)

{

for(j=0;j<200;j++);

for(j=0;j<102;j++);

}

}

void Delay()

{

unsigned char a,b,c;

for(a=0;a<?;a++)

for(b=0;b<?;b++)

for(c=0;c<?;c++);

}

void delay_ms(unsigned int ms)

{

unsigned int i;

unsigned char j;

for(i=0;i<ms;i++)

{

for(j=0;j<200;j++);

for(j=0;j<102;j++);

}

}

拓展資料

C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。



❽ 我的單片機用的11.0592M的晶振,想寫一個大概延時1MS的子程序,應該怎樣寫(用C語言)

void delay(uint n)
{
uint i,j;
for(i=n;i>0;i--)
{
for(j=110;j>0;j--);
}
}
當n=1是延時大約是1ms,就是說n等於都少就延時多少ms,當然n的值不超過uint的最大值。
頭文件下請定義宏
#define uchar unsigned char
#define uint unsigned int

❾ 需要一個C語言程序。51單片機控制:按鍵按一下,延遲1分鍾後開燈,燈亮半個小時就熄滅的程序急需!

如果對時間要求不精確,用軟延時即可。
#include<reg52.h>
#define uchar unsigned char

#define uint unsigned int
sbit s=P1^0;

sbit led=P1^1;
void delayms(uint i) //1ms延時程序

{
uchar j;
for(;i>0;i--)
{
for(j=0;j<125;j++)//如果延時時間誤差較大,可按比例改變125這個數
//取值范圍0-255,數值越大,延時越長
{;}
}
}
void delay1s(uint i) //1s延時程序

{
for(;i>0;i--){delay1ms(1000);}
}

void main()
{
led=0;

while(1)
{
if (s==0)
{
delayms(20);
if (s==0);{delay1s(60);led=1; }
}
if(led==1){delay1s(1800);led=0; }
}
}
如果對時間要求精確,則要用到定時器,還要確保電路外接有晶振,並已知晶振頻率

❿ 請教51單片機C語言的步進電機延時程序

延時函數很常見:
Delay1mS(unsigned int tt) //延時1ms
{
unsigned char i;
while(tt--) for(i = 113; i > 0; i--);
}
反復多次調用即可。
但是,用軟體延時,觀察起來,就像死機一樣,經常會誤事的。

閱讀全文

與51單片機c語言1ms延時程序相關的資料

熱點內容
橙app如何開啟聊天 瀏覽:895
訪問伺服器公網地址 瀏覽:664
pdf列印底色去掉 瀏覽:463
java快遞介面 瀏覽:397
哪個app可以教新爸爸 瀏覽:210
如何查看伺服器系統版本信息 瀏覽:524
成都市土地出讓金演算法 瀏覽:702
鋼筋加密標記 瀏覽:576
ps中擴展功能在文件夾的什麼位置 瀏覽:904
雙極壓縮機為什麼要先高壓 瀏覽:527
蘋果手機伺服器填什麼 瀏覽:832
android移動動畫效果 瀏覽:691
電子和伺服器是什麼意思 瀏覽:691
phpurl中文亂碼問題 瀏覽:893
程序員那麼可愛大結局陸漓產子 瀏覽:538
java如何從雲伺服器讀取本地文件 瀏覽:924
壓縮空氣軟管製作方法 瀏覽:912
天河三號演算法 瀏覽:924
php隊列教程 瀏覽:632
洪水命令 瀏覽:531