導航:首頁 > 操作系統 > 單片機一秒延時

單片機一秒延時

發布時間:2022-07-09 04:41:57

㈠ 如何利用定時器T0的工作方式1實現1秒鍾延時程序(單片機)

1、#include <reg52.h>

2、#define uchar unsigned char

3、#define uint unsigned int

4、sbit LED = P0^0;uchar T_Count = 0;void main(){TMOD = 0x01;TH0 = (65535-50000)/256;TL0 = (65535-50000)%256;IE = 0x82;TR0 = 1;while(1);}

5、void LED_Flash() interrupt 1{TH0 = (65535-50000)/256;TL0 = (65535-50000)%256;if(++T_Count == 20){LED = !LED;T_Count = 0;}}

6、這個程序是1秒鍾LED燈會亮與滅顯示。

㈡ 單片機小程序:用定時器T0方式1,延時一秒怎麼寫晶振為12

不管晶振頻率是多少,一次就延時一秒是不可能的。
當晶振頻率是12
M時,最大的延時是65.536毫秒。通常可以設置定時50毫秒,並設置為中斷方式,這樣,每次當定時到就中斷一次,再對中斷計數,中斷計數20次就是一秒了。

㈢ 單片機怎麼不使用定時計數器的匯編語言延時一秒

使用延時函數,也就是多層計數for循環即可。

㈣ 任意型號單片機,延遲1或2秒怎麼寫12M,24M怎麼算for後面怎麼寫。要過程不要結果。

一般先寫一個延時幾個毫秒的子程序,很簡單。
void delay( int ms )
{
while( ms-- )
{
int i = 延時常數;
do { _nop_(); } while( --i );
}
}

要延時一秒鍾,就是1000ms,delay( 1000 );
幾個注意事項,
1、延時程序沒有關中斷,所以中斷程序會影響定時精度。
2、延時常數可以用軟模擬程序實驗確定,需要根據不同的單片機、晶振頻率調整延時常數。
3、想要適用任意型號單片機,內層循環最好加一句空操作,通常這可以阻止編譯時優化程序。

㈤ 單片機延時1秒如何計算要最詳細一點的要過程用C語言

unsigned char rSecondCount; //秒計時數
unsigned char rMinuteCount; //分計時數
sbit IsOneSecondReach;
sbit Pulse_Sec=P1^0;
sbit Pulse_Min=P1^1;
main()
{
rSecondCount=0;
rMinuteCount=0;
TH1=0x3C;
TL1=0xAF; //定時器50ms產生一次中斷 (FFFF-3CAF)us
MOD = 0x10; //定時器1工作於模式1,(用工作於模式2也可以,而且更 簡便)
TR1=1; //使能定時器1
ET1=1; //開中斷
EA=1; //開全局中斷
while(1)
{
if (IsOneSecondReach)
{
IsOneSecondReach = 0;
//do something,如果一秒延時標志為1,則清除此標志,等待下次1秒,在此處
//執行需要執行的程序
}
}
}
/* 定時器50ms產生一次中斷 */
void Timer(void) interrupt 3
{
/* 重新載入T1參數 */
TH1=0x3C;
TL1=0xAF;
/* 一秒累加 */
rSecondCount++;//秒計時+1
if (rSecondCount==20) //1sec到,50ms*20
{
IsOneSecondReach = 1;
}
}
//
脈沖寬度為50ms,如果有其他要求的話,修改T1參數和「秒分」的參數湊下就行了.

㈥ 單片機延時1秒如何計算要最詳細一點的要過程 用C語言寫的 晶振為12M 主要是計算過程和演算法

unsigned char rSecondCount; //秒計時數
unsigned char rMinuteCount; //分計時數
sbit IsOneSecondReach;

sbit Pulse_Sec=P1^0;
sbit Pulse_Min=P1^1;

