當前位置:編程學習大全網 - 編程語言 - AT89S51單片機定時計數程序?

AT89S51單片機定時計數程序?

我不知道妳想要什麽功能。,給妳三個典型,希望能幫到妳,電路就是顯示部分。

/*

利用定時器控制LED的開關。

*/

# include & ltreg52.h & gt

sbit?led=p1^2;

作廢?Init_Timer1(void)

{

TMOD?|=?0x 10;

th 1 = 0x 00;/*?初始化?價值?*/

TL 1 = 0x 00;

EA = 1;/*?中斷?啟用?*/

et 1 = 1;?/*?啟用?timer1?打斷?*/

tr 1 = 1;

}

主()

{

init _ timer 1();

while(1);

}

作廢?Timer1_isr(void)?打斷?3?使用?1

{

th 1 = 0x 00;/*?初始化?價值?*/

TL 1 = 0x 00;

LED = ~ LED

}

我給妳壹個用定時器做的時鐘程序。

/*

1,按鍵調整當時時間。

2.按鍵調整計時時間。

3、計時時間到接力吸。

*8位數碼管顯示?時間格式格式?12-08-00?馬克12: 08: 00。

P30?用了幾個小時?添加1操作

P31?用於小時減1運算。

P32?幾分鐘?添加1操作

P33?用於從分鐘數中減去1。

*/

#包含?& ltreg52.h & gt

sbit?key1=p3^0;

sbit?key2=p3^1;

sbit?key3=p3^2;

sbit?key4=p3^3;

sbit?led=p1^2;

代碼?未簽名?夏爾?tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x 90 };?

//* * *楊數碼管?0-9

未簽名?夏爾?StrTab[8];//定義緩沖區

未簽名?夏爾?分鐘=30,小時=12,秒;//定義並初始化值?12:30:00

作廢?延遲(無符號?int?Cnt)//延遲功能

{

while(-CNT);

}

作廢?Displaypro(無效)

{

StrTab[0]= tab[小時/10];//顯示正常時間

StrTab[1]= tab[hour % 10];

StrTab[2]= 0x BF;

StrTab[3]= tab[分鐘/10];

StrTab[4]= tab[分鐘% 10];

StrTab[5]= 0x BF;

StrTab[6]= tab[秒/10];

StrTab[7]= tab[秒% 10];

}

Main()//主函數

{

TMOD?| = 0x 01;//定時器0?10ms?在?12M?水晶?用於計時

TH0 = 0xd8

TL0 = 0xf0

ET0 = 1;

TR0 = 1;

TMOD?| = 0x 10;?//定時器1用於動態掃描。

th 1 = 0x F8;

TL 1 = 0xf 0;

et 1 = 1;

tr 1 = 1;

EA?=1;

display pro();

While(1)//主循環

{

/////////////////////////////////////////////////////////////////

如果(!KEY1)?//按下1鍵,搖動行動。

{

延時(10000);

如果(!KEY1)

{

hour++;if(hour = = 24)hour = 0;?//正常時間?幾個小時?加1

display pro();

}

}

////////////////////////////////////////////////////////////////

如果(!KEY2)?//按2鍵搖壹搖,行動。

{

延時(10000);

如果(!按鍵2)

{

小時-;if(hour = = 0)hour = 23;?//正常時間?小時減去1

display pro();

}

}

////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////

如果(!KEY3)?//鍵進行搖動和動作

{

延時(10000);

如果(!按鍵3)

{

分鐘++;if(minute = = 59)minute = 0;//除以加1

display pro();

}

}

/////////////////////////////////////////////////////////////////

如果(!KEY4)?//鍵進行搖動和動作

{

延時(10000);

如果(!按鍵4)

{

分鐘-;if(minute = = 0)minute = 59;//負1

display pro();

}

}

}

}

////////////////////////////////////////////////////////////////

/********************************/

/*定時中斷1*/

/********************************/

作廢?time1_isr(void)?打斷?3?使用?0//定時器1用於動態掃描。

{

靜電?未簽名?夏爾?num

th 1 = 0x F8;//重新輸入初始值

TL 1 = 0xf 0;

切換?(數字){

案子?0:P2 = 0x Fe;P0 = StrTab[7-num];打破;?//分別調用緩沖區的值進行掃描。

案子?1:P2 = 0x FD;P0 = StrTab[7-num];打破;

案子?2:P2 = 0x FB;P0 = StrTab[7-num];打破;

案子?3:P2 = 0xf 7;P0 = StrTab[7-num];打破;

案子?4:P2 = 0x ef;P0 = StrTab[7-num];打破;

案子?5:P2 = 0x df;P0 = StrTab[7-num];打破;

案子?6:P2 = 0x BF;P0 = StrTab[7-num];打破;

案子?7:P2 = 0x7F;P0 = StrTab[7-num];打破;

默認:break

}

num++;?//掃描8次,用8個數碼管。

如果(數量==8)

num = 0;

}

//////////////////////////////////////////////////////////////////

/********************************/

/*定時中斷0*/

/********************************/

作廢?tim(void)?打斷?1?使用?1

{

靜電?未簽名?夏爾?數數;//定義內部靜態變量

TH0 = 0xd8//重新賦值

TL0 = 0xf0

count++;

切換?(計數)

{

案子?0:

案子?20:

案子?40:

案子?60:

案子?80:Displaypro()。?//定期調用顯示處理。

打破;

案子?50:LED=!LED?//半秒?LED閃爍

打破;

默認:break

}

如果?(計數==100)

{

count = 0;

第二個++;//秒加1

if(秒==60)

{

秒= 0;

分鐘++;?//除以加1

if(分鐘==60)

{

分鐘= 0;

hour++;//加上1

if(小時==24)

小時= 0;

}

}

}?

}

給妳另壹個計數器功能

/*

1.程序目的:利用外部中斷學習計數?這裏用100計數和2位數碼管?

2.硬件要求:數碼管和晶體振蕩器12M。

*/

#包含?& ltreg52.h & gt

代碼?未簽名?夏爾?tab[]=

{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x 90 };?

//* * *楊數碼管?0-9?

未簽名?夏爾?Dis _ Shiwei//定義十位數

未簽名?夏爾?Dis _ Gewei?//定義位

作廢?延遲(無符號?int?cnt)

{

while(-CNT);

}

主()

{

EA = 1;//斷開全局連接

EX0 = 1;//外部中斷0開啟

IT0 = 1;//邊沿觸發器

while(1)

{

P0 = Dis _ Shiwei//顯示十位數

P2 = 0x FD;

延遲(300);//短暫延遲

P0 = Dis _ Gewei?//顯示單位

P2 = 0x Fe;

延遲(300);

}

}

/********************************/

/*定時中斷*/

/********************************/

作廢?INT0_ISR(void)?打斷?0?使用?1

{

靜電?未簽名?夏爾?第二;//定義壹個靜態變量,退出程序後內容不變。

第二個++;//加上1

if(秒==100)

秒= 0;

dis _ Shiwei = tab[秒/10];//十位數顯示值處理

dis _ Gewei = tab[秒% 10];?//位顯示處理

}

  • 上一篇:學生抱怨考試太難,美國大學直接把84歲泰鬥級教授炒了,對此妳怎麽看?
  • 下一篇:如何通過域名訪問遠程SQLSERVER服務器
  • copyright 2024編程學習大全網