常見問題[仿真器]
發布時間:2021-04-12 點擊次數:3358
|
MCS-51常見問題(POD8X5XP、POD520、POD552、POD592、PODLPC76X、PODH8X5X)
|
|
一、軟件方面(語言、目標文件)
1. 源程序的編譯
1) 匯編語言
a) 偉福匯編
問:為什么標準的51匯編程序在偉福匯編器編譯無法通過? 答:總的來說偉福匯編器與Intel匯編器在書寫格式上除了大部分相同外有一些不同,例如包含頭文件偽指令include指令,偉福格式為:incude“文件名”,Intel格式為:$inlcude(文件名),有關偉福匯編器的更詳細的說明請參見“ 偉福匯編器使用幫助”。 問:在使用偉福匯編器時,提示“重復定義”錯誤,而程序中只定義了一次。答:使用偉福匯編器,可以使用偉福預定義符,當用戶變量全部由用戶定義的時候,不能使用偉福預定義符,否則會出現“重復定義”錯誤。有關偉福預定義符的詳細列表的產生,請參見“偉福匯編器使用幫助”。
|
|
b) Intel匯編
問:在仿真Winbond77E58等芯片時,為什么使用DPS、DPTR1等寄存器的時候,編譯出錯? 答:標準的Intel匯編器只適用于標準資源的芯片,所以對于類似于上述增強型芯片,如果還需要使用Intel匯編器,增加的寄存器需要用戶在程序中自己定義。 |
|
|
2) C語言
問:在Keil C51環境下編譯通過的源程序,在偉福環境下編譯通不過。 答:請檢查keil環境下Option for Target "???"\C51\Compiler Control String 和Option for Target "???"\BL51 Locate\Linker Control String 中的設置是否分別和偉福環境下"C語言命令行"和"link命令行"相同。
問:在偉福環境下如何實現匯編和C的混合程序 答:請參見偉福網站的例程
|
|
3) PL/M語言
|
|
2. OMF文件
問:在偉福環境下調入OMF文件,提示“OMF文件格式錯” 答:在最新以及之前的版本中,在調入OMF文件進行調試的時候,要求該OMF文件和當前項目的所在路徑相同,并且文件名與當前項目名一致,調入成功后,會自動保存目標文件(如果設置產生目標文件),否則會報錯。
問:OMF文件已經正確調入,但是為什么單步運行就變成為全速運行? 答:由于OMF文件不包含調試信息,所以調入的OMF文件不能單步調試,只能全速運行。 |
|
3. 目標文件
問:仿真正常,燒片不能正常工作。 答:在目標文件選項中,一般情況下建議使用缺省地址方式,如果不使用缺省地址,有可能使得目標代碼保存不完整等, 造成仿真通過,燒片不正常的現象。
|
|
4. 軟件模擬
問:調試的時候,為什么不能在源程序上進行? 答:打開仿真器設置\語言,在ASM、C、PL/M命令行,查看默認設置的控制項是否被刪除。
問:啟動軟件的時候,出現錯誤窗口,確定無效。 答:Explorer.DSK文件破壞會出現類似錯誤,刪除Explorer.DSK即可。
|
|
|
二、硬件方面(仿真器、通信設置)
1.硬件仿真
1) 常規問題
問:仿真875x時,為什么不能像仿真803x那樣設置仿真頭,將程序空間置到用戶板? 答:仿真875x時,實際上是仿真cpu內部程序空間,因此程序空間不能在外部,不能在用戶板上;如果用戶需要仿真片內、片外均有程序空間的用戶板,那么就相當于仿真總線方式(P0、P2),可以選擇cpu為8031或8032。
問: 如何選擇G6系列仿真器的51仿真頭? 答: 使用G6系列仿真器來仿真8951CPU時,應根據P0口和P2口的使用方法來選擇仿真頭, 如果用戶要求P0口和P2口作為總線使用,應選用8051仿真頭:如果用戶要求P0口和 P2口作為I/O使用,應選擇8752仿真頭。
|
|
2) 端口
問:向某一個端口送一個值后,端口上沒有出現相應的信號。 答:如果仿真器已經連上用戶板,那么通常是外圍電路強行的將某一個端口拉為低電平或高電平,從而出現寄存器的值不能正確輸出到管腳,需要檢查用戶板相應端口的外圍電路
問:使用POD76X(P)仿真P87LPC767的時候,設置使用內部RC振蕩方式后,為什么P2口不能正常輸出。 答:當使用內部RC振蕩方式的時候,應該將仿真頭上的晶振跳線跳到1號位置的對面位置,使仿真頭芯片的CLKIN和CLKOUT與CPU座子的引腳相連;如果使用默認的出廠設置,仿真頭芯片的CLKIN和CLKOUT是與仿真頭晶振相連,與CPU座子的引腳是不連的,所以無法當作輸出口。
問:用E2000/L+PODLPC76X仿真LPC764,在調試總線時,為什么P1.3(SDA,PIN9)引腳容易燒懷,而P1.2(SCL,PIN10)正常? 答:在I2C模式下,P1.3同時作為輸入和輸出腳,需要置相應的寄存器來決定輸入模式還是輸出模式,當SDA引腳向I2C器件發送完數據,需要在一定的延時后將其置為輸入模式,以等待接收應答信號;如果沒有及時置成輸入模式,當SDA的最后一位信號與應答信號相反,而此時正好處于單步調試狀態,各種狀態將被保持,很容易將端口燒壞。所以,在單步調試I2C的時候,可以在收到應答信號后面設置斷點,用全速運行執行到斷點。
|
|
3) 串行口
問:使用mov指令向SBUF發送數據后,為什么在CPU窗口不能看到相應的值? 答:SBUF(Address=99H)在物理上分成接收寄存器和發送寄存器,兩個是獨立的,在CPU窗口或者使用指令讀SBUF的時候,讀的是SBUF的接收寄存器;向SBUF寫入一個值的時候,寫入的是發送寄存器;所以在CPU窗口是不能看到寫入的值的。
問:向SBUF發送數據后,信號沒有正確發送到TxD。 答:這通常是用戶程序不對引起的;請檢查波特率定時器是否開啟及其工作方式、串行口工作方式以及設定的波特率。
問:在調試多機串行通信和單片機與計算機通信的時候,無法接收到其他單片機發送過來的串行數據。 答:請檢查接收波特率的設置和晶振,是否符合RxD上信號的波特率,一般情況下,波特率誤差超過3%就會出現通信錯誤或失敗。
|
|
6) 總線
問:用戶板總線上擴展了一塊8255,I/O操作不正常。 答:在正常復位后,寫入控制字后,即能對8255端口進行正常的寫操作,因此,應該著重查找該芯片的復位電路,確保芯片可靠復位。
問:用戶板擴展了一塊8279,仿真不正常。 答:在仿真的時候,CPU的復位是有仿真器控制的,因此在仿真的時候8279經常容易產生不能正常復位導致無法正常工作。
|
|
2. 功能使用
問:使用邏輯分析儀無法觀察外部信號的波形。 答:當使用邏輯分析儀采集外部波形的時候,要求在相應的J3或J4上有相對于仿真器GND的數字信號,并且將邏輯分析儀的觸發設置的J3或J4選上,否則默認采集仿真器內部的信號(見圖)。
問:使用波形發生器產生自定義波形,用示波器測量沒有信號輸出。 答:首先檢查觸發設置的基準頻率是否太高,因為如果掃描頻率太高,在固定的深度下,波形長度將會短,因此用戶需要根據用戶需要產生的波形的頻率來選擇合適的基準頻率,并選擇合適的波形長度;然后檢查輸出波形的口線是否正確(J3.0~J3.7)。
|
|
|
|
三、仿真-燒片-成品
問:在仿真通過的程序,燒片工作不正常。 答:仿真的時候以下有可能與直接插CPU的時候不同:EA引腳、RST引腳、CPU資源、晶振電路(用戶可以設置成用戶晶振)。在出現以上錯誤的時候,用戶首先應該檢查對于POD552、POD592、PODH8X5X,因為用戶在使用該三種仿真頭的時候,可以直接將仿真頭的CPU替換成最終將使用的CPU,所以一般不存在資源差異;但是對于POD8X5X(P)、POD76X(P)、POD520,這三種仿真頭,它們是用專用仿真芯片實現的,資源不能改變,而且為了能仿真多種CPU,將資源盡可能最大化,例如POD8X5X(P)的資源是52的資源,POD76X是769的資源,POD520是520和77E58的資源,因此仿真通過,燒片有可能會因為資源不同而不能正常工作。所以用戶在仿真的時候,不能使用最終CPU沒有的資源,盡管仿真頭的CPU有這些資源。
問:使用AT89C51燒片時,使用3級加密完全正常,而用1、2 級加密卻不能用。 答:參考AT89C51 的使用手冊可以發現AT89C51的31腳(EA)內接有開漏上拉電阻,在用編程器對單片機進行3級加密之后,EA腳將自動被自動拉到Vcc,啟用內部ROM,因此可以判斷用戶板的31腳沒有拉到Vcc,在1、 2 級加密時EA腳內部不會被自動拉到Vcc,單片機無法訪問內部的4K程序區。
問:在有的P87C51單片機的系統中,出現上電復位不可靠的現象。 答:PHILIPS 單片機出現復位不可靠的問題主要是PHILIPS 單片機內部的電阻太少造成復位速度非??於鈬骷臀粍幼魉俣忍灾劣趩纹瑱C復位完成在先接口的芯片復位在后造成復位不同步二者配接不上從而造成單片機死機或處于不穩定的狀態解決辦法在單片機初始化之前加一段5-10ms 的延時程序或者還要適當再長一些的延時或者改變單片機的復位電路使單片機的復位速度與外圍器件同步經過實戰改進之后證明P87C51 單片機使用比其他廠商的單片機更加可靠大多數產品使用的經驗表明PHILIPS單片機是可靠性更強的單片機只要從PHILIPS 單片機本身的特性出發設計軟硬件是可靠性設計的根本所在
|
|
|
|
|
常見問題(POD196KC、POD196MC)
問:新建項目,加入模塊,初始化仿真器無法通過,而使用SAMPLE可以通過。 答:檢查仿真頭設置的等待控制是否正確,在仿真的時候,等待控制應該設置成1、2、3個等待,而不能設置成無等待。
問:啟動看門狗后,單步跟蹤后,回到起始地址。 答:看門狗開啟后,內部定時器一直在工作,而用戶程序一旦停止,其時間足以引起看門狗復位,所以,在單步調試程序的時候,應該將看門狗關閉,當用戶程序基本調試完畢后,可以打開看門狗,全速運行程序進行調試。
問:為什么在操作外部總線設備的時候,WR或RD沒有信號? 答:仿真的時候,用戶板的RD和WR引腳和仿真頭CPU的RD和WR引腳是不直接連的,只有在訪問非仿真器空間(即用戶空間)的時候,才輸出有效RD或WR信號。所以需要在仿真頭設置中的空間設置的所有非程序空間置到外部,而將所有的程序空間置到仿真器上。
問:為什么在仿真用戶板的時候會出現“堆棧讀/寫錯:psw或pc值不正確”的錯誤信息窗口? 答:通常這種現象是由于用戶指定的堆棧無效引起的??梢詸z查程序指定的堆棧區域是否存在或者有效,如果在外部RAM,需要特別檢查用戶RAM的讀寫是否正常,芯片是否損壞。
問:用戶程序仿真完全通過,燒片不工作,將所有空間置到用戶板仿真,也不能正常工作,但是使用仿真頭晶振一切正常,用戶板晶振20MHZ。 答:通常這是由于用戶板ROM的速度不夠引起的,可以更換一塊速度可以足夠快(25ns)的ROM重新燒錄。
問:用戶程序仿真完全通過,將所有空間置到用戶板仿真也正常,燒片不工作。 答:檢查晶振電路是否起振,復位是否正常,檢查READY、RESET、NMI、EA引腳是否正常。
問:仿真80c196MC時,仿真通過,燒片不工作,測量CPU沒有輸出ALE,但是CPU已經起振。 答:在80c196MC中有一個P5口,它有標準I/O方式和特殊功能兩種配置方式。一般情況下,用戶會將P5口配置為特殊功能方式,用它作為ALE、INST、WR、RD、BHE、READY、BUSWIDTH等引腳。而在仿真的時候,仿真器已經將其設置為特殊功能模式,因此會出現仿真正常,燒片不正常的現象。所以需要在程序中應置相應的寄存器,將P5口置成相應的模式。 |
|
|
|
|
PIC常見問題(PODPIC5X、PODPIC67x)
問:使用PODPIC5X仿真PIC508的時候,初始化能通過,但是不能仿真。 答:首先檢查仿真頭設置,如果使用仿真頭晶振(4MHZ),可以將頻率選擇選為HS高頻或XT中頻,不能選為內部RC方式。(PODPIC77也存在同樣的問題)
問:使用PODPIC5X仿真PIC508的時候,仿真通過,燒片不工作。 答:通常是由于控制字沒有正確燒錄引起的;首先需要檢查燒錄時的控制字是否跟仿真時一樣,如果仿真時使用HS或者XT,而用戶板使用內部RC,需要在燒錄的時候指定為內部RC。
問:使用匯編語言仿真PIC508時,編譯時沒有反映,軟件死機。 答:請檢查仿真器設置中的asm命令行,是否與默認設置相同;另外,請檢查編譯器在上次編譯的時候是否非法退出,所以可以重新啟動計算機。
問:使用PODPIC6x7x仿真PIC711,為什么A/D部分無法正常仿真。 答:由于PIC16c711(還有16c710,16c71)的寄存器地址與PIC72~77的寄存器地址排列不同,特別是用戶寄存器的起始地址和AD寄存器地址不同,在16c711中ADCON的地址是08h和88h,用戶寄存器的起始地址是0CH,而在16c72中分別AD寄存器地址是1FH和9FH,用戶寄存器起始地址是20H。 |
|
|