51单片机 12MHz晶振 使用P1端口控制
电路:
程序:
#include
#define LED P1
void delay1s(void)
{
unsigned char a,b,c;
for(c=167;c>0;c--)
for(b=171;b>0;b--)
for(a=16;a>0;a--);
}
void delay50ms(void)
{
unsigned char a,b;
for(b=173;b>0;b--)
for(a=143;a>0;a--);
}
void main()
{
unsigned char i;
while(1)
{
LED=0xff;//8个二极管全暗
delay1s();
for(i=1;i;i<<=1)//D0-D7
{
LED=~i;
delay50ms();
}
delay1s();
for(i=0x80;i;i>>=1)//D7-D0
{
LED=~i;
delay50ms();
}
delay1s();
for(i=1;i;i<<=2)//D0-D6
{
LED=~i;
delay50ms();
}
for(i=2;i;i<<=2)// D1-D7
{
LED=~i;
delay50ms();
}
delay1s();
for(i=2;i;i<<=2)//D1-D7
{
LED=~i;
delay50ms();
}
for(i=1;i;i<<=2)//D0-D6
{
LED=~i;
delay50ms();
}
delay1s();
}
}
很简单的,对端口的地址操作也可以,左移,右移也可以,用if语句控制也可以,用switch语句控制也可以,用while语句控制也可以,用do......while语句控制也可以,当然还要看是神马内核的单片机