《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 解決方案 > 硬件仿真與燒寫程序結果不一樣原因總結

硬件仿真與燒寫程序結果不一樣原因總結

2017-06-29
關鍵詞: Keil 計數器 定時器

       一,配置問題:實際燒片時單片機的配置字與仿真的時候是不是一樣?燒寫時是否配置正確?

  二,資源問題:單片機的ROM、RAM大小與仿真器的ROM、RAM大小是不一樣的!

  三,驅動能力問題:通常仿真器的驅動能力比單片機要強;可以分兩步檢查,一是分別用仿真器與單片機時對應IO口波形進行對比,二是當仿真器與外設連接與不連接時波形的對比;

  要進行基本要素分析:單片機供電正常?起振沒有?復位電路正常?芯片損壞?

  【單片機上電不運行情況的分析】

  1.單片機是沒有運行,還是運行不正確?

  2.如果是沒有運行,檢測單片機的基本參數是否已經滿足<工作電壓要在芯片的引腳處測量><復位引腳的復位曲線如何><晶振是否已經起振><芯片損壞,或者部分功能損壞>。

  3.如果是運行不正確,檢測<用了看門狗,沒有處理好,芯片上電后處于不停的復位狀態,看起來就象沒有沒有工作起來><是否進入了ISP狀態><對單片機寫入對所有的IO口以1秒取反一次的程序進行測試>

  【單片機調試辦法】

  用LED進行狀態指示,用串口進行數據指示,比用其它外設指示更可靠;

  加入斷點,燒寫時是在不同的語句后面加入WHILE(1);

  分模塊調試,把每個小功能先調試通過,再進行組合。

  Keil C本身就是編譯與仿真一體的,當不要外部數據時很方便,當要外部輸入時(比如用定時器計數器用)它提供幾個調試輸入用的窗口可用它們來摸擬輸入,同時Keil C本身提供一種調試函數用來配置摸擬外部輸入的功能,這我在學習時看的一本書上講過如用定時器作外部事件計數,調試函數由自己根據需要按特定的格式來編輯再按KEIL C的要求調入即可。學習時可用這種方法,做產品時最好是用仿真器調試。下面我給出我以前試過的用定時器作外部事件計數時摸擬外部輸入的調試函數,并寫出Keil C調用的步驟如下:

  1、編寫如下信號函數:

  single void t0_singal(void)

  {

  while(1)

  {

  PORT3|=0x10;//pull INT0(P3.4) high again

  PORT3&=~0x10;//pull INT0(P3.4) low and generate interrupt

  PORT3|=0x10;//pull INT0(P3.4) high again

  twatch(CLOCK);//wait for 1 second

  }

  }

  2、在DEBUG狀態下單擊DEBUG菜單在下拉菜單中單擊“Function Editor(Open Ini File)... "選項, 彈出新屏幕后,將“打開”窗口關閉,這時屏上有Function Edito窗;

  3、在Function Editor窗中輸入上面的函數;

  4、保存(注意:擴展名為.ini),編譯該程序,成功后關閉Function Editor窗口;

  5、執行用戶程序(必須連續執行);

  6、在屏幕左下腳的命令窗口中,鍵入t0_singl()后(必須回車)媽可向P3.4源源不斷地提供脈沖信號。

  我們使用Keil C調試某系統時積累的一些經驗

  1、由于Keil C對中文支持不太好,因而會出現顯示的光標與光標實際所在不一致的現象,這會對修改中文注釋造成影響。在Windows2000下面,我們可以把字體設置為Courier,這樣就可以顯示正常。

  2、當使用有片外內存的MCU(如W77E58,它有1K片外內存)的時候,肯定要設置標志位,并且編譯方式要選擇大模式,否則會出錯。

  3、當使用Keil C跟蹤程序運行狀態的時候,要把引起Warning的語句屏蔽,否則有可能跟蹤語句的時候會出錯。

  4、在調用數組的時候,Keil C是首先把數組Load進內存。如果要在C中使用長數組的時候,我們可以使用code關鍵字,這樣就實現了匯編的DB的功能,Keil C是不會把標志code的數組Load入內存的,它會直接讀取Rom。

  5、當編程涉及到有關通信,時序是很重要的。拉高管腳的執行速度遠遠比檢查管腳電平的要快。

  6、在等待管腳電平變化的時候,我們需要設置好超時處理,否則程序就會因為一個沒有預計的錯誤而死鎖。

  7、能用C語言實現的地方,盡量不要用匯編,尤其在算法的實現,用匯編是晦澀難懂。

  8、程序的幾個參數數組所占篇幅很大,其中液晶背景數組最長,有四千個Byte,因而把那些初始化數組都放在另外一個C文件,在主文件使用使用關鍵字extern定義,這樣就不會對主文件的編寫造成干擾。

  9、所有函數之間的相關性越低越有利于以后功能的擴展。

  10、6.20版在編譯帶code關鍵字的數組時,編譯通過但是單片機運行結果是錯誤的,改用6.14版后正常。

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 亚洲精品高清国产一久久 | 加勒比精品久久一区二区三区 | 日韩中文在线 | 成人免费体验区福利云点播 | 99ri视频| 欧美成人观看 | 成人www| 亚洲夜夜骑| 亚洲狠狠干 | 九月婷婷人人澡人人添人人爽 | 黄网站色视频免费观看 | 亚洲国产第一区二区香蕉日日 | 欧美精品成人a多人在线观看 | 中国一级毛片免费观看 | 欧美一级专区免费大片 | 一级黄网站| 国产成人精品日本亚洲专一区 | 国产一级特黄高清免费大片dvd | 欧美日韩中文字幕在线手机版本 | 18av黄动漫网站在线观看 | 国产黄色在线 | 免费观看一级特黄欧美大片 | 最近的最新的中文字幕在线 | 黄漫无遮挡免费网站3d | 精品一区二区三区影院在线午夜 | 国产精品xxxav免费视频 | 欧美成人激情视频 | 免费特黄级夫费生活片 | 色亚洲影院 | 大又大又粗又爽又黄毛片女人 | 国产精久久一区二区三区 | 92看片淫黄大片欧美看国产片 | 黄网址在线看 | 日韩三级国产 | 国产在线高清视频 | 天天操天天射天天插 | 五月天激情婷婷婷久久 | 日韩大片免费观看视频播放 | 日韩激情视频 | 亚洲欧美一区二区三区综合 | 高清欧美在线三级视频 |