在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

嵌入式程序基于源代碼仿真調(diào)試

CHANBAEK ? 來(lái)源:郎哥編程課堂 ? 作者:郎宏林 ? 2023-11-01 09:24 ? 次閱讀

前面一課設(shè)計(jì)了51單片機(jī)最小系統(tǒng)電路,使用51單片機(jī)的I/O口控制發(fā)光二極管的狀態(tài),并裝載運(yùn)行了使用keil編寫的嵌入式程序。本次實(shí)驗(yàn)應(yīng)用proteus結(jié)合keil對(duì)嵌入式C程序進(jìn)行源代碼級(jí)調(diào)試。

關(guān)于上次實(shí)驗(yàn)遺留的問題

在上次實(shí)驗(yàn)中,我們遺留了一個(gè)問題沒有解決。觀察上次實(shí)驗(yàn)結(jié)果,單片機(jī)P0口的所有位顏色為灰色方塊,表示該端口的電壓為不確定狀態(tài)。

為什么P0口所有位的電壓為不確定狀態(tài)呢?因?yàn)镻0同P1、P2、P3的I/O口電路不同,P1、P2、P3屬于帶上拉電阻(將I/O不確定的電位鉗位在高電平,同時(shí)起限流作用)型的I/O口,當(dāng)單片機(jī)加電后I/O被鉗位在高電平,P0不帶上拉電阻,因此I/O的電位不確定。

若需要把P0口鉗位在高電平,只需要將P0口外接一個(gè)上拉電阻即可,上拉電阻的阻值一般設(shè)置為4.7K,也可以根據(jù)負(fù)載大小選擇合適的阻值。

圖片

實(shí)驗(yàn)?zāi)康?/strong>

在開發(fā)嵌入式程序過程中,源代碼級(jí)的仿真調(diào)試可以幫助開發(fā)者快速定位問題代碼,糾正程序錯(cuò)誤,極大提高開發(fā)效率。本次實(shí)驗(yàn)在前面實(shí)驗(yàn)成果的基礎(chǔ)上,將proteus和keil結(jié)合在一起,在proteus仿真調(diào)試嵌入式程序的過程中,能夠?qū)?zhí)行點(diǎn)定位到程序源代碼行,在源代碼級(jí)別跟蹤執(zhí)行程序。

實(shí)驗(yàn)步驟

實(shí)驗(yàn)步驟如下:①輸出可以進(jìn)行源代碼調(diào)試的OMF文件;②配置基于源代碼仿真調(diào)試環(huán)境;③執(zhí)行調(diào)試,單步跟蹤代碼,查看和驗(yàn)證程序執(zhí)行結(jié)果。

輸出可以進(jìn)行源代碼調(diào)試的OMF文件

啟動(dòng)keil開發(fā)工具,打開前面課程建立的項(xiàng)目文件,修改項(xiàng)目?jī)?nèi)的C源文件代碼。

#include
sbit led1 = P1^0;
void main()
{
       led1 = 0;
       led1 = 1;
       led1 = 0;
       led1 = 1;
}

main()函數(shù)修改為四條語(yǔ)句,對(duì)P1端口的第0位led1進(jìn)行賦0或賦1操作。第1條語(yǔ)句將led1端口賦值為低電平,此時(shí)發(fā)光二極管被點(diǎn)亮,第2條語(yǔ)句將led1端口賦值為高電平,此時(shí)發(fā)光二極管不再處于被點(diǎn)亮狀態(tài)。第3條和第4條語(yǔ)句分別重復(fù)了第1條和第2條語(yǔ)句。

代碼跟蹤調(diào)試時(shí),從第1條語(yǔ)句開始跟蹤,單步執(zhí)行到第4條語(yǔ)句,觀察發(fā)光二極管的狀態(tài)和led1端口的狀態(tài)。

proteus源代碼仿真調(diào)試需要Keil編譯后輸出omf文件,在Keil工作窗口,展開【Project】菜單,選擇“Options for Targets”命令,在彈出的對(duì)話框中,選擇“Output”標(biāo)簽頁(yè),確定在“Name of Executable”輸入域輸入了omf文件名稱。

圖片

完成配置后重新編譯,keil會(huì)把omf文件輸出到項(xiàng)目的Objects目錄下。

圖片

配置基于源代碼仿真調(diào)試環(huán)境

