1.效果展示
1.1.代码1效果

1.2.代码2效果

2.Proteus仿真
元器件:AT89C51 *1,LED-BLUE *2,LED-GREEN *2,LED-YELLOW *2,VCC *1,GROUND *1,电阻包RESPACK-8 *1.
说明:仿真图中LED灯左侧高电平,右侧低电平时,LED正常闪烁。
另:仿真连线使用标号模式。

3.代码1

# include 《reg51.h》
unsigned char table[] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 }; //控制P0端口
void delay100ms(void) //误差 0us 用单片机小精灵生成的
{
unsigned char a,b,c;
for(c=19;c》0;c--)
for(b=20;b》0;b--)
for(a=130;a》0;a--);
}
void main()
{
unsigned int i;
while(1)
{
for(i = 0; i 《 8; i ++)
{
P0 = table[i];
delay100ms();
}
}
}
4.代码2

#include《reg51.h》
#include《intrins.h》
void delay100ms(void) //误差 0us 用单片机小精灵生成的
{
unsigned char a,b,c;
for(c=19;c》0;c--)
for(b=20;b》0;b--)
for(a=130;a》0;a--);
}
void main()
{
unsigned char Data0,i;
unsigned int Data1;
Data0 = 0x01; // 二进制11111110B
Data1 = 0x80; // 二进制01111111B
while(1)
{
for(i = 0; i 《 8; i++) // 循环8次,可执行_crol_函数8次,将Data0各位循环左移8次,即8个LED逐个点亮。
{
P0 = Data0; // 将Data传递给P2口
Data0 = _crol_(Data0, 1); // 11111110B各位左移1位
delay100ms();
}
for(i = 0; i 《 8; i++) // 与上面道理相似,这是控制Data1各位右移
{
P0 = Data1;
Data1 = _cror_(Data1,1);
delay100ms();
P0 = Data0;
}
}
}
1.效果展示
1.1.代码1效果

1.2.代码2效果

2.Proteus仿真
元器件:AT89C51 *1,LED-BLUE *2,LED-GREEN *2,LED-YELLOW *2,VCC *1,GROUND *1,电阻包RESPACK-8 *1.
说明:仿真图中LED灯左侧高电平,右侧低电平时,LED正常闪烁。
另:仿真连线使用标号模式。

3.代码1

# include 《reg51.h》
unsigned char table[] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 }; //控制P0端口
void delay100ms(void) //误差 0us 用单片机小精灵生成的
{
unsigned char a,b,c;
for(c=19;c》0;c--)
for(b=20;b》0;b--)
for(a=130;a》0;a--);
}
void main()
{
unsigned int i;
while(1)
{
for(i = 0; i 《 8; i ++)
{
P0 = table[i];
delay100ms();
}
}
}
4.代码2

#include《reg51.h》
#include《intrins.h》
void delay100ms(void) //误差 0us 用单片机小精灵生成的
{
unsigned char a,b,c;
for(c=19;c》0;c--)
for(b=20;b》0;b--)
for(a=130;a》0;a--);
}
void main()
{
unsigned char Data0,i;
unsigned int Data1;
Data0 = 0x01; // 二进制11111110B
Data1 = 0x80; // 二进制01111111B
while(1)
{
for(i = 0; i 《 8; i++) // 循环8次,可执行_crol_函数8次,将Data0各位循环左移8次,即8个LED逐个点亮。
{
P0 = Data0; // 将Data传递给P2口
Data0 = _crol_(Data0, 1); // 11111110B各位左移1位
delay100ms();
}
for(i = 0; i 《 8; i++) // 与上面道理相似,这是控制Data1各位右移
{
P0 = Data1;
Data1 = _cror_(Data1,1);
delay100ms();
P0 = Data0;
}
}
}
举报