|
/************************************1*************************************
標(biāo)題: LED閃爍
作者: aphi
日期: 2009.5.26 OK!
軟件: Keil uVision3
芯片: STC89C51
說明:要實(shí)現(xiàn)led 閃爍,也就是一下亮一下熄,如此反復(fù),但由于單片機(jī)執(zhí)行指令時間是微
秒級,由于人眼視覺暫留,我們會看到LED一直在亮,所以要讓亮和熄延時一段時間。
本程序采用while軟件延時 .
***************************************************************************/
#include<reg52.h>
sbit d1=P1^0 ;
unsigned int a;
void main()
{
while(1) //無限循環(huán)
{
a=51000;
d1=0;
while(a--);
a=51000;
d1=1;
while(a--);
}
}
/*********************************2****************************************
標(biāo)題: LED閃爍
作者: aphi
日期: 2009.5.26 OK!
軟件: Keil uVision3
芯片: STC89C51
說明: 本程序采用for軟件延時 .
***************************************************************************/
#include<reg52.h>
sbit d1=P1^0;
unsigned int a;
void main()
{
for(;;) //無限循環(huán)
{
d1=0;
for(a=51000;a>0;a--);
d1=1;
for(a=51000;a>0;a--);
}
}
/*********************************3****************************************
標(biāo)題: LED閃爍
作者: aphi
日期: 2009.5.26 OK!
軟件: Keil uVision3
芯片: STC89C51.
說明: 本程序采用定時器軟件延時,判斷溢出。
***************************************************************************/
#include<reg52.h>
sbit d1=P1^1;
void delay(unsigned int i)
{
TMOD=0X01;
IE=0X00;
TR0=1;
while(i!=0)
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
while(TF0!=1); //判斷溢出
TF0=0;
i--;
}
TR0=0;
}
void main()
{
while(1)
{
d1=0;
delay(10);
d1=1;
delay(10);
}
}
/*********************************4****************************************
標(biāo)題: LED閃爍
作者: aphi
日期: 2009.5.26 OK!
軟件: Keil uVision3
芯片: STC89C51
說明: 本程序采用定時器軟件延時,等待中斷。
***************************************************************************/
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit P1_0=P1^0;
uchar a;
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1);//等待中斷產(chǎn)生
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
if(a==10)
{
a=0;
P1_0=~P1_0;
}
}
|
|