LCD出问题
时间:10-02
整理:3721RD
点击:
uchar testData[8] = {0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef};
void LCD_LoadChar(uchar user[8], uchar place)
{
uchar i;
LCD_Write(LCD_COMMAND,0x40|(place*8));
for(i=0; i<8; i++)
LCD_Write(LCD_DATA,user);
LCD_LoadChar(testData[8], 0);
}
为什么错误file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\WML`ZUS$8NCVU(%7M%5VUJI.gif
void LCD_LoadChar(uchar user[8], uchar place)
{
uchar i;
LCD_Write(LCD_COMMAND,0x40|(place*8));
for(i=0; i<8; i++)
LCD_Write(LCD_DATA,user);
LCD_LoadChar(testData[8], 0);
}
为什么错误file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\WML`ZUS$8NCVU(%7M%5VUJI.gif
几处问题:
1)void LCD_LoadChar(uchar user[8], uchar place),去掉8,参数user[8]会当成一个指针,这么做函数根本无从知道数组长度是多少,想要传递数组长度,得另外传递参数。
2)void LCD_LoadChar(uchar user[8], uchar place)在里面又调用自身,结果是无限地调用自身,直到程序死掉。另外,即使你是调用该函数,传递的参数也是错的。前面说了第一个参数会当做指针, 显然你这里的调用传递的不是指针,应这么调用LCD_LoadChar(&testData[8], 0)。
3)变量似乎有点混乱,数组要么就做全局变量在函数内直接使用,要么就传递数组的指针间接使用,不要二者同时使用。
谢谢
