久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2262|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

任何STC單片機(jī)都可硬件仿真 在片調(diào)試

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:137736 發(fā)表于 2022-11-17 10:35 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
網(wǎng)上看到資料,任何STC單片機(jī)都可硬件仿真。移植到普中開發(fā)板,用STC90C516實(shí)驗(yàn)通過。版權(quán)歸原作者。初學(xué)者用來理解程序運(yùn)行過程,深入點(diǎn)可以調(diào)試程序,不用反復(fù)燒錄程序,很好用。

任何一片 STC單片機(jī)(如低速 STC89C52,高速 STC12C5A60S2)都支持在片仿真調(diào)試,也稱為在系統(tǒng)調(diào)試,這種調(diào)試方式必須在每個(gè)需要調(diào)試的程序中增加 16行固定不變的代碼,并且必須加入 KEIL中自帶的兩個(gè)系統(tǒng)文件,先看下面這個(gè)最簡(jiǎn)單的完整程序吧。
例 2-2:在片調(diào)試,讓接在 P1.0引腳 LED閃爍發(fā)光(工程名:ISD51_Debug.uv2)
#include "stc12c5a.h"  //STC12C5A60S2單片機(jī)寄存器定義頭文件
#include "ISD51.h"      //系統(tǒng)調(diào)試專用
#define _DEBUG     //系統(tǒng)調(diào)試專用,調(diào)試完成后,發(fā)布程序時(shí),只需將該行注釋掉即可。
                    //若不注釋掉本行,單片機(jī)上電后不會(huì)自動(dòng)執(zhí)行用戶程序,只能通過調(diào)試環(huán)境啟動(dòng)。
