程序要實現的功能如下:
//首先,把二維數組Color_Library中的[9][0~7]的數據,賦值給一維數據WsDat[0~103],再調用顯示函數Display_Color(WsDat[c]);發送到對應的LED燈珠上。
//然后,把二維數組Color_Library中的[10][0~7]的數據,重新賦值給一維數據WsDat[0~103],再調用顯示函數Display_Color(WsDat[c]);發送到對應的LED燈珠上。
C51程序如下所示,我試著改了三種不同的書寫方式,只有第三種才能正確運行。請各位大神幫忙看下,為什么會出現下述情況!
//第一種寫法,如下所示;在IAP15W4K58S4最小系統中運行出錯。LED燈珠無顯示。
void WaterLampToColor28()
{
unsigned char a,b,c,d;
for(d=0;d<2;d++)
{
for(a=0;a<13,a++)
{
for(b=0;b<8;b++)
{
WsDat[b+a*8]=Color_Library[d+9][b ];
}
}
for(c=0;c<LED_num;c++)
{
Display_Color(WsDat[c]);
}
Delay_Xms(7);
}
}
//如下所示,第二種書寫方式,在IAP15W4K58S4最小系統上運行仍然錯誤。LED燈珠無顯示。
void WaterLampToColor28()
{
unsigned char a,b,c;
for(a=0;a<13;a++)
{
for(b=0;b<8;b++)
{
WsDat[b+a*8]=Color_Library[9][b ];
}
}
for(c=0;c<LED_num;c++)
{
Display_Color(WsDat[c]);
}
Delay_Xms(7);
for(a=0;a<13;a++)
{
for(b=0;b<8;b++)
{
WsDat[b+a*8]=Color_Library[10][b ];
}
}
for(c=0;c<LED_num;c++)
{
Display_Color(WsDat[c]);
}
Delay_Xms(7);
//第三種書寫方式,在IAP15W4K56S4最小系統上運行正常。
void WaterLampToColor28()
{
unsigned char a,b,c,d,e,f;
for(a=0;a<13;a++)
{
for(b=0;b<8;b++)
{
WsDat[b+a*8]=Color_Library[9][b ];
}
}
for(c=0;c<LED_num;c++)
{
Display_Color(WsDat[c]);
}
Delay_Xms(7);
for(d=0;d<13;d++)
{
for(e=0;e<8;e++)
{
WsDat[e+d*8]=Color_Library[10][e];
}
}
for(f=0;f<LED_num;f++)
{
Display_Color(WsDat[f]);
}
Delay_Xms(7);
}
|