2013年4月30日

Keil uVision2 基本操作 教學



    程式語言已為職場上必備的基礎,在學習每種程式語言一定要會使用整合開發環境(IDE)來撰寫、模擬、編譯、除錯與執行,使用IDE為了增加撰寫與除錯效率,那到底何謂IDE?
    整合開發環境Integrated Development Environment 看看wiki,簡單舉個例,支援C語言的IDE有Dev-C++Eclipse等,支援Java的IDE有NetbeansEclipse等,而下面談到的Keil uVision2 為支援組合語言與C語言 IDE  http://www.keil.com/,且主要用來寫微控制晶片(Microcontroller)控制,那下面開始介紹Keil uVision2(載點)基本操作。(載點失效請留言告知)

想觀看影片教學請點這

基本操作

1.操作環境設定

    新增新的專案

    Project→New Project  (點擊圖片可以放大,點擊旁邊黑色部分可關閉圖片)





    儲存專案

    到要存放專案的地方(建議D:\)
      a.空白處右鍵→新增→資料夾→進入資料夾→輸入檔案(Project)名稱→存檔
      b.或點上角圖示





    選擇Generic CPU Data Base 進入下面視窗(XP才有)→選你所使用的MCU( Atnel內的AT89C51)→確定
 說明:我們選用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                ==>程式結束時需加的指令


以下圖示程式碼格是錯誤!!請以此為準,下面圖示皆少一個-TAB-鍵

閃爍游標所在位置 L:列 C:行 (P.S. 上下為行column,左右為列line/row)



3.程式組譯

組譯當前Target內的檔案


組譯所有的Target內的檔案


停止組譯


 點選組譯按鈕


    如果組譯無誤,則下方出現
    "專案名稱" - 0 Error(s), 0 Warning(s). 即可執行程式碼


4.單步執行(觀察執行結果)-載入程式


    開關Debug:執行除錯或模擬功能

    一些功能介紹(P.S.這些功能需先打開上面的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的程式指令碼




 由此也可看到cpu程式指標位址






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



 滑鼠雙擊左鍵


==================================================================================

進階操作

*快捷鍵

Ctrl+F5
 
F5
 

Ctrl+F10
 

F11
 
Ctrl+F11
 
F10
 
Ctrl+F
 
F3
 Find Next
Ctrl+S
 Save

其他快捷鍵或自訂快捷鍵







下一篇
==================================================================================

Megawin 8051 OCD ICE 燒入程式操作方法

ICE =>In-Circuit Emulator


請見課本  p.267



==================================================================================
8051 Assembly Sample Code


7 則留言:

  1. 感謝您教學用心!圖文並茂一看就懂

    回覆刪除
  2. 請教一下,View底下的"Watch & Call Stack Window"要如何才能打開?

    回覆刪除
    回覆
    1. 沒記錯的話要進入debug模式才能開啟

      刪除
  3. 請教要如何讓黃色箭頭出現/消失?

    回覆刪除
  4. 請教要如何讓黃色箭頭出現/消失?

    回覆刪除

文章有誤或有問題麻煩您留言告知! 謝謝您~~