MIDE-51 – 免費的8051單晶片C語言編譯器

2010/01/30 補齊圖片

首先,先來介紹SDCC到底是蝦米碗糕?

SDCC – Small Device C Compiler,一套功能強大而且免費的C語言編譯器,它小巧(僅2MB)、它超強、沒有程式碼大小的限制、也沒有起始位置必須在0×0800的限制、但它只認識C語言!

不過就因為它體積小,所以是採用Command的方式運行(一分錢一分貨啊),不過這也沒有關係~因為總是有許多好心人幫忙弄出一些不同的東西,那就是MIDE-51啦!!

接下來將介紹如何利用MIDE-51來做8051 C語言的編譯!

我想我還是做點MIDE-51的視窗介紹好了

ToolBar group:工具列,就…工具列啊

Line Number..:行號,方便好用的東西

File Workspace:檔案工作區,你所開啟的檔案列表

Outputmessage:輸出訊息,所有編譯的結果、錯誤、警告…等都在此顯示

程式資訊

【軟體名稱】:Mide-51

軟體語言】:英文

軟體性質】:免費軟體、程式編譯

支援環境】:Windows(含Vista)

軟體網站】http://www.opcube.com/home.html

下載位置】官方頁面官方整合包(推薦)

工具列介紹:

File(檔案):

New: 開新檔案

Open:開啟舊檔

Recent Files:最近使用的檔案

Save:儲存  Save As:另存新檔

Close:關閉檔案  Close All:關閉所有檔案

Print Previews:預覽列印  Print:列印

Exit:離開程式

Edit(編輯):

Undo:復原

Redo:重做

Cut:剪下

Copy:複製

Paste:貼上

Select: All:全選

Find:尋找  Replace:取代  Find next:找下一個

Line number:行號(開啟/關閉)

Preference:偏好設定

Selection(選擇):

字型大小設定

Device(裝置):

選擇晶片類型,用於模擬

Build(建立):

Build:編譯/組譯

Build and Sim:編譯/組譯然後模擬(有內建的程式,但是我不會用)

Build and Burn:編譯/組譯然後燒(須先設定燒錄程式,但是我不會設定)

Windows(視窗):

調整視窗的排列方式

Help(幫助):

裡面有ASEM-51以及SDCC的使用手冊,英文。

而那些快捷按鈕就對照英文就好了,不另外再介紹,造成不方便請見諒!

—開始使用MIDE-51—

介紹玩了常用工具列與中文翻譯之後,相信大家對MIDE-51應該有了初步的認識,接下來我們就要進入正題!

SDCC與Keil C的使用定義有些不同,而且它的定義有些怪怪的,所以我參考8052.tw的影片,自己弄了一個Header檔,內容如下:

(2010/01/30發現:已可使用如Keil C下的語法撰寫程式)

// Header file for SDCC IO define
#ifdef SDCC
#define P0_0 0x80
#define P0_1 0x81
#define P0_2 0x82
#define P0_3 0x83
#define P0_4 0x84
#define P0_5 0x85
#define P0_6 0x86
#define P0_7 0x87

#define P1_0 0x90
#define P1_1 0x91
#define P1_2 0x92
#define P1_3 0x93
#define P1_4 0x94
#define P1_5 0x95
#define P1_6 0x96
#define P1_7 0x97

#define P2_0 0xA0
#define P2_1 0xA1
#define P2_2 0xA2
#define P2_3 0xA3
#define P2_4 0xA4
#define P2_5 0xA5
#define P2_6 0xA6
#define P2_7 0xA7
#endif

請把這些程式碼複製下來,然後用記事本存成一個名為51port.h的檔案。

再來請把這隔Header檔放到C:\MIDE\sdcc\include\mcs51\(安裝程式的路徑),這樣就成為了新的include~

這個Heade對寫程式有很大的幫助喔,請各位別客氣,趕快收下它吧!

使用方法與範例:

/*Single.9 example*/
#include "8051.h" /*SDCC的8051設定*/
#include "51port.h" /*剛剛的Header檔,新版可忽略*/
sbit at P1_0 led;
/*定義8051的P1.0識別名稱為led,
在SDCC的原始設定中是要這樣打的
sbit at 0×90 led;*/
/*-------延遲-------*/
delay(int d)
{
int x, y;
for(x=0; x<d;x++);
for(y=0; y<100; y++);
}
/*-------LED閃爍-------*/
led()
{
int i;
for(i=0; i<2; i++)
{
wled=0; delay(50);
wled=1; delay(50);
}
}
/*-------主程式-------*/
main()
{
while(1)
led(); /*一直閃爍*/
}
我終於找到這一篇文章了,沒想到真的有人轉貼呢!
特別感謝這位網友
—歡迎轉貼,轉貼請附上來源,謝謝
獨夜:

看評論 (7)