今天调出来了跑马灯用数组和指针实现。
之前出现过几个问题:
程序描述:
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++;
//}
}
}