我有一个程序一直调试不出来,单片机控制32个流水灯,求高手,给我修改一下,谢谢
#include<reg52.h>voiddelay(){unsignedchari,j,k;for(i=0;i<50;i++)for(j=0;j<100;j++)for...
#include<reg52.h>
void delay()
{
unsigned char i,j,k;
for(i=0;i<50;i++)
for(j=0;j<100;j++)
for(k=0;k<50;k++)
;
}
void main()
{
unsigned char a[4]={0x80,0x90,0xA0,0xB0};
unsigned char data *p;
unsigned int i,j;
unsigned char LED;
while(1)
{
for(j=0;j<4;j++)
{p=a[j];
LED=0X01;
for(i=0;i<8;i++)
{
*p=~LED;
delay();
LED=LED<<1;
}
}
}
} 展开
void delay()
{
unsigned char i,j,k;
for(i=0;i<50;i++)
for(j=0;j<100;j++)
for(k=0;k<50;k++)
;
}
void main()
{
unsigned char a[4]={0x80,0x90,0xA0,0xB0};
unsigned char data *p;
unsigned int i,j;
unsigned char LED;
while(1)
{
for(j=0;j<4;j++)
{p=a[j];
LED=0X01;
for(i=0;i<8;i++)
{
*p=~LED;
delay();
LED=LED<<1;
}
}
}
} 展开
3个回答
展开全部
你想法倒是挺好的。理论上也应该正确。
不过,你要知道c程序要经过编译连接的。你想的是80h,90h,a0h,b0h代表四个端口的地址。但是经过编译连接后,就不一定是代表四个端口的地址了。具体你可以看看编译连接的有关文章。
你的这个题目我有一个笨方法,不建议采用(已调试过)
#include<reg52.h>
void delay()
{
unsigned char i,j,k;
for(i=0;i<50;i++)
for(j=0;j<100;j++)
for(k=0;k<50;k++)
;
}
void main()
{
// unsigned char a[4]={0x80,0x90,0xA0,0xB0};
// unsigned char data *p;
unsigned int i,j;
unsigned char LED;
while(1)
{
LED=0X01;
for(j=0;j<4;j++)
{
switch (j)
{
case 0:
for(i=0;i<8;i++)
{
P0=~LED;
delay();
LED=LED<<1;
}
LED=0X01;
case 1:
for(i=0;i<8;i++)
{
P1=~LED;
delay();
LED=LED<<1;
}
LED=0X01;
case 2:
for(i=0;i<8;i++)
{
P2=~LED;
delay();
LED=LED<<1;
}
LED=0X01;
case 3:
for(i=0;i<8;i++)
{
P3=~LED;
delay();
LED=LED<<1;
}
}
}
}
}
不过,你要知道c程序要经过编译连接的。你想的是80h,90h,a0h,b0h代表四个端口的地址。但是经过编译连接后,就不一定是代表四个端口的地址了。具体你可以看看编译连接的有关文章。
你的这个题目我有一个笨方法,不建议采用(已调试过)
#include<reg52.h>
void delay()
{
unsigned char i,j,k;
for(i=0;i<50;i++)
for(j=0;j<100;j++)
for(k=0;k<50;k++)
;
}
void main()
{
// unsigned char a[4]={0x80,0x90,0xA0,0xB0};
// unsigned char data *p;
unsigned int i,j;
unsigned char LED;
while(1)
{
LED=0X01;
for(j=0;j<4;j++)
{
switch (j)
{
case 0:
for(i=0;i<8;i++)
{
P0=~LED;
delay();
LED=LED<<1;
}
LED=0X01;
case 1:
for(i=0;i<8;i++)
{
P1=~LED;
delay();
LED=LED<<1;
}
LED=0X01;
case 2:
for(i=0;i<8;i++)
{
P2=~LED;
delay();
LED=LED<<1;
}
LED=0X01;
case 3:
for(i=0;i<8;i++)
{
P3=~LED;
delay();
LED=LED<<1;
}
}
}
}
}
展开全部
*p=~LED;
这个是错误,还有不是i++;是P++;反正里面错误很多
这个是错误,还有不是i++;是P++;反正里面错误很多
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
*p=~LED
改为p=~LED
其他应该没什么问题,
管脚 地址可以看看头文件里定义的是多少
改为p=~LED
其他应该没什么问题,
管脚 地址可以看看头文件里定义的是多少
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询