1

(配列は一連の文字で初期化されます)

配列を大きくすると、「データ セグメントが大きすぎます」というエラーも表示されます。配列を「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    
}
4

2 に答える 2

1

次のように変数を XDATA に入れることができます。

unsigned char xdata variable;

編集: また、この方法で関数を呼び出すと、lcd は配列内の要素 [i] [] をスキップし、次の要素 [i] を出力します。

私がそれを正しく理解していれば、配列内に 0 のような値があると思います。そのため、それをスキップできます。実際の出力を (テキスト形式で) 表示していただければ、より多くの情報をお伝えできます。しかし、コードの正確さに関しては、すべて問題ありません。また、LCD の文字テーブルである可能性もあるため、LCD がサポートしていない、または認識していない誤った文字を記述します。

于 2014-02-05T22:23:02.327 に答える