程式語言已為職場上必備的基礎,在學習每種程式語言一定要會使用整合開發環境(IDE)來撰寫、模擬、編譯、除錯與執行,使用IDE為了增加撰寫與除錯效率,那到底何謂IDE?
整合開發環境Integrated Development Environment 看看wiki,簡單舉個例,支援C語言的IDE有Dev-C++、Eclipse等,支援Java的IDE有Netbeans、Eclipse等,而下面談到的Keil uVision2 為支援組合語言與C語言 IDE http://www.keil.com/,且主要用來寫微控制晶片(Microcontroller)控制,那下面開始介紹Keil uVision2(載點)基本操作。(載點失效請留言告知)
想觀看影片教學請點這
基本操作
1.操作環境設定
新增新的專案
Project→New Project (點擊圖片可以放大,點擊旁邊黑色部分可關閉圖片)儲存專案
到要存放專案的地方(建議D:\)a.空白處右鍵→新增→資料夾→進入資料夾→輸入檔案(Project)名稱→存檔
b.或點右上角圖示
說明:我們選用ATMEL公司的AT89C51 MCU來模擬,其他晶片datasheet可以參考此 http://www.keil.com/dd/
是否要複製8051標準預設程式碼到您的專案資料夾並加到您的專案? NO
設定專案
a. 對所建立的Project名稱→右鍵→Options for Target '專案名稱'b. 或者在上方選擇你的Target,在點選左方的圖示
上面標籤選Debug→Use Simulator→確定
說明:左邊Use Simulator為以模擬的方式Debug(無接上MCU),右邊為實際MCU 硬體模擬/除錯
移除檔案
STARTUR A51檔案移除(如果有的話)新增檔案
開啟一個新檔案 File→New (此檔案即為左上方點選檔案存檔 Save→輸入檔名 需加入副檔名 .asm →存檔
說明:.asm為assembly組合語言之副檔名,.c為C語言副檔名
加入檔案至Source Group1
Source Group1→右鍵→Add Files to Group 'Source Group1'在檔案類型務必先選擇所有檔案All files(才看的到.asm檔)→選剛剛存好的.asm檔→add→close
2.程式的編輯(新增、修改)
程式碼空白處 鍵入兩個-TAB-鍵 (無嚴格規定,組合語言語法會忽略多餘的空白與TAB)
--
;---------主程式------- ==>組合語言的註解符號為 ;
-TAB- -TAB- ORG-TAB-00H ==>此指令為從記憶體00H位址,開始燒入
MOV SP,#5FH
;----------------------
MOV R0,#30H
MOV B,#16
CALL SET_RAM
JMP $ ==>此指令為暫停,類似 C 語言 system("pause")
;---------副程式-------
SET_RAM: -TAB- MOV @R0,#66H
INC R0
DJNZ B,SET_RAM
RET ==>副程式最後必加RET的指令 return 回到 CALL SET_RA的下一個指令
;----------------------
END ==>程式結束時需加的指令
閃爍游標所在位置 L:列 C:行 (P.S. 上下為行column,左右為列line/row)
3.程式組譯
"專案名稱" - 0 Error(s), 0 Warning(s). 即可執行程式碼
4.單步執行(觀察執行結果)-載入程式
開關Debug:執行除錯或模擬功能
執行
停止執行
點選Step into,即按順序執行一個指令的動作後暫停,且會進入副程式 (單步執行不跳副程式)
點選Step over,即按順序執行一個指令的動作後暫停,且會直接跳過副程式,不會進入副程式(單步執行跳副程式) P.S. 雖然它會跳過副程式,但實際上它還是會執行副程式內的程式碼喔!! - 2015/12/29
在單步執行進入副程式後,點選Step out 可直接跳出目前所在的副程式
點選一次,由上往下執行,遇到第一個中斷點,在中斷點處停止(P.S.中斷點設定看下方)
reset CPU重新再單步執行時點選,並把所有值回復到預設值
在單步執行過程中,可看到黃色箭頭,表示程式計數器(PC),指向的指令列上
其功能為使閃爍游標移到該黃色箭頭所指向的指令列上
觀察記憶體內之值
別忘了先打開Debug功能
如下圖為例此程式為,將30H~3FH存入66H
在右下方記憶體位址觀看記憶體位址30H~3FH內容的改變
在memory視窗上方的Address:中輸入 d:30H
d:觀看某記憶體位址所存放暫存器的數值
c:觀看某cpu程式指標位址(存放程式碼指令)
執行前
執行後
可以看到位址0x30~0x3F符合程式結果,皆存放66H
由程式碼ORG 00H得知程式由記憶體位址0開始燒入,故輸入c:0可以看到cpu程式指標位址0的程式指令碼
5.修改記憶體內容
開啟記憶體視窗(前提要先打開Debug功能)
再要修改記憶體內容的值的上方按右鍵,點選 Modify Memory at 位址
點選後輸入要更改的內容值,請加上H表示十六進制,位加視為時進制
為加上H轉換十六進制為16
6.組譯錯誤的修正
範例:組譯錯誤的情形
看到下面的錯誤訊息:在錯誤訊息上滑鼠左鍵雙擊,會指向在檔案內程式碼錯誤的位置
Build target 'Target 1'
assembling Text1.asm...
Text1.asm(12): error A45: UNDEFINED SYMBOL (PASS-2) ==>第12行有錯誤:未下定義的符號(標記名)
Text1.asm(16): warning A41: MISSING 'END' STATEMENT ==>第16行有警告:漏掉END 敘述
Target not created
解決方法:
第12行的 CLR_RAM 改成有被定義的 SET_RAM (順便一提課本291頁下面指令碼此處錯誤)
第16行後加入END
視窗檔案消失
View→Project Windows/Output Windows
滑鼠雙擊左鍵
下一篇
==================================================================================
請見課本 p.267
==================================================================================
8051 Assembly Sample Code
*常見的問題
檔案放大後如何縮小視窗檔案消失
View→Project Windows/Output Windows
==================================================================================
進階操作
*快捷鍵
其他快捷鍵或自訂快捷鍵
==================================================================================
Megawin 8051 OCD ICE 燒入程式操作方法
ICE =>In-Circuit Emulator請見課本 p.267
==================================================================================
8051 Assembly Sample Code
感謝您教學用心!圖文並茂一看就懂
回覆刪除謝謝 ^o^
刪除請教一下,View底下的"Watch & Call Stack Window"要如何才能打開?
回覆刪除沒記錯的話要進入debug模式才能開啟
刪除請教要如何讓黃色箭頭出現/消失?
回覆刪除不好意思這部分我也不太清楚
刪除請教要如何讓黃色箭頭出現/消失?
回覆刪除