(数组由一串字符初始化)
当我使数组变得更大时,我也收到一个错误,说“数据段太大”。如何将数组从"CODE“复制到"XDATA"?或者这不是问题所在?
编辑:同样,当我以这种方式调用函数时,lcd跳过数组中的元素i,并打印下一个元素i。
任何帮助我都将不胜感激。
unsigned char piece [4] [8];
lcd_msg_write(piece[0]); //rank
lcd_write(SecondLine);
lcd_msg_write(piece[1]);
lcd_write(SecondLine);
lcd_msg_write(piece[2]);
lcd_write(SecondLine);
lcd_msg_write(piece[3]);
lcd_write(SecondLine);
void lcd_msg_write(char * ptr2)
{
int x;
RS = 1;
for (x=0; x<8;x++)
lcd_write(*ptr2++); //write till end of string reached
RS = 0;
}
void lcd_write(unsigned char display_data)//LCD 1 {
EN = 1;
P0 = display_data;
EN = 0;
delay_5msec(); //delay to allow write operation to complete
}发布于 2014-02-06 06:23:02
您可以将变量放入扩展数据,如下所示:
unsigned char xdata variable;lcd :同样,当我以这种方式调用函数时,
跳过数组中的元素i并打印下一个元素i。
如果我理解正确的话,我想你的数组里面有一些像0这样的值,这就是为什么它可以跳过它。如果您显示真实的输出(以文本形式),我可以告诉您更多信息。但至于代码的正确性,一切都没问题。它也可以是LCD的字符表,因此您写入了一些LCD不支持或不知道的错误字符。
发布于 2014-05-13 18:48:41
我认为问题是由于char *ptr2.尝试无符号的char *而不是char *
https://stackoverflow.com/questions/21588593
复制相似问题