用移位运算法将AT89C51单片机P1P2端口16个灯(P1.0P1.1P1.2P1.3点亮熄灭)(P1.4P1.5P1.6P1.7点亮熄灭)(P2.0P2.1P2.2P2.3点亮熄灭)(P2.4P2.5P2.6P2.7点亮熄灭)循环
时间: 2023-09-12 15:03:33 浏览: 46
以下是用移位运算法实现的代码:
```c
#include <reg51.h>
void delay(unsigned int t)
{
unsigned int i, j;
for (i = 0; i < t; i++)
for (j = 0; j < 1000; j++);
}
void main()
{
unsigned char i, j;
while (1)
{
// 点亮P1.0-P1.3
for (i = 0; i < 16; i++)
{
P1 = ~(1 << i);
delay(500);
}
// 熄灭P1.0-P1.3
for (i = 0; i < 16; i++)
{
P1 = ~(1 << i);
delay(500);
}
// 点亮P1.4-P1.7
for (i = 4; i < 8; i++)
{
P1 = ~(1 << i);
delay(500);
}
// 熄灭P1.4-P1.7
for (i = 4; i < 8; i++)
{
P1 = ~(1 << i);
delay(500);
}
// 点亮P2.0-P2.3
for (i = 0; i < 4; i++)
{
P2 = ~(1 << i);
delay(500);
}
// 熄灭P2.0-P2.3
for (i = 0; i < 4; i++)
{
P2 = ~(1 << i);
delay(500);
}
// 点亮P2.4-P2.7
for (i = 4; i < 8; i++)
{
P2 = ~(1 << i);
delay(500);
}
// 熄灭P2.4-P2.7
for (i = 4; i < 8; i++)
{
P2 = ~(1 << i);
delay(500);
}
}
}
```
注:以上代码中的 `delay` 函数用于延时,将会在后续的内容中讲解。