/********************************************************************************************* 程序名: 8路LED流水燈 編寫人: 謝海斌 編寫時間: 2010年11月07日晚 硬件支持: STC系列單片機 12MHz 接口說明: 修改日志: NO.1- /********************************************************************************************* 說明:
/*********************************************************************************************/ #include<reg51.h> //51 頭文件 #define HB_PORT P1 //設置LED連接的I/O組 #define HB_SPEED 100 void delay(unsigned int a)//延時1ms子程序 { unsigned int i; while(--a!=0) { for(i=0;i<600;i++); } } void main(void)//主函數 { unsigned int i;//自定義變量temp unsigned int temp;//自定義變量temp while(1) { temp=0x01; for(i=0;i<8;i++)//8個LED依次閃動 { HB_PORT=~temp; delay(HB_SPEED);//調用延時函數 temp<<=1; } temp=0x80; for(i=0;i<=8;i++) { HB_PORT=temp; delay(HB_SPEED); temp<<=1; } temp=0x7F; for(i=0;i<8;i++)//8個LED反向全部點亮 { HB_PORT=temp; delay(HB_SPEED);//調用延時函數 temp>>=1; } } } +++++++++++++++++++++++++++++++++++++我是華麗的分割線+++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++采用定時器版本的流水燈++++++++++++++++++++++++++++++++++++++++++++++++++++
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar temp,t0;
uint shu;
void init();
void main()
{ init();
while(1)
{}
}
void init()
{
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
ET1=1;
TR1=1;
temp=0xfe;
P1=temp;
}
void timer0()interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t0++;
if(t0==10)
{
t0=1;
temp=_crol_(temp,1);
P1=temp;
}
}
|