專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計實(shí)例 >> 瀏覽文章

把EasyPro51編程器的源代碼修改在SDCC上,編譯運(yùn)行通過

作者:萬致遠(yuǎn)   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時間:2012年08月28日   【字體:

 

  因?yàn)槲矣悬c(diǎn)時間就去開發(fā)51單片機(jī)。發(fā)現(xiàn)在Linux(Debian和Ubuntu上)無法編譯51單片機(jī)程序,只好在網(wǎng)上下了個Keil.然后就是wine仿真。但是老崩潰。代碼也有問題。然后又改成了在虛擬機(jī)里跑。但是還是不爽!知道發(fā)現(xiàn)了SDCC后才知道了什么叫方便。一些Keil中的語法在SDCC中要更正。

比如說P0.1口的LED.點(diǎn)亮他在Keil中這么寫

sbit LED=P0^1; 
 void XXXX(void) 
 { 
 LED=1; 
 LED=0; 
 while (1){} 
}

但是在sdcc中卻通不過。網(wǎng)上查了下,要用這種方法:

__sbit __at 0x80 LED; 
 //或者#define LED P0_1 
 void XXXX(void) 
 { 
 LED=1; 
 LED=0; 
 while (1){} 
 }

這才是正確的。

還有在sdcc中的一些細(xì)節(jié)寫法,比如說

unsigned char Data;

while (!ReadData()==Data){}

這就是有錯的。因?yàn)樵?sdcc中,你沒有把Data定義成signed char .所以他會報錯,說這個不是有符號位的。

在sdcc的寫法是:(ReadData!=Data).

好的。修改后通過編譯和燒寫的E51PRO源代碼在這里:EP5-SDCC-src.tar.bz2
 

關(guān)閉窗口

相關(guān)文章