今天調出來了跑馬燈用數組和指針實現。
之前出現過幾個問題:
程序描述: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++;
//}
}
}