記錄一下Proteus仿真的一些設置和使用,以方便自己以后復習和大家交流!如有錯誤,希望大家指正。
1、Proteus軟件的安裝,這里就不作說明了。
(上圖為安裝完打開的軟甲)
2、Keil與Proteus安裝連接操作
第一步,Keil 與Proteus連接,連接開始必須在Proteus安裝目錄下 VDM51.dll文件復制到Keil安裝目錄的Keil\C51\BIN 目錄中,但新版本中沒有,
!!!所以必須下載安裝補丁vdmagdi.exe,則在Keil安裝目錄的Keil\C51\BIN 目錄中有文件:VDM51.dll。
(由於不知道怎么上傳文件就沒有把vdmagdi.exe上傳,百度有的)
第二步、修改keil安裝目錄下 Tools.ini文件
用記事本(其它的編輯軟件也可以,如Ultra Edit)打開Keil 根目錄下的 TOOLS.INI 文件,在[C51] 欄目下加入
TDRV3=BIN\VDM51.DLL ("Proteus VSM Monitor-51 Driver" ) ,其中“TDRV3” 中的 “3”要根據實際情況寫,不要和原來的重復。
第三步、打開proteus,畫出相應電路。
在proteus的debug(調試)菜單中選中(使用遠程調試監控)use remote debug monitor 。
在keil中編寫MCU的程序。 進入KEIL的project(工程)菜單(為目標target1設置選項)option for target '工程名'。在debug(調試)選項中右欄上部的下拉菜選中 Proteus VSM Monitor-51 Driver。
【例】一個實際例子:
1、在Proteus上畫下面的圖
畫完之后建立一個文件夾保存(最好是英文路徑),同時在proteus的debug(調試)菜單中選中(使用遠程調試監控)use remote debug monitor 。
2、寫代碼,文件保存在上面的文件夾中,在Keil中寫以下的代碼並編譯
/* 名稱:閃爍的LED 說明:LED按設定的時間間隔閃爍 */ #include<reg51.h> #define uchar unsigned char #define uint unsigned int sbit LED=P1^0; //延時 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { while(1) { LED=~LED; DelayMS(150); } }
設置生產HEX文件,並設置下面的(上文有提到的)
3、現在就在可以用Keil調試的
點,但是此時要注意的是此時Proteus中的AT89C51沒有下載進代碼,所以會出現“No program code loaded”
所以要雙擊AT89C51芯片,
在Program file(即第四個空行)點擊右邊的小文件夾圖標,找到路徑中的hex文件
就可以了
重新在Keil中仿真,
此時是沒有出現黃色的錯誤的。OK
4、下面是Proteus的自己仿真,點擊下面的開始