sbit P10=P1^0;      
void delay(unsigned long cnt)   
{
  while(cnt>0) cnt--;
}
void main(void)
{
  #ifdef _DEBUG       //系統(tǒng)調(diào)試專用
   SCON = 0x50;    //系統(tǒng)調(diào)試專用(0101 0000,8位可變波特率,無奇偶校驗(yàn))
      TMOD = 0x20;   //系統(tǒng)調(diào)試專用(定時(shí)器工作在方式 2)
      TH1 = 0xfd;     //系統(tǒng)調(diào)試專用(11.059MHz晶振,波特率 9600)
      TL1 = 0xfd;     //系統(tǒng)調(diào)試專用(11.059MHz晶振,波特率 9600)
      TR1 = 1;        //系統(tǒng)調(diào)試專用
      ISDinit();      //系統(tǒng)調(diào)試專用
      ISDwait();      //系統(tǒng)調(diào)試專用
  #endif              //系統(tǒng)調(diào)試專用
  ES=1;               //系統(tǒng)調(diào)試專用
  EA=1;               //系統(tǒng)調(diào)試專用
  while(1)                           //主程序循環(huán)
  {
   #ifdef _DEBUG   //系統(tǒng)調(diào)試專用(此行一定不能寫在前行“{”后,否則編譯出錯(cuò))
          ISDcheck(); //系統(tǒng)調(diào)試專用
   #endif          //系統(tǒng)調(diào)試專用
   delay(6);
   P10=~P10;
  }
}   
按正常方式建立工程和 C文件,并將 C文件加入工程,將這個(gè)程序代碼復(fù)制到 C文件中,把 keil安裝
目錄下\C51\ISD51目錄下的 ISD51.A51、ISD51.H兩個(gè)文件復(fù)制到當(dāng)前工程文件夾中,并把 ISD51.A51添
加到 Source Group組中(與添加 C源程序文件方法相同)。
設(shè)置工程,
在Output選項(xiàng)卡選中“Create HEX File”,在Debug選項(xiàng)卡右半塊選擇“Keil ISD51 In-System
Debugger”, 去掉 Run to main 的選擇,點(diǎn) Settings按鈕,設(shè)置串口號(hào)和波特率,注意,由于上面代碼中初始化串口時(shí)波特率設(shè)的 9600,對(duì)應(yīng)電路板晶振頻率是11.059MHz,所以這里的通信波特率只能設(shè)為9600,否則進(jìn)入不了調(diào)試界面。
試狀態(tài)前需要重新下載程序或重新給單片機(jī)系統(tǒng)上電,或者通過芯片 9腳外部復(fù)位按鍵復(fù)位單片機(jī),否則可能無法進(jìn)入調(diào)試狀態(tài)。(提示連接錯(cuò)誤)
特別提示:?jiǎn)尾秸{(diào)試或程序中設(shè)有斷點(diǎn),整個(gè)程序執(zhí)行速度特別緩慢(比實(shí)際運(yùn)行速度慢 100 倍左右),由于這個(gè)原因,對(duì)于常見的通信程序,比如有時(shí)間限制的 18B20程序,實(shí)際程序下載到單片機(jī)后運(yùn)行可能完全正常,而單步或斷點(diǎn)調(diào)試卻得不到正確的結(jié)果,對(duì)于這種情況的調(diào)試,可在通信程序開始時(shí)關(guān)閉串口中斷(ES=0;),通信程序結(jié)束時(shí)打開串口中斷(ES=1;),這樣就不影響程序速度,另外全速運(yùn)行時(shí)也是不會(huì)影響程序速度的。
如果 STC的其它中斷函數(shù)擁有的中斷優(yōu)先級(jí)別比 ISD51 更高或者相同,要實(shí)現(xiàn)斷點(diǎn)或程序單步就不行了,默認(rèn)狀態(tài)下, ISD51 中斷函數(shù)使用的中斷優(yōu)先等級(jí)為 0級(jí)(0低級(jí)中斷,1高級(jí)中斷),所以默認(rèn)狀態(tài)下是不能調(diào)試帶有中斷函數(shù)的程序。
目前 STC 最新的單片機(jī)型號(hào) STC15F2K60S2  可用 IAP15F2K61S2 仿真芯片進(jìn)行仿真,IAP15F2K61S2仿真芯片也只能仿真 STC15F2K60S2 單片機(jī),此仿真芯片使用方法詳見 STC 官方提供的 ISP 下載軟件。使用此仿真芯片優(yōu)點(diǎn)是不需要在代碼中增加額外代碼,不需要將 HEX 文件下載進(jìn)入單片機(jī),對(duì)程序執(zhí)行速度也沒什么影響,不足之處任然要占用串口(P3.0、P3.1),若在代碼中有操作串口(P3.0、P3.1)的命令,將會(huì)中斷程序的調(diào)試過程,如下圖所示。
另外 STC15 系列單片機(jī)引腳排列與 STC12 系列不兼容,連電源供電引腳都不一樣,不過還好,兩種單片機(jī)互換不會(huì)因電源引腳不同燒壞單片機(jī),只是不能正常工作而已。   
2.3.3 各種仿真方法對(duì)比
使用 P89V51RD2仿真芯片優(yōu)點(diǎn)是價(jià)格便宜,操作簡(jiǎn)便,運(yùn)行速度快,可仿真匯編語言和 C語言編寫的代碼,最適用于仿標(biāo)準(zhǔn) 8051內(nèi)核的單片機(jī),如AT89C51,AT89C52等。
STC單片機(jī)的在片調(diào)試功能不但可仿真標(biāo)準(zhǔn) 8051的各個(gè)功能,還能仿 STC新增的其它功能,如 AD轉(zhuǎn)換、PWM等,缺點(diǎn)是要在每一個(gè)需要調(diào)試的程序中增加額外的專門用于調(diào)試的代碼,并且需要占用定時(shí)器 0,如果用戶程序中含有軟件延時(shí)程序,程序一旦進(jìn)入延時(shí)程序就運(yùn)行相當(dāng)緩慢(比實(shí)際硬件運(yùn)行速度慢 100倍),如果代碼中的其它中斷函數(shù)擁有的中斷優(yōu)先級(jí)別相比 ISD51 相同或者更高,要實(shí)現(xiàn)斷點(diǎn)或程序單步就不能了。在仿真復(fù)雜程序時(shí),運(yùn)行不穩(wěn)定而經(jīng)常死機(jī),仿真SPI通信程序或 AD轉(zhuǎn)換程序時(shí)可能執(zhí)行了一條對(duì)相
應(yīng)寄存器的操作命令后在 Watch窗口中根本看不到寄存器內(nèi)容的變化,當(dāng)然,出現(xiàn)這種類似的不可思議的問題時(shí)首先需要檢查KEIL的優(yōu)化級(jí)別是否為0,若不為0首先把優(yōu)化級(jí)別改為0,另外可將光標(biāo)定位在Watch窗口中變量值的位置,敲回車鍵刷新一下顯示看看數(shù)值是否有變化。也可單擊工具欄“Toolbox”按鈕如下
圖所示:
單擊后出現(xiàn)了屏幕刷新的小窗口和按鈕,單擊按鈕就可刷新數(shù)據(jù)。
從以上介紹可以看出,P89V51RD2芯片使用方便,主要用于仿傳統(tǒng) 51單片機(jī),ISD51適用于任何一款STC單片機(jī),使用麻煩,穩(wěn)定性較差,IAP15F2K61S2 價(jià)格低廉(10 元以下),使用方便,專用于 STC15F2K60S2單片機(jī)仿真,3種仿真方式都必須占用標(biāo)準(zhǔn)串口,對(duì)串口通信部分無法仿真,實(shí)際串口通信中就得特別留意波特率是否正確,計(jì)算機(jī)輸出字節(jié)數(shù)據(jù)時(shí)有時(shí)會(huì)多輸出無關(guān)的字節(jié),比如用串口助手或自己編寫代碼發(fā)送 3字節(jié)數(shù)據(jù),在有效的 3字節(jié)前有可能產(chǎn)生一個(gè)無效字節(jié),導(dǎo)致通信錯(cuò)誤,單片機(jī)程序應(yīng)加入幀頭識(shí)別,只有第一字節(jié)為有效幀頭才開始正式接收數(shù)據(jù),這在以后章節(jié)(單總線 18B20 通信)會(huì)有完整實(shí)例。有了硬件仿真,千萬別忘了軟件仿真,一般的程序調(diào)試都應(yīng)先使用軟件仿真,軟件仿真有助于加強(qiáng)程序的理解,軟件仿真正常后下載到單片機(jī)觀察運(yùn)行結(jié)果,如果有問題再次通過軟件仿真分析原因,最后才考慮硬件仿真。
普中開發(fā)板STC90c516RD測(cè)試通過。

以上圖文的Word格式文檔下載(內(nèi)容和本網(wǎng)頁上的一模一樣,方便大家保存):
OK-任何STC單片機(jī)都可硬件仿真-sim.7z (1.1 MB, 下載次數(shù): 11)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1042619 發(fā)表于 2022-11-22 11:58 | 只看該作者
感謝樓主精彩分享,51黑因您而精彩!
  %1.9 的 STC8H8K64U-45MHz-TSSOP20, 能用自帶的硬件USB下載,硬件USB仿真,沒有理由再外接 %2以上的 CH340了,還不能仿真。
    樓主用的老的STC89C52只支持串口燒錄,不支持硬件USB燒錄,可以去廠家申請(qǐng)一個(gè)開天斧試試STC8H8K64U 的震撼資源,打開認(rèn)知新世界

1.jpg.jpg (175.21 KB, 下載次數(shù): 53)

1.jpg.jpg

2.JPG.jpg (192.22 KB, 下載次數(shù): 66)

2.JPG.jpg
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 午夜激情国产 | 国产露脸国语对白在线 | 中文av在线播放 | 亚洲bt 欧美bt 日本bt | 亚洲综合色自拍一区 | 一级做a爰片久久毛片 | 久久高清精品 | 国产精品福利久久久 | 欧美日韩国产一区二区三区 | 免费精品 | 久久精品影视 | 日本超碰 | 国产精品久久久久久久久久久免费看 | 久久久久国产精品一区三寸 | 日韩中文久久 | 精品视频导航 | 欧美1区2区 | 一区二区不卡视频 | 久草电影网| 亚洲精品在线国产 | 亚洲综合久久网 | www.青青草 | 91看片| 久久久久国产 | 免费的av网站 | 精品国产三级 | 黑人巨大精品欧美一区二区免费 | 精品亚洲一区二区 | 久久精品国产免费高清 | 人人澡人人爱 | 国产欧美日韩精品一区二区三区 | 国产精品爱久久久久久久 | 亚洲性在线 | 亚洲一区二区三区四区视频 | 国产在线观看福利 | 91av视频在线免费观看 | 亚洲欧洲激情 | 国产在线精品一区二区三区 | 亚洲xxxxx | 91一区二区 | 亚洲激情在线观看 |