51单片机C语言编程问题,关于指针的运用问题,菜鸟求解求。
自己编了下面的程序:(高手勿笑)#include<reg51.h>inta[]={0x90,0x80,0xf8,0x82,0x92,0x99,0xb0,0xa4,0xcf...
自己编了下面的程序:(高手勿笑)
#include<reg51.h>
int a[ ]={0x90,0x80,0xf8,0x82,0x92,0x99,0xb0,0xa4,0xcf,0xc0};
int *pa;
sbit p25=P2^5;
sbit p26=P2^6;
sbit p27=P2^7;
int time1,time2;
void main()
{
P1=0xfe;
p25=0,p26=0,p27=0;
while(1)
{
pa=&a[0];
for(pa=9;pa>0;pa--)
{
P0=*pa;
for(time1=9801;time1>0;time1--)
{
time2=8;
while(time2--);
}
}
}
}
问题出在P0=*pa;语句上,请问是不是我这个语句错在那里?
问题出在P0=*pa;语句上,请问我这个语句错在那里?
如果我改成这样:
#include<reg51.h>
int a[ ]={0x90,0x80,0xf8,0x82,0x92,0x99,0xb0,0xa4,0xcf,0xc0};
sbit p25=P2^5;
sbit p26=P2^6;
sbit p27=P2^7;
int time1,time2,i;
void main()
{
P1=0xfe;
p25=0,p26=0,p27=0;
while(1)
{
for(i=9;i>0;i--)
{
P0=a[i];
for(time1=9801;time1>0;time1--)
{
time2=8;
while(time2--);
}
}
}
}
就没有问题了。 展开
#include<reg51.h>
int a[ ]={0x90,0x80,0xf8,0x82,0x92,0x99,0xb0,0xa4,0xcf,0xc0};
int *pa;
sbit p25=P2^5;
sbit p26=P2^6;
sbit p27=P2^7;
int time1,time2;
void main()
{
P1=0xfe;
p25=0,p26=0,p27=0;
while(1)
{
pa=&a[0];
for(pa=9;pa>0;pa--)
{
P0=*pa;
for(time1=9801;time1>0;time1--)
{
time2=8;
while(time2--);
}
}
}
}
问题出在P0=*pa;语句上,请问是不是我这个语句错在那里?
问题出在P0=*pa;语句上,请问我这个语句错在那里?
如果我改成这样:
#include<reg51.h>
int a[ ]={0x90,0x80,0xf8,0x82,0x92,0x99,0xb0,0xa4,0xcf,0xc0};
sbit p25=P2^5;
sbit p26=P2^6;
sbit p27=P2^7;
int time1,time2,i;
void main()
{
P1=0xfe;
p25=0,p26=0,p27=0;
while(1)
{
for(i=9;i>0;i--)
{
P0=a[i];
for(time1=9801;time1>0;time1--)
{
time2=8;
while(time2--);
}
}
}
}
就没有问题了。 展开
展开全部
#include<reg51.h>
int a[ ]={0x90,0x80,0xf8,0x82,0x92,0x99,0xb0,0xa4,0xcf,0xc0};
int *pa;
sbit p25=P2^5;
sbit p26=P2^6;
sbit p27=P2^7;
int time1,time2;
uint i; //添加个循环控制变量
void main()
{
P1=0xfe;
p25=0,p26=0,p27=0;
while(1)
{
pa=&a[0]; //指针指向数组首地址
// for(pa=9;pa>0;pa--) //这里就有问题了,指针值=9,
//那就相当于硬件地址为9的存储单元的内容
for(i=9;i>=0;i--) //多定义一个循环变量就可以解决
{
// P0=*pa; //这样的取值需要修改下
P0=*(pa+i); //数组逆序读出
for(time1=9801;time1>0;time1--)
{
time2=8;
while(time2--);
}
}
}
}
int a[ ]={0x90,0x80,0xf8,0x82,0x92,0x99,0xb0,0xa4,0xcf,0xc0};
int *pa;
sbit p25=P2^5;
sbit p26=P2^6;
sbit p27=P2^7;
int time1,time2;
uint i; //添加个循环控制变量
void main()
{
P1=0xfe;
p25=0,p26=0,p27=0;
while(1)
{
pa=&a[0]; //指针指向数组首地址
// for(pa=9;pa>0;pa--) //这里就有问题了,指针值=9,
//那就相当于硬件地址为9的存储单元的内容
for(i=9;i>=0;i--) //多定义一个循环变量就可以解决
{
// P0=*pa; //这样的取值需要修改下
P0=*(pa+i); //数组逆序读出
for(time1=9801;time1>0;time1--)
{
time2=8;
while(time2--);
}
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询