91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第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)遺留的問(wèn)題

在上次實(shí)驗(yàn)中,我們遺留了一個(gè)問(wèn)題沒(méi)有解決。觀察上次實(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ā)嵌入式程序過(guò)程中,源代碼級(jí)的仿真調(diào)試可以幫助開發(fā)者快速定位問(wèn)題代碼,糾正程序錯(cuò)誤,極大提高開發(fā)效率。本次實(shí)驗(yàn)在前面實(shí)驗(yàn)成果的基礎(chǔ)上,將proteus和keil結(jié)合在一起,在proteus仿真調(diào)試嵌入式程序的過(guò)程中,能夠?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(單步跳過(guò))”、“Step Into Source line(單步執(zhí)行)”、“Step Out From Source line(單步跳出)”,其調(diào)試過(guò)程和Keil單步調(diào)試完全相同。

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

圖片

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

圖片

通過(guò)寄存器窗口可以查看單片機(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)試步驟:

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

圖片

單步跳過(guò)第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é)

通過(guò)這次實(shí)驗(yàn),掌握了嵌入式程序源代碼級(jí)的調(diào)試過(guò)程,由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ī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 51單片機(jī)
    +關(guān)注

    關(guān)注

    277

    文章

    5711

    瀏覽量

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

    關(guān)注

    117

    文章

    3826

    瀏覽量

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

    關(guān)注

    96

    文章

    2953

    瀏覽量

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

    關(guān)注

    9

    文章

    254

    瀏覽量

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

    關(guān)注

    0

    文章

    9

    瀏覽量

    7642
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

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

    嵌入式Linux下 qt安裝源代碼

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

    嵌入式SQL程序是由什么組成的

    概念一個(gè)嵌入式SQL程序由一種普通編程語(yǔ)言編寫的代碼(這里是C)和位于特殊標(biāo)記小節(jié)中的SQL命令混合組成。要構(gòu)建該程序源代碼(.pgc)
    發(fā)表于 12-15 07:26

    如何調(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 ?2285次閱讀
    基于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)的問(wèn)題,使用了一種通過(guò)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 ?2032次閱讀

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

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

    用于調(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 ?2073次閱讀

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

    文件的泄露問(wèn)題,我們要知道,如果是嵌入式開發(fā),就必須要通過(guò)電腦的硬件接口進(jìn)行設(shè)備代碼的寫入及后期的調(diào)試,如果采用隔離的或封堵物理端口的方式來(lái)進(jìn)行源代碼文件防泄密,就會(huì)有很多局限性,并且
    的頭像 發(fā)表于 07-28 20:00 ?1155次閱讀
    企業(yè)針對(duì)<b class='flag-5'>嵌入式開發(fā)源代碼</b>及電路圖紙如何防泄密?
    主站蜘蛛池模板: 久久草在线免费 | 男女交性视频播放视频视频 | 天天搞夜夜| 特黄特a级特别特级特毛片 特黄特色大片免费播放路01 | 伊人久久精品成人网 | 夜夜爽天天操 | 国产成人三级经典中文 | 久青草国产手机在线视频 | 欧美黄色片一级 | 色婷丁香 | 午夜精品久久久久久久第一页 | 老司机深夜影院入口aaaa | 色色色色色色色色色色色色色色 | 亚洲成人精品 | 51成人网| 国产午夜视频在永久在线观看 | 高h肉宠文1v1男男 | 好男人社区www的视频免费 | 最新午夜宅男 | ccav在线永久免费看 | 免费看男女做好爽好硬视频 | 亚洲爱爱视频 | 最近2018中文字幕免费看在线 | 久久婷婷国产一区二区三区 | 国产三级在线观看免费 | 8050午夜| 午夜骚| 午夜三级福利 | 亚洲a视频在线 | 五月婷婷在线视频 | 天天天狠天天透天天制色 | 国产免费一区二区三区 | 日韩特黄 | 亚洲经典一区二区三区 | 丁香六月啪啪 | 人人干人人搞 | 欧美综合成人网 | 久久瑟| 欧美男人的天堂 | 美脚连裤袜老师正在播放 | 国产农村女人一级毛片了 |