程式語言已為職場上必備的基礎,在學習每種程式語言一定要會使用整合開發環境(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)
-
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;---------主程式------- ;==>組合語言的註解符號為 ; | |
-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 ;==>程式結束時需加的指令 |
;---------主程式------- ==>組合語言的註解符號為 ;
-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 out 可直接跳出目前所在的副程式
點選一次,由上往下執行,遇到第一個中斷點,在中斷點處停止(P.S.中斷點設定看下方)

在單步執行過程中,可看到黃色箭頭,表示程式計數器(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模式才能開啟
刪除請教要如何讓黃色箭頭出現/消失?
回覆刪除不好意思這部分我也不太清楚
刪除請教要如何讓黃色箭頭出現/消失?
回覆刪除