第1个回答 2013-04-10
这个就太简单了,给你写个用定时器的吧!
#include<reg52.h>
#include<intrins.h>
unsigned char num,temp;
void main()
{
EA=1;
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
ET0=1;
TR0=1; //以上为定时器0中断设置并打开
temp=0xfc; //根据你的流水灯的设置取值,此处设置为低电平亮灯
while(1);
}
void timer0() interrupt 1
{
TR0=0;
num++;
if(num==10) //500ms 进去亮灯一次,想快点自己把数据改小
{
num=0;
P0=temp;
temp=_crol_(temp,2); //循环左移
}
TH0=(65535-50000)/256; //重转初值
TL0=(65535-50000)%256;
TR0=1;
}
第3个回答 2013-04-10
#include <reg52.h>
void Delay(int ticks)
{
int i;
int j;
for(i = 0; i < ticks; i++)
{
for(j = 0; j < 1000; j++);
}
}
void main(void)
{
unsigned char rol = 0x03;
unsigned char index = 0;
while(1)
{
P0 = rol;
Delay(5000);
index ++;
rol = rol << 1;
if(index == 7)
{
rol = rol | 0x01;
}
else if(index == 8)
{
index = 0;
rol = 0x03;
}
}
}来自:求助得到的回答