要進(jìn)行源代碼級(jí)仿真調(diào)試,還需要配置調(diào)試環(huán)境,不然proteus會(huì)找不到程序的源代碼。配置方法是將C源代碼文件、OMF文件、電路模型文件放置在同一個(gè)目錄。可以將擴(kuò)展名為“DSN”電路模型文件復(fù)制到OMF文件所在的目錄,同時(shí)將C源代碼文件也復(fù)制到OMF文件所在目錄。也可以將C源代碼文件、OMF文件、電路模型文件放置到一個(gè)專門用于調(diào)試的目錄。

圖片

調(diào)試環(huán)境配置完成后,使用proteus打開電路模型文件,設(shè)置單片機(jī)的裝載程序?yàn)閛mf文件。

圖片

執(zhí)行調(diào)試

啟動(dòng)proteus,打開待調(diào)試的電路模型文件,展開【Debug】菜單,選擇“Start/Restart Debugging”命令或按下Ctrl+F12快捷鍵啟動(dòng)調(diào)試。

proteus會(huì)初始化單片機(jī),并執(zhí)行單片機(jī)內(nèi)的嵌入式程序,程序在main()函數(shù)的第1條語(yǔ)句之前停止執(zhí)行,等待開發(fā)者的下一步調(diào)試操作。默認(rèn)情況下,proteus會(huì)同時(shí)打開源代碼窗口,顯示嵌入式程序的源代碼和執(zhí)行狀態(tài)。

圖片

“8051 CPU Source Code-U1”為源代碼調(diào)試窗口,在源代碼調(diào)試窗口可以執(zhí)行“Step Over Source line(單步跳過)”、“Step Into Source line(單步執(zhí)行)”、“Step Out From Source line(單步跳出)”,其調(diào)試過程和Keil單步調(diào)試完全相同。

若源代碼調(diào)試窗口沒有彈出,可展開【Debug】菜單,在【Debug】菜單下面選擇彈出源代碼調(diào)試窗口的命令。

圖片

從圖中列出的菜單命令可以看出,proteus還提供了查看單片機(jī)寄存器狀態(tài)、SFR內(nèi)存數(shù)據(jù)等窗口,開發(fā)者通過這些窗口可以隨時(shí)查看單片機(jī)的內(nèi)部狀態(tài)。
例如選擇“8051 CPU Registers-U1”命令,proteus會(huì)彈出單片機(jī)寄存器狀態(tài)窗口(見下圖)。

圖片

通過寄存器窗口可以查看單片機(jī)內(nèi)每個(gè)寄存器當(dāng)前存儲(chǔ)的值。其中“PC”寄存器為程序計(jì)數(shù)器,該寄存器存儲(chǔ)了當(dāng)前準(zhǔn)備要執(zhí)行的指令地址,指令地址為十六進(jìn)制000F,指令內(nèi)容為“CLR P1.0”(對(duì)P1口的第0位清零)。再仔細(xì)觀察窗口內(nèi)容,名稱為“P0”、“P1”、“P2”、“P3”寄存器實(shí)際上分別對(duì)應(yīng)了單片機(jī)P0、P1、P2、P3四個(gè)I/O口每位的狀態(tài),當(dāng)程序修改I/O口的狀態(tài)后,這些寄存器的值也會(huì)發(fā)生相應(yīng)變化。

調(diào)試步驟:

單步跳過第1條語(yǔ)句,P1口第0位被賦值為低電平,發(fā)光二級(jí)管點(diǎn)亮。觀察寄存器窗口,PC寄存器指向了下一條指令的地址,指令為“SETB P1.0”(對(duì)P1口的第0位設(shè)置為1),P1寄存器的值由原來(lái)的FF變換為FE。

圖片

單步跳過第2條語(yǔ)句,P1口第0位被賦值為高電平,發(fā)光二級(jí)管熄滅。觀察寄存器窗口,PC寄存器指向了下一條指令的地址,指令為“CLR P1.0”(對(duì)P1口的第0位清零),P1寄存器的值由原來(lái)的FE變換為FF。

圖片

請(qǐng)同學(xué)們自行完成第3、4條語(yǔ)句的調(diào)試,并觀察發(fā)光二極管和寄存器的狀態(tài)。

實(shí)驗(yàn)小結(jié)

