Robofun 機器人論壇

標題: C2051於Keil C 之C語言記憶體啟始位置 [打印本頁]

作者: draw3299    時間: 2008-11-3 22:47
標題: C2051於Keil C 之C語言記憶體啟始位置
第一次使用89C2051發生了一件怪事,也是因為在下才疏學淺,所以才會發生此問題,故與大家報告一下,內容較為膚淺,請見諒。

剛剛提到第一次使用89C2051時,發生了一件怪事,我使用的軟體是Keil C DEMO版,然而小弟我比較熟析C語言,所以剛開始就是使用C語言下去測試C2051,但是當我Compile完且燒入置晶片內後,發現沒有任何動作在作用,明明只是寫個讓LED燈亮面的CODE,卻一點反應都沒有;後來我使用組合語言後,居然可以Run出來,當下百思不得其解。

後來看書後發現,原來DEMO版的Keil C在C語言的程式記憶體起始位置設定在800H的位置,然而89C2051的記憶體只有2K,故其範圍在0H~7FFH,沒錯,剛好超過,所以我之前寫的程式記憶體之起始位置都在800H以後,難怪燒錄後不能執行,難怪組合語言可以執行,因為組合語言一開始都會打ORG 0H來設定起使位置。

Keil C正式版的就沒這個問題,沒有2K的限制。

這訊息我想大家應該都知道了,不過偏偏我就不知道.....

如果有錯誤請指正
作者: yyy    時間: 2008-11-12 20:49
原帖由 draw3299 於 2008-11-3 22:47 發表
第一次使用89C2051發生了一件怪事,也是因為在下才疏學淺,所以才會發生此問題,故與大家報告一下,內容較為膚淺,請見諒。

剛剛提到第一次使用89C2051時,發生了一件怪事,我使用的軟體是Keil C DEMO版,然而小弟 ...
Keil C正式版的就沒這個問題,沒有2K的限制。

請教樓主大大,
那就要用正式版的囉,沒辦法解決嗎?
作者: nichal    時間: 2008-11-12 20:56
改用4051就解決啦

作者: avr    時間: 2008-11-12 21:01
原帖由 nichal 於 2008-11-12 20:56 發表
改用4051就解決啦
請教一下大大,那前面的2k不就浪費掉了嗎?
作者: nichal    時間: 2008-11-13 07:45
是呀
就浪費掉囉
既然是試用版的
當然沒辦法全功能開放
權宜之計就是這樣囉

而2051與4051的價差不算大
等程式真的寫到超過2K再想辦法找一套正版的Keil C
MCU也不用換
原來的程式也不用改
看你怎麼想囉

一套原版的Keil C好像要兩千多塊美金
如果真的沒辦法
就用組語寫
組語保證是每一家都一樣
ALL FREE~~~
作者: irobot    時間: 2008-11-13 21:58
Hi,
我也有用過 2051,當時就只是從 www.opcube.com 那裡下載 MIDE-51 Studio 這個免費軟體來寫 C 語言。
不過也不知道這個好不好,反正可以用來寫些小玩兒就是了。
作者: avr    時間: 2008-11-14 11:49
原帖由 irobot 於 2008-11-13 21:58 發表
Hi,
我也有用過 2051,當時就只是從 www.opcube.com 那裡下載 MIDE-51 Studio 這個免費軟體來寫 C 語言。
不過也不知道這個好不好,反正可以用來寫些小玩兒就是了。

謝謝nichal和irobot兩位大大,
那請問要如何下載和安裝MIDE-51 Studio 這個免費軟體呢?
它的功能不會跳掉前面2k的位置吧??
作者: pcedison    時間: 2008-11-14 12:44
該網頁最下面,倒數第二個框框,他的左上就有下載點囉

這套我沒用過,所以會不會跳掉前面 2K 就要你自己測試看看了!

加油!
作者: irobot    時間: 2008-11-14 20:22
應該不會跳掉前面的flash,因試過差不多用盡 2k 的 flash 也沒有問題。
而且 2051 還是我第一顆用的 mcu 呢,當時用這 MIDE-51寫程式和燒錄出來完全沒有問題呢。
(後來才看到在翻譯出來的組語 第一句好像是可以控制程式放到 flash 的什麼地方,不過也沒有再特別研究。)
作者: nichal    時間: 2008-11-14 23:15
真巧
我用的第一個MCU也是2051
呵呵~~~~




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2