LED灯控制程序问题,有人能帮忙解决一下么?
时间:10-02
整理:3721RD
点击:
控制8个流水灯闪烁。程序1无法实现,程序2可实现。
程序1:实验结果是,8个灯全亮后,仅第一个灯开始闪烁。
#include <reg52.h>
#define uint unsigned int
void delay (uint);
void main ()
{
while (1)
{
P1=0;
delay (300);
P1=1;
delay (300);
}
}
void delay (uint c)
{
uint a,b;
for (a=100;a>0;a--)
for (b=c;b>0;b--);
}
程序2:可以实现
#include <reg52.h>
#define uint unsigned int
void delay (uint);
sbit D0=P1^0;
sbit D1=P1^1;
sbit D2=P1^2;
sbit D3=P1^3;
sbit D4=P1^4;
sbit D5=P1^5;
sbit D6=P1^6;
sbit D7=P1^7;
void main ()
{
while (1)
{
P1=0;
delay (300);
D0=D1=D2=D3=D4=D5=D6=D7=1;
delay (300);
}
}
void delay (uint c)
{
uint a,b;
for (a=100;a>0;a--)
for (b=c;b>0;b--);
}
程序1:实验结果是,8个灯全亮后,仅第一个灯开始闪烁。
#include <reg52.h>
#define uint unsigned int
void delay (uint);
void main ()
{
while (1)
{
P1=0;
delay (300);
P1=1;
delay (300);
}
}
void delay (uint c)
{
uint a,b;
for (a=100;a>0;a--)
for (b=c;b>0;b--);
}
程序2:可以实现
#include <reg52.h>
#define uint unsigned int
void delay (uint);
sbit D0=P1^0;
sbit D1=P1^1;
sbit D2=P1^2;
sbit D3=P1^3;
sbit D4=P1^4;
sbit D5=P1^5;
sbit D6=P1^6;
sbit D7=P1^7;
void main ()
{
while (1)
{
P1=0;
delay (300);
D0=D1=D2=D3=D4=D5=D6=D7=1;
delay (300);
}
}
void delay (uint c)
{
uint a,b;
for (a=100;a>0;a--)
for (b=c;b>0;b--);
}
P1 = 1 改为 P1 = 0xFF试一下
成功了,谢谢!
你要分清楚是对IO的操作还有IO位的操作!
P1=~P1;试一下