P1口接8个LED的负极,然后LED的正极经过电阻直接接Vcc
1:手工实现
1 流水灯单个闪过代码
#include <reg52.h>
void delayms(int X)
{
int i, j;
for(i = X; i ; --i)
for(j = 110;j ; --j);
return;
}
int main()
{
int i;
for(i = 0; i < 8; ++i)
{
P1 = 0xff - (1 << i);
delayms(500);
}
return 0;
}
PS:给新同学解释下,单个引脚赋值0的时候点亮
(P1只能采用十六进制数来赋值)
0xff的二进制 : 1 1 1 1 1 1 1 1
如果要点亮第一个: 1 1 1 1 1 1 1 0
同理要点亮第二个: 1 1 1 1 1 1 0 1
即要点亮第二个,需要把 二进制的 11111101转换成十六进制数,然后赋值给P1口。
11111101的由来:
1 1 1 1 1 1 1 1 => 0xff
- 0 0 0 0 0 0 1 0 => 1 << 1
&#