2015-12-09 26 views
1
char buffer[33]; 
unsigned int rush = 9876; 
sprintf(buffer,"%u",rush); 

在sdcc中實現此代碼。但是,通過使用sprintf函數,我得到ASlink錯誤:無法在區域DSEG的內部RAM中獲得127個連續字節。- 對於區域DSEG,不能在內部RAM中獲得連續字節

任何人都可以請幫助糾正這一點。

我需要將整數值轉換爲字符串以在液晶顯示器上顯示它。

+0

很可能你用完了數據存儲器。 – LPs

+0

你不應該需要一個33字節的陣列烤箱烤箱。 –

+0

哈哈,剛注意到'8051'的標籤。我絕對不會猜到...... :) –

回答

1

不要使用sprintf() - 您的控制器有足夠的RAM來運行烤箱烤箱,就是這樣。

如果您需要在LCD上輸出int/longint,請使用printf/putchar或某個專用循環(NOT RECURSION - 您沒有堆棧),它會生成整數的字符串表示形式char-by-char並將其發送到char-by-char顯示,這樣就避免了你無法承受的RAM緩衝區。

+0

市面上仍有很多8051型號,有些型號的內存綽綽有餘(X)。 –