这是我从教程书上复制的流水灯代码:
#include<reg51.h>
#include<stdio.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//延时
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<120;i++);
}
}
//主程序
void main()
{
P0=0xfe;
while(1)
{
P0=_crol_(P0,1);
DelayMS(150);
}
}
代码正确,但我想弄清楚P0=0xfe;的作用,0xfe转化为十进制为254,为什么P0要赋值一个254呢,我试了将P0=0xfe变为P0=0x01.效果就完全相反了,之前就是流水灯(一个亮,七个暗,逐个发亮),改变后还是流水灯(一个暗,七个暗,逐个熄灭),为什么会这样呢,随后我又将P0=0xfe变为P0=0x00,之后就一直发亮,没有流水灯效果了,希望大神帮我解释一下;还有我还想了解一下P0端的作用,一开始是高电平还是低电平,还是将P0.0赋值为0后是低电平,赋值非0后为高电平?
电路图补充
真的好谢谢你,终于有所明白了,0xfe就是一个灯亮,0xfc就是两个灯亮呀,试了一下果然这样。不过你之前所说的原理图接成了共阳,那怎样结成共阴呢?是这样吗?
不过这样接了之后就所有的灯都不亮了?究竟什么回事?
1、接个上拉电阻试试吧,不接上拉,你就接到其它端口,如P1,P2等 ……
2、高电平点亮,别搞错了。