(数组是用一堆字符初始化的)
当我将数组放大时,我也收到一条错误,说“数据段太大”。如何将数组从“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
}
答案 0 :(得分:1)
您可以将变量放到XDATA中,如下所示:
unsigned char xdata variable;
编辑:当我以这种方式调用函数时,lcd跳过数组中的元素[i] []并打印下一个元素[i]。
如果我理解正确,我想你的数组中有一些像0这样的值,这就是为什么它可以跳过它。如果您显示实际输出(以文本形式),我可以告诉您更多信息。但至于代码的正确性,一切都还可以。它也可以是LCD的字符表,所以你写了一些LCD不支持或不知道的错误字符。
答案 1 :(得分:1)
我认为问题是由于char * ptr2.try unsigned char *代替char *
而发生的