軟件仿真:這時(shí)候是在你的計(jì)算機(jī)中有一個(gè)虛擬的單片機(jī),代碼在這個(gè)虛擬的單片機(jī)中運(yùn)行。由計(jì)算機(jī)模擬單片機(jī)的運(yùn)行過程,給出運(yùn)行的結(jié)果。這個(gè)結(jié)果與實(shí)際運(yùn)行的結(jié)果絕大多數(shù)情況下沒有差別,所以可以仿真。但仿真與實(shí)際有時(shí)候也有差別,特別是有
在Keil編寫好的代碼,通過編譯后,下載到單片機(jī)。我們只能看到兩種結(jié)果:第一實(shí)驗(yàn)成功,展現(xiàn)出我們想要的效果;第二實(shí)驗(yàn)不成功,什么效果都沒有看到。失敗的原因是什么,通過硬件測試,我們無法看到代碼在單片機(jī)內(nèi)部里面如何運(yùn)行、變量是如何傳遞、變量的變化情況等等。Keil軟件里面是提供了軟件仿真調(diào)試功能。下面由我?guī)ьI(lǐng)大家來認(rèn)識(shí)一下軟件仿真。
材料/工具
Keil uVision2
1、程序添加到工程中,編譯通過。 2、進(jìn)入軟件仿真模式。 3、在外圍設(shè)備peripherals一欄,選擇相應(yīng)端口。
方法
第一步:確認(rèn)寫好的程序能通過編譯。然后點(diǎn)擊“Debug”→"Start/Stop DebugSession"進(jìn)入調(diào)試模式。如下圖操作所示:
這是配置PLL的,需要從PLL寄存器獲取PLL是否穩(wěn)定的狀態(tài)標(biāo)志。 而軟件仿真的時(shí)候這個(gè)標(biāo)志是沒人給置位的。 解決辦法是手工將RCC_CR_HSERDY置位,或者手工跳過這一段代碼(例如Run to cursor)。
第二步:調(diào)出觀察窗口(用來設(shè)置要觀察變量的設(shè)置窗口);點(diǎn)擊“View”→"Watch&Call Stack Window"。如下圖操所示:
1. project -> option for target xxx -> debug -> 勾選左邊的 use simulator -> OK. 2. ctrl + F5 啟動(dòng) debug, 中間應(yīng)有 logic analyzer, 如果沒有,view -> analyse windows -> logic analyzer. 3. 在logic analyzer中點(diǎn)set up, 再點(diǎn)右上角的
第三步:彈出的“Watch “窗口,如下圖所示:
如何在KEIL 下使用仿真器 1. 在KEIL 下使用仿真器,首先設(shè)置軟件右擊Target1,選擇Option for Target ‘Target 1’.如下: 2. 在Option for Target ‘Target 1’選項(xiàng)中點(diǎn)選DEBUG,如下: 3. 在DEBUG下選擇USE KEIL Monitor—51 Driver ,其他選擇項(xiàng)
第四步:在彈出的”Watch“窗口中設(shè)置要要觀察的變量,點(diǎn)擊”Watch#1“→雙擊"type F2 to edit"→輸入要觀察的變量名,在這里我要觀察的是P11,具體操作如下:
把keil編譯產(chǎn)生的HEX文件導(dǎo)入Proteus里面的單片機(jī)中,就可以仿真運(yùn)行了!新手還是玩板子好點(diǎn)
第五步:點(diǎn)擊”單步調(diào)試“按鈕,點(diǎn)擊一次,同時(shí)觀察”Watch“窗口P11變量的變化情況。如下圖所示:
Keil 與proteus 連接調(diào)試 Proteus 與Keil 聯(lián)機(jī) keil c51 v7.50 軟件和 proteus 6.7 SP3 軟件,分別進(jìn)行安裝。安裝完畢以后進(jìn)行如下置: 1、 系統(tǒng)安裝上TCP/IP 協(xié)議 2 、把proteus 安裝目錄下 VDM51.dll ( C:Program FilesLabcenter Electroni
第六步:再一次點(diǎn)擊”單步調(diào)試“按鈕。同時(shí)觀察”Watch“窗口P11變量的變化情況。如下圖所示:
進(jìn)工程設(shè)置,debug,右邊選use silicon……, 就那個(gè)地方有個(gè)setting, 點(diǎn)進(jìn)去勾選第二項(xiàng)USB debug ……。再確認(rèn),再調(diào)試應(yīng)該就好了。
擴(kuò)展閱讀,以下內(nèi)容您可能還感興趣。
Keil uVision4在進(jìn)行軟件仿真時(shí),能直接修改程序么?
不能。。。。。。。。。。。。。。。。。。你可以修改,但是修改之后不能更新,也就是說你只能修改已經(jīng)運(yùn)行的程序。未運(yùn)行的不能修改。。而且你改了之后也會(huì)使調(diào)試信息不一致,比如說斷點(diǎn)會(huì)移位。。等等。
關(guān)于keil 軟件仿真
LZ這樣的程序,出現(xiàn)這樣的狀況是完全正常的。因?yàn)檫@里的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;
另外變量或常量的名權(quán)稱最好是“顧名思義”的,這樣讀的時(shí)候比較好讀一些。
mdk5軟件仿真,pwm的例程,怎么仿真看到輸出的波形?
這個(gè)很簡單,Keil的邏輯儀,是基于Keil自帶zd的仿真器來運(yùn)行的。 而Keil自帶的仿真器,是基于傳統(tǒng)的51單片機(jī)來運(yùn)行的,傳統(tǒng)的51就是我們課本上講的,只有串口,兩個(gè)定時(shí)器,兩個(gè)外中斷一共五個(gè)設(shè)備,沒有其他設(shè)備。 你用的STC單片機(jī)更多追問追答追問我用的stm32但是那個(gè)邏輯儀我不太會(huì)用它不是要setup一個(gè)io口嗎,但是我填PB5、PORTB.5什么的都不對都提示unknown signal那應(yīng)該填什么呢?求教(ಥ_ಥ)但是那個(gè)邏輯儀我不太會(huì)用
單片機(jī)89c51,幫我編個(gè)C程序,順便說一下用KeiluVision3仿真調(diào)試軟件的調(diào)試步驟
#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軟件編譯仿真的步驟
點(diǎn)擊工程(百project)->new project(新建工程),建立存在度E盤或其他盤里——>保存,知選擇工程所道用芯片(專atmel 或其他)——>確定,target1, file——>new file-.text->保存(.c格式),target1右鍵,再左鍵add……選擇剛才建的文件,就屬可以在里面寫了
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com