tft每日頭條

 > 生活

 > 單片機如何确定延時時間

單片機如何确定延時時間

生活 更新时间:2024-12-02 06:36:01

單片機如何确定延時時間?希望我的程序能對大家的實驗起到幫助,我來為大家科普一下關于單片機如何确定延時時間?以下内容希望對你有幫助!

單片機如何确定延時時間(15單片機延時1s的計算方法)1

單片機如何确定延時時間

用c語言寫1s延時方法——定時器中斷方式

希望我的程序能對大家的實驗起到幫助。

#define uchar unsigned char

uchar a=0,b=0,i=0;

//**********定時中斷T1***中斷服務函數

void Timer1_int(void) interrupt 3 using 1

{

i ;

if(i==20)

{

i=0;

if(a==1)

b ;

}

}

TMOD=0X00;//設置為定時器1(T1)工作于方式0

TH1=0X3C;//高4位

TL1=0XB0;//低4位

TF1=0;//T1溢出标志位

ET1=1;TI中斷開關

EA=1;//中斷總開關

while(1)

if(a==1)

{

TR1=1;//啟動定時器

switch(b)

{

case 0:P2=0x7F;break; //0111 1111 P2.7

case 1:P2=0XFF;P1=0x7F;break; //0111 1111 P1.7

case 2:P1=0xBF;break; //1011 1111 P1.6

case 3:P1=0xFF;P4=0x7F;break; //0111 1111 p4.7

case 4:P4=0xBF; break; //1011 1111 p4.6

default:P4=0xFF;b=0;

}

}

TMOD=0X00首先設置為定時器1(T1)工作于方式0

定時時間:t=(2^(16)-定時器的初始值)*系統時鐘周期*12^(1-T1x12)

即當T1x12=0時系統為12分頻計數脈沖周期系統時鐘周期的12倍(12MHz時1個計數脈沖周期時間為t=1us)

當設置定時時間為50ms時:定時器的初始值T=2^(16)-50*(10^3)=15536。15536轉換為16進制後為3CB0(h).設置定時器的初始值的方法TH1為高4位(TH1=0X3C),TL1為低4位(TL1=0XB0)。

每當定時器的值從15536(定時器的初始值)加到65536( 2^(16) )時會溢出,這時TF1=1,然後定時器從15536重新開始加。

中斷服務函數:中斷服務函數中for循環讓定時器循環20次,每次循環時間為50ms,即定時時間為t=50*20=1000ms=1s.中斷服務函數執行延時1s後b 配合switch語句完成循環點亮LED燈

if語句:當TR1=1時才啟動定時器,開始定時。當開關按下後(a=1),TR1=1啟動定時器,同時執行switch語句,開始時b=0,先執行P2=0x7F;定時1s後,b=1,同時執行switch語句中的:P2=0XFF;P1=0x7F;定時1s後,b=2,之後依次循環。如果TR1=1在if語句前即TR1=1放在if語句外面時,因為TR1=1時是開啟定時器,當a!=1時,定時器也在計時,所以這裡第一個燈亮和第二個燈亮之間不是1s。

switch語句也可以換成if語句嵌套使用,這裡我建議用switch語句,switch語句在這裡相比于if語句的嵌套使用更簡單明了。

15單片機外部中斷流水燈 15單片機延時1s的計算方法——查詢方式

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved