/********************************************************************************************* 程序名: 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;
}
}
|