軟件仿真:這時候是在你的計算機中有一個虛擬的單片機,代碼在這個虛擬的單片機中執行。由計算機模擬單片機的執行過程,給出執行的結果。這個結果與實際執行的結果絕大多數情況下沒有差別,所以可以仿真。但仿真與實際有時候也有差別,特別是有
在Keil編寫好的代碼,透過編譯後,下載到單片機。我們只能看到兩種結果:第一實驗成功,展現出我們想要的效果;第二實驗不成功,什麼效果都沒有看到。失敗的原因是什麼,透過硬件測試,我們無法看到代碼在單片機內部裏面如何執行、變量是如何傳遞、變量的變化情況等等。Keil軟件裏面是提供了軟件仿真調試功能。下面由我帶領大家來認識一下軟件仿真。
材料/工具
Keil uVision2
1、程序添加到工程中,編譯透過。 2、進入軟件仿真模式。 3、在外圍設備peripherals一欄,選擇相應端口。
方法
第一步:確認寫好的程序能透過編譯。然後點擊“Debug”→"Start/Stop DebugSession"進入調試模式。如下圖操作所示:
這是配置PLL的,需要從PLL寄存器獲取PLL是否穩定的狀態標誌。 而軟件仿真的時候這個標誌是沒人給置位的。 解決辦法是手工將RCC_CR_HSERDY置位,或者手工跳過這一段代碼(例如Run to cursor)。
第二步:調出觀察視窗(用來設定要觀察變量的設定視窗);點擊“View”→"Watch&Call Stack Window"。如下圖操所示:
1. project -> option for target xxx -> debug -> 勾選左邊的 use simulator -> OK. 2. ctrl + F5 啓動 debug, 中間應有 logic analyzer, 如果沒有,view -> analyse windows -> logic analyzer. 3. 在logic analyzer中點set up, 再點右上角的
第三步:彈出的“Watch “視窗,如下圖所示:
如何在KEIL 下使用仿真器 1. 在KEIL 下使用仿真器,首先設定軟件右擊Target1,選擇Option for Target ‘Target 1’.如下: 2. 在Option for Target ‘Target 1’選項中點選DEBUG,如下: 3. 在DEBUG下選擇USE KEIL Monitor—51 Driver ,其他選擇項
第四步:在彈出的”Watch“視窗中設定要要觀察的變量,點擊”Watch#1“→雙擊"type F2 to edit"→輸入要觀察的變量名,在這裏我要觀察的是P11,具體操作如下:
把keil編譯產生的HEX檔案匯入Proteus裏面的單片機中,就可以仿真執行了!新手還是玩板子好點
第五步:點擊”單步調試“按鈕,點擊一次,同時觀察”Watch“視窗P11變量的變化情況。如下圖所示:
Keil 與proteus 連接調試 Proteus 與Keil 聯機 keil c51 v7.50 軟件和 proteus 6.7 SP3 軟件,分別進行安裝。安裝完畢以後進行如下置: 1、 系統安裝上TCP/IP 協議 2 、把proteus 安裝目錄下 VDM51.dll ( C:Program FilesLabcenter Electroni
第六步:再一次點擊”單步調試“按鈕。同時觀察”Watch“視窗P11變量的變化情況。如下圖所示:
進工程設定,debug,右邊選use silicon……, 就那個地方有個setting, 點進去勾選第二項USB debug ……。再確認,再調試應該就好了。
擴展閱讀,以下內容您可能還感興趣。
Keil uVision4在進行軟件仿真時,能直接修改程序麼?
不能。。。。。。。。。。。。。。。。。。你可以修改,但是修改之後不能更新,也就是說你只能修改已經執行的程序。未執行的不能修改。。而且你改了之後也會使調試資訊不一致,比如說斷點會移位。。等等。
關於keil 軟件仿真
LZ這樣的程序,出現這樣的狀況是完全正常的。因爲這裏的P1^百0完全沒有定義。
LZ需要明確P0的地址是0x80,P1的地址是0x90
如果想在P0口上度keil軟件仿真,那麼版需要這樣寫:
sfr P0 = 0x80;
sbit P0_1 = 0x80;
如果想在P1口上keil軟件仿真,那麼需要這樣寫:
sfr P1 = 0x90;
sbit P1_1 = 0x90;
另外變量或常量的名權稱最好是“顧名思義”的,這樣讀的時候比較好讀一些。
mdk5軟件仿真,pwm的例程,怎麼仿真看到輸出的波形?
這個很簡單,Keil的邏輯儀,是基於Keil自帶zd的仿真器來執行的。 而Keil自帶的仿真器,是基於傳統的51單片機來執行的,傳統的51就是我們課本上講的,只有串口,兩個定時器,兩個外中斷一共五個設備,沒有其他設備。 你用的STC單片機更多追問追答追問我用的stm32但是那個邏輯儀我不太會用它不是要setup一個io口嗎,但是我填PB5、PORTB.5什麼的都不對都提示unknown signal那應該填什麼呢?求教(ಥ_ಥ)但是那個邏輯儀我不太會用
單片機89c51,幫我編個C程序,順便說一下用KeiluVision3仿真調試軟件的調試步驟
#include<reg51.h>
sbit p20=P2^0;
sbit p21=P2^1;
sbit p22=P2^2;
sbit p25=P2^5;
sbit p26=P2^6;
typedef unsigned char uint8;
code uint8 num[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,};
uint8 count,shi,ge,i;
delay()
{
uint8 i=1000;
while(i--);
}
display()
{
shi=count/10;
ge=count%10;
p25=0;
P0=num[shi];
p25=1;
p26=0;
P0=num[ge];
p26=1;
}
main()
{
while(1)
{
7a64e78988e69d8331333264663139if(p20==0)
{
delay();
if(p20==0)
{
count++;
}
}
if(p21==0)
{
delay();
if(p21==0)
{
count--;
}
}
if(p22==0)
{
delay();
if(p22==0)
{
count=0;
}
}
display();
}
}
求Keil軟件編譯仿真的步驟
點擊工程(百project)->new project(新建工程),建立存在度E盤或其他盤裏——>儲存,知選擇工程所道用芯片(專atmel 或其他)——>確定,target1, file——>new file-.text->儲存(.c格式),target1右鍵,再左鍵add……選擇剛纔建的檔案,就屬可以在裏面寫了