嵌入式问题之(数组定义)

今天调出来了跑马灯用数组和指针实现。

之前出现过几个问题:

程序描述:

s3c2440addr.h中定义了LED1_ON,LED2_ON,LED3_ON和LED4_ON;

将他们放入数组中这样定义:

unsigned char const arrange[]={LED1_ON,LED2_ON,LED3_ON,LED4_ON};

然后调用数组中的值是,led第三和第四个等一直是亮的,没有实现跑马灯的效果,而且在数组处出现了警告。

于是定义了一个指针,看看是数组出了问题还是函数体里出了问题;

指针式这样定义的,unsigned char *p,p=arrange;

此时出现错误(原因是没有const,因为定义数组时有一个const,将指针改成unsigned char const *p没有错误依然是数组处有4个警告);

后来发现,我的LED1_ON等都是数字而数组定义的却是字符,

于是将数组定义为:

unsigned int arrange[]={LED1_ON,LED2_ON,LED3_ON,LED4_ON}4个警告消失,程序运行成功。

#include"s3c2440addr.h"

//unsigned char const arrange[]=

{LED1_ON,LED2_ON,LED3_ON,LED4_ON}; //这里的char用错了

//可以这样定义 unsigned int const  arrange[]=

{LED1_ON,LED2_ON,LED3_ON,LED4_ON}; 

//但是指针就要这样定义:unsigned int const *p; 

unsigned int  arrange[]={LED1_ON,LED2_ON,LED3_ON,LED4_ON};

void delay(unsigned int x)
{
 unsigned int i,y;
 for(i=x;i>0;i--)
 for(y=10000;y>0;y--);
}
void main()
{
 int num;
 unsigned int  *p;
 p=arrange;
 GPBCON=0x1DD7FC;
 while(1)
 {
  //for(num=0;num<4;num++)
  //{ 
   if(p==arrange+5)
   {
    p=arrange;
   }
   GPBDAT=*p;
   delay(5000);
   p++;

  //}
 }
}

永不止步步 发表于11-11 15:24 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67417个|学分:363791个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号