51单片机流水灯实现循环左移,循环右移,奇偶闪烁
时间: 2023-07-12 10:42:38 浏览: 136
好的,针对你的问题,我可以提供以下代码参考:
循环左移:
```c
#include <reg51.h>
void delay(unsigned int time)
{
unsigned int i,j;
for(i=0;i<time;i++)
for(j=0;j<125;j++);
}
void main()
{
unsigned char i;
P1 = 0xfe;
while(1)
{
for(i=0;i<7;i++)
{
P1 = (P1<<1) | 0x01;
delay(100);
}
P1 = 0xfe;
}
}
```
循环右移:
```c
#include <reg51.h>
void delay(unsigned int time)
{
unsigned int i,j;
for(i=0;i<time;i++)
for(j=0;j<125;j++);
}
void main()
{
unsigned char i;
P1 = 0x7f;
while(1)
{
for(i=0;i<7;i++)
{
P1 = (P1>>1) | 0x80;
delay(100);
}
P1 = 0x7f;
}
}
```
奇偶闪烁:
```c
#include <reg51.h>
void delay(unsigned int time)
{
unsigned int i,j;
for(i=0;i<time;i++)
for(j=0;j<125;j++);
}
void main()
{
while(1)
{
P1 = 0xaa;
delay(500);
P1 = 0x55;
delay(500);
}
}
```
以上代码中,通过使用位运算实现循环左移、循环右移,通过改变输出的位模式实现奇偶闪烁。需要注意的是,以上代码仅供参考,具体实现需要根据具体硬件和需求进行调整。
阅读全文