仿真機介紹
Keil c51 是為8051單片機開發設計的功能強大開發軟件。Mon51仿真器便是基于Keil C51軟件的仿真器,雖然它的功能有所限制,但對于初學者來說可以用來入門。

一、安裝MON51板
1、DB9插座必須用“公”的(針), 且必須按“C:\Keil\C51\MON51\MON51.PDF”說明第二頁圖示在印制板上飛線將DB9插座的7和8腳,1和4和6腳分別短接(有些印制電路板上布好
的連線并不包含該線);如果DB9插座已經焊了“母”的(孔),建議想辦法換掉(先將兩固定腳的焊錫用電烙鐵融化,用吸錫器吸出,9根信號腳
用電烙鐵堆錫,然后乘焊錫未凝固迅速拔出,最后清理焊盤重新焊接); 如果非要使用“母”的(孔),則不能使用市面上買的標準串口線,須自制,印制電路板MAX232至DB9插座的連線必須劃斷重新飛線,并保證
仍然滿足“C:\Keil\C51\MON51\MON51.PDF”說明第二頁圖示電氣要求;
2、所有集成塊處焊IC座以方便更換集成塊(畢盡我們都是第一次做MON51且通常僅做一塊嘛,難免會出問題);
3、晶振用11.0592MHz,AT89C52的18和19腳至40芯扁平電纜插座的連線要劃斷;
4、有些Keil Monitor-51板有兩個三針跳線,一個用來選擇復位鍵是用Keil Monitor-51板的還是目標板的;另一個用來選擇5V是用Keil
Monitor-51板的還是目標板的;
5、按照印制版絲印參數安裝元件,注意極性元件的方向;
6、注意74HC573(或74LS573)與74HC373(或74LS373)不可直接互換,因為雖然它們功能相同,但引腳的功能排列不一樣;
7、如果計算機空閑串口為9芯,通訊線可在市面上購買9芯標準串行線(兩頭均為9芯"母"的(孔),非modem線),也可自制,內部連線為: 5----------5 3----------2 7----------8 9芯"母"(孔)頭 6----------4 9芯"母"(孔)頭 2----------3 8----------7 4----------6
若電腦串口插座為老式擋板條結構,請確認內部已正確連到主板,若電腦9芯串口已被鼠標占用,僅剩25芯串口,可在市面上購買一頭25芯
一頭9芯的串行線(兩頭均為"母"的(孔),非modem線)或直接自制,內部連線為: 2----------2 3----------3 4----------6+8 9芯"母"(孔)頭 5----------7 25芯"母"(孔)頭 6+1----------20 7----------5 8----------4 也可加裝一25芯("母"(孔))串口轉9芯("公"(針))串口轉換器,配9芯標準串行線;
用萬用表確認內部連線正確;
8、可在DOS方式下在“c:\keil\c51\mon51”子目錄運行“install 0 ff 0”,即可生成MON51.HEX文件,將其用編程器寫到AT89C52中,再插到
印制板上; 也可直接下載“www.c51bbs.com”主頁的文件“MON51.zip”,用winzip展開其中的“MON51.HEX”,用編程器寫到AT89C52中; 沒有編程器的朋友可將文件“MON51.HEX”和AT89C52芯片交給單位(或個人)有編程器的朋友幫忙;如果朋友都沒有編程器,也可問問單
片機編程器代理商能否幫忙,可能需付點錢;
9、如果Keil Monitor-51板沒有整流橋電路但有7805,外接電源必須用9V-12V左右的直流適配器,并注意極性; 如果Keil Monitor-51板有整流橋電路,外接電源可用9V-12V左右的交流適配器(如某些modem的電源適配器)或直流適配器,此時直流適
配器并不需要注意極性; 通電時電源指示發光二極管應點亮,用萬用表20V或以上直流電壓檔測7805輸出應為5V;
二、連線及設置
1、串行線一頭接計算機,并記下是COM1還是COM2,另一頭接Keil Monitor-51板DB9插座;
2、電源適配器接Keil Monitor-51板電源插座;
3、拔下目標板被仿真的AT89C52芯片,將仿真頭擦在原來擦AT89C52的IC座上,仿真線40芯扁平電纜插頭接Keil Monitor-51板40芯扁平電纜插
座上;在沒有目標板的情況下也可調試一些對端口操作的簡單程序,用萬用表或發光二極管觀測Keil Monitor-51板AT89C52端口電平;
4、若Keil Monitor-51板有跳線則根據自己的要求跳線,在沒有目標板的情況下,設為選擇Keil Monitor-51板的復位鍵和5V電源;
三、軟件調試
1、開機,運行Keil uVision2;
2、創建工程;
鼠標左鍵單擊主菜單“Project”---------- 鼠標左鍵單擊子菜單“New Project”--------- 彈出“Creat New Project”對話框--------- 用鼠標在“保存在”下拉框選擇你要保存的文件夾(比如“我的文檔”)---------- 在“文件名”文本框處用鍵盤敲入你給這個工程起的工程名(如“test1”)---------- 鼠標左鍵單擊“保存”按鍵---------- 彈出"Select Device for Target 'Target1'"對話框--------- 用鼠標在左邊列表框“Data Base”區雙擊ATMEL或單擊ATMEL前的“+”號---------- ATMEL子選項展開---------- 用鼠標左鍵單擊“89C52”---------- 用鼠標左鍵單擊“確定”按鍵--------
3、建立源程序;
A、匯編程序
鼠標左鍵單擊菜單“File”---------- 鼠標左鍵單擊菜單“New”--------- 在新建的文本窗口(Text1)中用鍵盤鍵入你的匯編程序 ( 例如使P1.0輸出高低電平的源程序:
ORG 8000H LOOP: SETB P1.0 LCALL DELAY CLR P1.0 LCALL DELAY AJMP LOOP DELAY: MOV R7,#250 D1: MOV R6,#250 D2: DJNZ R6,D2 DJNZ R7,D1 ret end
)------ 鼠標左鍵單擊菜單File------ Save as--------- 在新建的文檔中鍵入你的匯編程序-------- 彈出Save As對話框---- 用鼠標在"保存在"下拉框選擇你要保存的文件夾(比如"我的文檔")-------- 在“文件名”文本框處用鍵盤敲入你給這個工程起的工程名(如"test1.a51")-------- 鼠標左鍵單擊“保存”按鍵 在左邊資源管理器用鼠標左鍵雙擊“Target 1”或單擊“Target 1”前的“+”號----- 鼠標右鍵單擊Source Group-------- 彈出“Add file to Group 'Source Group 1'”------ “文件類型”選“asm source file (*.a*)”--- 找到"test1.a51"文件,鼠標左鍵單擊該文件-------- 鼠標左鍵單擊“Add”---- 鼠標左鍵單擊“Close”----
修改程序直到鼠標左鍵單擊主菜單“Project”------ 鼠標左鍵單擊子菜單“Built target”------ 下邊窗口顯示""test1"-0 Errors(s),0 Warning(s)"--------
B、C51程序
鼠標左鍵單擊菜單“File”------ 鼠標左鍵單擊菜單“New”---------在新建的文本窗口“Text 1”中用鍵盤鍵入 你的C51程序 (
/*------------------------------------------------------------------------------ HELLO.C
Copyright 1995-1999 Keil Software, Inc. ------------------------------------------------------------------------------*/
#include /* special function register declarations */ /* for the intended 8051 derivative */
#include /* prototype declarations for I/O functions */
#ifdef MONITOR51 /* Debugging with Monitor-51 needs */ char code reserve [3] _at_ 0x23; /* space for serial interrupt if */ #endif /* Stop Exection with Serial Intr. */ /* is enabled */
/*------------------------------------------------ The main C function. Program execution starts here after stack initialization. ------------------------------------------------*/ void main (void) {
/*------------------------------------------------ Setup the serial port for 1200 baud at 16MHz. ------------------------------------------------*/
#ifndef MONITOR51 SCON = 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr */ TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */ TH1 = 221; /* TH1: reload value for 1200 baud @ 16MHz */ TR1 = 1; /* TR1: timer 1 run */ TI = 1; /* TI: set TI to send first char of UART */ #endif
/*------------------------------------------------ Note that an embedded program never exits (because there is no operating system to return to). It must loop and execute forever. ------------------------------------------------*/ while (1) { P1 += 0x01; /* Toggle P1.0 each time we print */
//My Add // delay();//大約二秒 // P1=0xff; // delay(); //My Add
// printf ("Hello World\n"); /* Print "Hello World" */ } }
)------ 鼠標左鍵單擊菜單file------ save as--------- 在新建的文檔中鍵入你的匯編程序-------- 彈出Save as對話框---- 用鼠標在"保存在"下拉框選擇你要保存的文件夾(比如"我的文檔")-- 在“文件名”文本框處用鍵盤敲入你給這個文件起的文件名(如"testc51.c51")-------- 鼠標左鍵單擊左邊列表框Target1----- 鼠標右鍵單擊Source Group-------- 彈出Add file to Group 'Source Group 1'------ 文件類型選c source file (*.c)--- 找到"testc51.c51"鼠標左鍵單擊該文件-------- 鼠標左鍵單擊"add"------- 找到"C:\KEIL\C51\LIB\Startup.a51"鼠標左鍵單擊該文件-------- 鼠標左鍵單擊"add"---- 鼠標左鍵單擊"close" -------- 將 "Startup.a51"的"CSEG AT 0"改為"CSEG AT 08000H"
修改程序直到鼠標左鍵單擊菜單“Project”------ 鼠標左鍵單擊子菜單“Built target”------ 下邊窗口顯示""test1"-0 Errors(s),0 Warning(s)"
4、設置參數;
用鼠標左鍵單擊主菜單“Project”------ 用鼠標左鍵單擊子菜單“Options for Target 'Target1'”-------- 彈出“Options for Target 'Target1'”對話框------ 在“Target”標簽下修改“Xtal(Mhz)”為“11.0592”-------- 在“Output”標簽下,選中“Create HEX file”(如果你要生成hex文件用編程器寫到目標板的 89C52單片機中)------- 在“C51”標簽下修改“Interrupt vectors at address”為“0x8000”---- 在“BL51 Locate”標簽“Code”中填入“0x8000”------ 在“debug”標簽選中“Use keil monitor-51 driver”-------- 用鼠標左鍵單擊"Setting"按鍵------- 根據你用的串口用鼠標選擇Port------ 左鍵單擊"ok"按鍵---- 選中“Load Application at Start”--------- 選中“Go till main()”---
用鼠標左鍵單擊"確認"按鍵------- 其余缺省
5、仿真調試;
用鼠標左鍵單擊主菜單“Debug”------ 用鼠標左鍵單擊子菜單“Start/Stop Debug Session”---- 用鼠標左鍵單擊主菜單“Peripheral”---- 用鼠標移到子菜單“I/O - Ports”---- 用鼠標左鍵單擊子菜單“Port1”--- 用鼠標左鍵單擊子菜單“View”--- 用鼠標左鍵單擊子菜單“Periodic Window Update”--- 切換到你的源程序窗口---- 將光標移到開頭的一條可執行語句上---- 用鼠標左鍵單擊主菜單“Debug”------ 用鼠標左鍵單擊子菜單“Run to Cursor line”------ 用鼠標左鍵單擊子菜單“Step”---- 或用鼠標左鍵單擊子菜單“Insert/Remove break point”----- 用鼠標左鍵單擊子菜單“Go”-------- 重復“Step”或“Insert/Remove break point”“Go”; 用萬用表測AT89C52的P1.0(即1腳)的電壓是否和程序及"parallel port 1"窗口一致;
停止debug用鼠標左鍵單擊主菜單“Debug”------ 用鼠標左鍵單擊子菜單“Start/Stop Debug Session”
注意:每次重新“debug”前要按一下復位鍵;
四、目標板獨立運行
1、確認程序調試通過后,若為匯編匯編程序則將“ORG 8000”改為“ORG 0”, 若為C51程序則將“Startup.a51”中“CSEG AT 08000H” 改回“CSEG AT 0H”, 鼠標左鍵單擊菜單“Project”------ 鼠標左鍵單擊子菜單“Built target”------ 下邊窗口顯示""test1"-0 Errors(s),0 Warning(s)" 2、將生成的文件“工程名.HEX”用編程器寫入目標板51單片機,將其插回目標板原處,通電獨立運行;
五、下載 (解壓密碼:www.zsmcu.com)
電路圖、電路板、固化軟件等 |