通過這次實(shí)驗(yàn),掌握了嵌入式程序源代碼級(jí)的調(diào)試過程,由keil編寫嵌入式程序,使用proteus執(zhí)行嵌入式程序的源代碼級(jí)調(diào)試。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 51單片機(jī)
    +關(guān)注

    關(guān)注

    274

    文章

    5705

    瀏覽量

    124392
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3798

    瀏覽量

    81456
  • 源代碼
    +關(guān)注

    關(guān)注

    96

    文章

    2946

    瀏覽量

    66989
  • 最小系統(tǒng)
    +關(guān)注

    關(guān)注

    9

    文章

    252

    瀏覽量

    29166
  • 仿真調(diào)試
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    7548
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    嵌入式硬件調(diào)試和軟件調(diào)試

    相對(duì)于軟件調(diào)試而言,使用硬件調(diào)試器可以獲得更強(qiáng)大的調(diào)試功能和更優(yōu)秀的調(diào)試性能。硬件調(diào)試器的基本原理是通過
    發(fā)表于 03-10 10:44

    嵌入式Linux下 qt安裝源代碼

    嵌入式Linux下 qt安裝源代碼
    發(fā)表于 09-20 11:33

    如何調(diào)試嵌入式代碼

    我們?cè)谶M(jìn)行嵌入式系統(tǒng)開發(fā)調(diào)試時(shí),受限于嵌入式芯片資源和性能,一般采用遠(yuǎn)程調(diào)試。在調(diào)試嵌入式底層
    發(fā)表于 12-17 06:32

    嵌入式Linux開發(fā)基礎(chǔ)知識(shí)

     嵌入式系統(tǒng)開發(fā)模式嵌入式Linux系統(tǒng)的構(gòu)成主要任務(wù)與流程利用Skyeye仿真開發(fā)板開發(fā)板使用嵌入式應(yīng)用程序開發(fā)與
    發(fā)表于 09-10 11:07 ?39次下載
    <b class='flag-5'>嵌入式</b>Linux開發(fā)基礎(chǔ)知識(shí)

    實(shí)時(shí)仿真嵌入式系統(tǒng)

    實(shí)時(shí)仿真嵌入式系統(tǒng):Matlab 和VxWorks 是當(dāng)今工業(yè)流行的仿真軟件和嵌入式操作系統(tǒng), 二者之間的結(jié)合極大的方便了程序
    發(fā)表于 09-13 10:44 ?21次下載

    基于Valgrind的嵌入式應(yīng)用程序調(diào)試技術(shù)

    本文介紹了一種利用調(diào)試軟件Valgrind 進(jìn)行嵌入式應(yīng)用程序錯(cuò)誤查找的技術(shù),利用它可以高效、自動(dòng)地查找出程序中的多種錯(cuò)誤。首先介紹了嵌入式
    發(fā)表于 12-18 15:36 ?17次下載

    基于Proteus的嵌入式應(yīng)用系統(tǒng)仿真中的源碼調(diào)試

    基于Proteus的嵌入式應(yīng)用系統(tǒng)仿真中的源碼調(diào)試 0 引 言    Proteus是功能最強(qiáng)的嵌入式系統(tǒng)(單片機(jī)、ARM等)的設(shè)計(jì)與
    發(fā)表于 12-22 17:49 ?2144次閱讀
    基于Proteus的<b class='flag-5'>嵌入式</b>應(yīng)用系統(tǒng)<b class='flag-5'>仿真</b>中的源碼<b class='flag-5'>調(diào)試</b>

    Monitor C語(yǔ)言源代碼調(diào)試器設(shè)計(jì)

    為解決嵌入式系統(tǒng)不支持本地調(diào)試且開發(fā)周期較長(zhǎng)的問題,使用了一種通過PC機(jī)去控制嵌入式系統(tǒng)的遠(yuǎn)程調(diào)試方案。該方案針對(duì)32位嵌入式設(shè)備,設(shè)計(jì)并實(shí)
    發(fā)表于 12-01 15:52 ?56次下載
    Monitor C語(yǔ)言<b class='flag-5'>源代碼</b><b class='flag-5'>調(diào)試</b>器設(shè)計(jì)

    嵌入式開發(fā)板的USB驅(qū)動(dòng)程序源代碼資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是關(guān)于嵌入式開發(fā)板的USB驅(qū)動(dòng)程序源代碼資料免費(fèi)下載。
    發(fā)表于 03-25 08:00 ?1次下載
    <b class='flag-5'>嵌入式</b>開發(fā)板的USB驅(qū)動(dòng)<b class='flag-5'>程序</b><b class='flag-5'>源代碼</b>資料免費(fèi)下載

    嵌入式Linux應(yīng)用程序開發(fā)詳解的源代碼合集免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是嵌入式Linux應(yīng)用程序開發(fā)詳解的源代碼合集免費(fèi)下載。
    發(fā)表于 03-21 08:00 ?24次下載
    <b class='flag-5'>嵌入式</b>Linux應(yīng)用<b class='flag-5'>程序</b>開發(fā)詳解的<b class='flag-5'>源代碼</b>合集免費(fèi)下載

    關(guān)于嵌入式代碼的致命漏洞

    隨著互聯(lián)網(wǎng)的發(fā)展,嵌入式設(shè)備正分布在一個(gè)充滿可以被攻擊者利用的源代碼級(jí)安全漏洞的環(huán)境中。因此,嵌入式軟件開發(fā)人員應(yīng)該了解不同類型的安全漏洞——特別是代碼注入。 術(shù)語(yǔ)“
    的頭像 發(fā)表于 01-06 15:13 ?1857次閱讀

    嵌入式代碼的致命安全漏洞

    隨著互聯(lián)網(wǎng)的發(fā)展,嵌入式設(shè)備正分布在一個(gè)充滿可以被攻擊者利用的源代碼級(jí)安全漏洞的環(huán)境中。因此,嵌入式軟件開發(fā)人員應(yīng)該了解不同類型的安全漏洞——特別是代碼注入。 術(shù)語(yǔ)“
    的頭像 發(fā)表于 01-15 15:07 ?2265次閱讀

    嵌入式系統(tǒng)設(shè)計(jì)師學(xué)習(xí)筆記二十六:嵌入式軟件程序設(shè)計(jì)①——嵌入式應(yīng)用開發(fā)的過程

    軟件的設(shè)計(jì)與實(shí)現(xiàn)③嵌入式操作系統(tǒng)的選擇、移植,以及API接口函數(shù)的設(shè)計(jì)④支撐軟件的設(shè)計(jì)與調(diào)試⑤應(yīng)用程序的設(shè)計(jì)與調(diào)試⑥系統(tǒng)聯(lián)調(diào),樣機(jī)交付應(yīng)用程序
    發(fā)表于 11-04 10:06 ?18次下載
    <b class='flag-5'>嵌入式</b>系統(tǒng)設(shè)計(jì)師學(xué)習(xí)筆記二十六:<b class='flag-5'>嵌入式</b>軟件<b class='flag-5'>程序</b>設(shè)計(jì)①——<b class='flag-5'>嵌入式</b>應(yīng)用開發(fā)的過程

    用于調(diào)試嵌入式系統(tǒng)軟件的硬件仿真

      SoC 是一個(gè)成熟的嵌入式系統(tǒng),需要硬件仿真來(lái)驗(yàn)證它是否正常工作。借助硬件仿真,開發(fā)團(tuán)隊(duì)可以更有策略地規(guī)劃并實(shí)施基于多個(gè)抽象級(jí)別的調(diào)試方法。
    的頭像 發(fā)表于 06-19 15:30 ?1835次閱讀

    企業(yè)針對(duì)嵌入式開發(fā)源代碼及電路圖紙如何防泄密?

    文件的泄露問題,我們要知道,如果是嵌入式開發(fā),就必須要通過電腦的硬件接口進(jìn)行設(shè)備代碼的寫入及后期的調(diào)試,如果采用隔離的或封堵物理端口的方式來(lái)進(jìn)行源代碼文件防泄密,就會(huì)有很多局限性,并且
    的頭像 發(fā)表于 07-28 20:00 ?793次閱讀
    企業(yè)針對(duì)<b class='flag-5'>嵌入式開發(fā)源代碼</b>及電路圖紙如何防泄密?
    主站蜘蛛池模板: cijilu刺激 国产 | caobi在线观看| 一级做a爱 一区 | 国产成人精品三级 | 九九全国免费视频 | 日本黄大片在线观看 | 成人性色生活片免费看爆迷你毛片 | 国产骚b | 婷婷丁香色综合狠狠色 | 性生活毛片 | 国产免费一区二区三区香蕉精 | 久热国产精品 | 看真人一级毛多毛片 | 在线免费午夜视频 | 日本一级高清不卡视频在线 | 美女被视频网站在线看九色 | 性欧美高清极品猛交 | 午夜久久久久久久 | 久久mimi色| 国产精品久久久亚洲第一牛牛 | 最近2018中文字幕2019视频 | 夜夜爽天天干 | 欧美日韩色图 | 好色999| 1024你懂的在线播放欧日韩 | 日本二区免费一片黄2019 | 美女视频黄的免费视频网页 | 欧美日韩一区二区三区视视频 | 免费黄色大片视频 | 久久免费国产视频 | 人阁色第四影院在线观看 | 91欧美精品激情在线观看 | 偷偷久久 | 全免费一级午夜毛片 | 伊人久久大香线蕉综合电影 | 色视频免费版高清在线观看 | 欧美成人免费全部观看天天性色 | 么公的好大好硬好深好爽在线视频 | 午夜精品久久久久久久99 | 天天插夜夜操 | 国产午夜精品一区二区理论影院 |