一共8个LED小灯
程序一可以实现流水灯功能
程序二不知道哪里错了 8个小灯长亮
如下求各位大神指导
程序一(正确的):
#include <reg52.h>
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
void ShiftLeft(unsigned char *p);
void main()
{
unsigned int i;
unsigned char buf = 0x01;
ENLED = 0; //使能选择独立LED
ADDR3 = 1;
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;
while (1)
{
P0 = ~buf;
for(i=0; i<20000; i++);
ShiftLeft(&buf);
if(buf == 0)
{
buf = 0x01;
}
}
}
void ShiftLeft(unsigned char *p)
{
*p = *p << 1;
}
程序二(错误的):
#include <reg52.h>
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
void ShiftLeft (unsigned char *p);
void main ()
{
unsigned char buf = 0xFE;
unsigned int i = 0;
ENLED = 0; //使能74HC138和LED总开关
ADDR3 = 1;
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;
while (1)
{
P0 = buf;
for (i=0; i<20000; i++);
ShiftLeft(&buf);
if(buf == 0xFF)
{
buf = 0xFE;
}
}
}
void ShiftLeft(unsigned char *p)
{
*p = *p << 1;
}
程序一可以实现流水灯功能
程序二不知道哪里错了 8个小灯长亮
如下求各位大神指导
程序一(正确的):
#include <reg52.h>
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
void ShiftLeft(unsigned char *p);
void main()
{
unsigned int i;
unsigned char buf = 0x01;
ENLED = 0; //使能选择独立LED
ADDR3 = 1;
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;
while (1)
{
P0 = ~buf;
for(i=0; i<20000; i++);
ShiftLeft(&buf);
if(buf == 0)
{
buf = 0x01;
}
}
}
void ShiftLeft(unsigned char *p)
{
*p = *p << 1;
}
程序二(错误的):
#include <reg52.h>
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
void ShiftLeft (unsigned char *p);
void main ()
{
unsigned char buf = 0xFE;
unsigned int i = 0;
ENLED = 0; //使能74HC138和LED总开关
ADDR3 = 1;
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;
while (1)
{
P0 = buf;
for (i=0; i<20000; i++);
ShiftLeft(&buf);
if(buf == 0xFF)
{
buf = 0xFE;
}
}
}
void ShiftLeft(unsigned char *p)
{
*p = *p << 1;
}