新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Keil Monitor-51仿真板的制作與使用

        Keil Monitor-51仿真板的制作與使用

        作者: 時間:2012-03-20 來源:網絡 收藏

        例:INSTALL 0 7F 0

        這條命令將設置波特率為9600bps,內部定時器1為波特率發生器,要求CPU時鐘為 11.059MHz,內部變量空間為:X: 0X7F00..X:0x7FFF,監控程序代碼起始地十為:C:0x0000(C表示程序存儲單元)。該命令生成一個 MON51.HEX,將其固化在EPROM中即可

        應該提醒的是,INSTALL批處理命令中主要用到兩個匯編文件:INSTALL.A51和MON_BANK.A51。根據硬件配置的具體情況,可能要作一些修改。

        INSTALL.A51中修改項主要有兩項:

        (1)中斷偏移量設置:當監控程序在ROM中起始地址為0時,采用von Neumann接法的外部數據存儲器起始地址為8000H,則中斷偏移量必須設成8000H,而用戶應用應用將存放在8000H之后。 INSTALL.A51中的INT_ADR_OFF定義如下:

        INT_ADR_OFF EQU 8000H。

        (2)波特率修改:Monitor-51的波特率一般設置成9600bps或自適應。若要改成其它波特率,如4800bps,則修改“InitSerial:”節中的定時器初始化值。

        INSTALL.A51中還有許多其它設置,一般不作修改。

        MON_BANK.A51是為代碼區分組的應用程序安排的,此處不作討論。

        3 中的幾個問題

        按前兩節提供的硬件電路圖和監控程序,如果板與目標系統連接無誤,就可調試。但板與目標系統連接有問題或 C51軟件設置不當會遇到一些麻煩,在程序調試中的主要錯誤與警告有:

        ERROR 22:NO CODE MEMORY AT 0x80xx,這是因為板用于存放用戶程序的外部數據存儲空間與目標系統地址存在沖突。應檢查硬件電路予以解決。

        ERROR L107:ADDRESS SPACE OVERFLOW,這是因為用戶程序大于μVision2中設定的允許長度。可將用戶程序允許長度設到仿真板許可的最大值;若還不能解決,可將程序分段進行調試。

        WARNNING L1:NURESOLVED EXTERNAL SYMBOL,多數程序員都遇到過此警告,這是由于在生成Monitor-51監控程序時(執行INSTALL批處理命令)沒有使用[BANK]選項。解決方法是將Startup.A51文件中第140、141行最前面加“;”號注釋掉。Startup.A51是加入到用戶工程文件中的匯編程序,使用 Monitor-51仿真板必須加入此文件。

        由于Monitor-51仿真板比較簡單,占用了一些系統資源,有時給用戶帶來了不便。程序員實際編程中常要解決以下兩個問題:

        (1)串行接口功能:串行通信是MCS51單片機經常要用到的功能,而MCS-51系列單片機只有一個串行通信接口,在與PC機相連的仿真狀態時,串口用于與 PC機通信。若在應用程序中也用到串行口,就會發生沖突。解決方法是用戶程序裝載完畢后,運行用戶程序,再斷開仿真板與PC機的串行通信線。這樣串口就可歸用戶程序使用了,當然這時PC機就不能在線調試了。

        (2)外部存儲空間:用戶程序越長,占用的外部數據存儲空間將越大。解決的方法是對較長的程序進行分段調試,所有的程序完成后在軟件仿真狀態(不用 Monitor-51仿真板)生成一個完整的HEX文件。另外,如果系統中還有其它接口器件占用外部數據存儲空間,要合理安排。如有一EEPROM要存放歷史數據,可以在調試過程中用#define預處理命令將存放歷史數據的存儲空間定義在較小的范圍內,程序編完后再修改范圍進行編譯生成HEX文件。

        筆者有多年的匯編語言編程經歷,改用 C51后感覺很好,編程效率大為提高。經過一段時間摸索,自制成了Monitor-51仿真板。使用Monitor-51仿真板,給調試程序帶來了極大的方便。雖然仿真板占用了一些系統資源,但經合理安排,一般的應用程序還是可以承受的。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 中江县| 新沂市| 镇康县| 新蔡县| 濉溪县| 乾安县| 敦化市| 百色市| 渭南市| 屯昌县| 阳朔县| 灵宝市| 淄博市| 通榆县| 深水埗区| 麻阳| 云安县| 神池县| 奉节县| 汽车| 驻马店市| 新疆| 翁源县| 茶陵县| 玉屏| 明光市| 方城县| 丹棱县| 马关县| 巴楚县| 台北市| 佛教| 罗城| 二手房| 肥乡县| 乐亭县| 榆树市| 黑龙江省| 邯郸县| 峨眉山市| 比如县|