2014-02-05 21 views
1

(數組被intialised用一串字符)我想在C51上的LCD打印多維字符數組(凱爾)

我也得到一個錯誤說「數據段太大」當我使陣列更大。如何將數組從「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  
} 

回答

1

你可以把一個變量來XDATA這樣的:

unsigned char xdata variable; 

編輯:另外,當我調用函數這種方式,LCD跳過元素[I] []陣列中的和打印下一個元素[i]。

如果我理解正確,我想你的數組中有一些像0這樣的值,這就是爲什麼它可以跳過它。如果您顯示實際輸出(以文本形式),我可以告訴您更多信息。但至於代碼的正確性,一切都很好。它也可以是LCD的字符表,所以你寫了一些LCD不支持或不知道的錯誤字符。

1

我認爲問題發生是由於char * ptr2.try無符號字符*代替char *