main()
{
rSecondCount=0;
rMinuteCount=0;
TH1=0x3C;
TL1=0xAF; //定時器50ms產生一次中斷 (FFFF-3CAF)us
MOD = 0x10; //定時器1工作於模式1,(用工作於模式2也可以,而且更 簡便)
TR1=1; //使能定時器1
ET1=1; //開中斷
EA=1; //開全局中斷
while(1)
{
if (IsOneSecondReach)
{
IsOneSecondReach = 0;
//do something,如果一秒延時標志為1,則清除此標志,等待下次1秒,在此處
//執行需要執行的程序
}
}
}

/* 定時器50ms產生一次中斷 */
void Timer(void) interrupt 3
{
/* 重新載入T1參數 */
TH1=0x3C;
TL1=0xAF;

/* 一秒累加 */
rSecondCount++;//秒計時+1
if (rSecondCount==20) //1sec到,50ms*20
{
IsOneSecondReach = 1;
}
}
/**************************************************************/
脈沖寬度為50ms,如果有其他要求的話,修改T1參數和「秒分」的參數湊下就行了。

㈦ 51單片機延時一秒函數,晶振12MHZ

我這有個函數自己實驗出來的,在KEIL里看差不多就是延時1毫秒
void delay1ms(unsigned int t)
{
unsigned x,y;
for(x=t;x>0;x--)
for(y=124;y>0;y--);
}

把t 改為你要延時的數就可以了,1毫秒就把t改為1 500毫秒就把t改為500

㈧ 單片機延時一秒的c程序

void
delay(unsigned
int
k)
{
unsigned
int
i,j;
for
(i=0;<k;i++)
{
for
(j=0;j<121;j++)
{;}
}
}
/*
取k=3000
*/
或者你可以用keil
自設一個延時函數,一直調試到你所需要的時間為止

㈨ 51單片機用定時器查新的方法編寫一秒的延時程序,fosc=12MHZ

一、用定時器中斷,50ms中斷的1 次,20次就是1秒
#include <REG51.H>
#define uchar unsigned char
sbit LED =P1^1; //接一LED,1 秒鍾亮或滅一次
uchar time;
void init_t0int()
{
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
init_t0int();
while(1);
}

void t0int() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
time++;
if(time==20)
{
time=0;
LED=~LED;
}
}

二、用循環延時可能程序更簡單一點,但沒實際意義 。單片機在這1 秒內只能循環而不能做其它事。
#include<reg51.h>
sbit LED=P1^0;
void delay_ms(unsigned char ms)
{
unsigned char i;
while(ms--)
for(i=0;i<123;i++);
}
void main()
{
while(1)
{
delay_ms(1000);
LED=~P1^0; //P1.0接一LED,可看到LED每1S亮或滅一次
}
}
參考資料: LED

㈩ 單片機 延遲一秒程序怎麼寫延遲2秒我是初學者,想請教一下。

你好!
你要先寫一個延時基準(50毫秒),在延時1秒就是做20次基準,2秒就是40個基準!
也可以用定時器,定時50毫秒,定時器中斷計數,計數20就是1秒,計數40次就是2秒(推薦用定時器!)
僅代表個人觀點,不喜勿噴,謝謝。

閱讀全文

與單片機一秒延時相關的資料

熱點內容
電腦感染exe文件夾 瀏覽:914
wpsppt怎麼轉pdf格式 瀏覽:86
騰訊文檔在線編輯怎麼添加密碼 瀏覽:868
本地不能訪問伺服器地址 瀏覽:865
訪問伺服器命令 瀏覽:835
華為雲伺服器分銷商 瀏覽:954
Linux定位內存泄露 瀏覽:198
工程加密狗視頻 瀏覽:720
不在內網怎麼連接伺服器 瀏覽:664
雲伺服器app安卓下載 瀏覽:966
如何查看linux伺服器的核心數 瀏覽:137
交易平台小程序源碼下載 瀏覽:148
程序員記筆記用什麼app免費的 瀏覽:646
java與單片機 瀏覽:897
伺服器內網如何通過公網映射 瀏覽:478
程序員穿越到宋代 瀏覽:624
怎麼使用雲伺服器掛游戲 瀏覽:618
真實的幸福pdf 瀏覽:345
d盤php調用c盤的mysql 瀏覽:266
怎麼樣搭建源碼網站 瀏覽:430