<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 如何改造成品單片機系統

如何改造成品單片機系統

作者: 時(shí)間:2012-09-02 來(lái)源:網(wǎng)絡(luò ) 收藏

通過(guò)一個(gè)監控的研制,闡述了對一個(gè)不熟悉的微機進(jìn)行時(shí)應遵循的原則及基本方法,介紹了雙端口存貯器IDT7132和看門(mén)狗WDT的用法。
關(guān)鍵詞:監控,,雙端口存貯器,WDT
   
  制作微機監控系統時(shí),若受監控對象本身也是一個(gè)微機系統,且又沒(méi)有電路圖、程序等資料時(shí),采集對象的內部數據(如CPU狀態(tài)等),修改對象的程序方不至令原系統運行不穩定和崩潰,充分利用監控對象的資源,是一個(gè)帶有普遍性的問(wèn)題。
  筆者研制的“數字實(shí)驗監控系統”,其主要功能是采集30臺學(xué)生實(shí)驗機狀態(tài)和過(guò)程信息,送往中心主機顯示。監控對象是一臺型號為DLES的數字電路實(shí)驗機,這是某公司的產(chǎn)品,除簡(jiǎn)單的用法說(shuō)明書(shū)外別無(wú)其它資料。該機的核心是8031,帶6位鍵盤(pán)和數碼管顯示、并行口8155等,可選擇CPU工作方式產(chǎn)生各種實(shí)驗信號。

1用雙端口RAM采集數據
  監控系統的首要任務(wù)是獲取受控對象的各種狀態(tài)信息。用IO線(xiàn)取得的只是其外部信息,且當高頻時(shí)容易遺漏。要取得重要的內部信息,必須設法使監控對象的CPU自動(dòng)送出信息,即采用雙CPU通訊。無(wú)論用并行通訊還是串行通訊,都要大幅修改原機程序,且要占用原機CPU很多等待、檢測通訊口的時(shí)間,很容易破壞原機的固有時(shí)序。較好的方法是采用共享存貯器方式,只要在原機程序的適當位置插入一段程序,令其定時(shí)將自身的重要信息(例如片內RAM的256字節內容)送到共享存貯器就可以了。
本系統采用雙端口存貯器IDT7132來(lái)實(shí)現兩CPU的通訊。雙口存貯器有2套獨立的IO電路,可供2個(gè)CPU在不同時(shí)刻讀寫(xiě)各個(gè)存貯單元。但同時(shí)訪(fǎng)問(wèn)同一存貯單元會(huì )產(chǎn)生沖突。IDT7132有一套沖突仲裁電路,使先到一方獲得優(yōu)先權實(shí)現讀寫(xiě)操作,而向另一方發(fā)出一個(gè)沖突信號BUSY。
  沖突發(fā)生時(shí),訪(fǎng)問(wèn)存貯器失敗的一方要將剛失敗的一句指令再執行一次,本系統是將BUSY線(xiàn)接到的中斷線(xiàn)INT0,電路見(jiàn)圖1。但單片機的程序指針PC不能直接被讀寫(xiě),而中斷的發(fā)生又是隨機的,無(wú)法掌握其出現的時(shí)刻,要重復執行中斷前的一句指令殊不容易。為實(shí)現這功能,用了一點(diǎn)技巧:因為,中斷服務(wù)程序執行前,PC值必自動(dòng)壓入堆棧,可在中斷服務(wù)程序中將該PC值出棧,作減3處理后再入棧,則中斷結束出棧的PC值已退回指向到中斷前的一句指令了。

本文引用地址:http://dyxdggzs.com/article/170940.htm

  原實(shí)驗機已經(jīng)使用了5條高位地址線(xiàn),若要增加2KB容量的IDT7132,將超過(guò)8031單片機最大64K存貯空間的限制。為此,利用單片機一條懸空的中斷口引腳INT1充當IDT7132的片選控制線(xiàn),CPU要訪(fǎng)問(wèn)IDT7132就不能僅用常規的MOVX指令,而必須在讀寫(xiě)存貯器的前后各增加一條使INT1變低電平然后變高電平的指令,該指令如下:
CLRINT1MOVXA,@DPTR  SETBINT1
2原系統已用資源的查找
  要別人的系統,難點(diǎn)之一是要了解原系統對各種資源的使用情況。單片機的內部讀寫(xiě)存貯器RAM只有128字節,而要增改原機程序必須使用這些片內RAM,從而可能造成資源沖突。為了解原系統對片內RAM的使用情況,借用了文字編輯軟件的搜索功能。因為單片機對片內RAM的尋址方式只有2種:(1)直接尋址,此時(shí),可將RAM的直接地址作為搜索關(guān)鍵字,調用編輯軟件的搜索功能,在原實(shí)驗機程序中逐個(gè)顯示該地址出現的地方;(2)以R0和R1為指針的間接尋址,這時(shí),可分別以@R0和@R1為關(guān)鍵字搜索原程序,在出現的地方分析R0和R1的變化情況及范圍。
  若以上兩方法勻未找到所關(guān)注的RAM單元,則可以肯定原系統未使用該資源。若該單元同時(shí)又是可位尋址的,而位地址只有直接尋址一種方式,故必須采用上述的第(1)種方式搜索一次,結論也是非常明確的。
3修改和插入程序的方法
  如果監控對象的信號是軟件方式產(chǎn)生的(本實(shí)驗機就是這樣),修改、增加程序時(shí)在時(shí)間開(kāi)銷(xiāo)上要非常小心,否則會(huì )導致原機時(shí)序出錯。以下是兩種常用的可行方法:
  (1)在原程序的延時(shí)過(guò)程中,刪除其延時(shí)指令,插入執行時(shí)間大致同其原延時(shí)時(shí)間相當的新程序。例如,原實(shí)驗機為數碼管顯示而設的延時(shí)子程序就被用于將適當個(gè)字節的信息傳遞到雙端口存貯器。
?。?)在原程序中等待某些事件發(fā)生的過(guò)程中,插入新程序。例如等待鍵盤(pán)按鍵時(shí),可以控制程序跳往新的功能模塊,執行適當時(shí)間后再返回。
4監視定時(shí)器WDT的處理
  在大部分微機控制系統中,WDT(看門(mén)狗,在6800系列中是COP)都是首選的抗干擾措施之一,其作用是以軟件和硬件方式設置一個(gè)定時(shí)器,定時(shí)強制系統復位,以防止程序失控“跑飛”。
  修改舊程序時(shí)必須留意查看原系統有無(wú)WDT,否則可能導致系統崩潰。若有,則首先要找到WDT的定時(shí)時(shí)間。硬件WDT的時(shí)間值一般是固定的,可查資料得到。例如8096系列是64K個(gè)狀態(tài)周
期。軟件WDT要先找到所用的定時(shí)器,可循2個(gè)途徑:(1)芯片自身的定時(shí)器。這可以在定時(shí)器中斷服務(wù)程序中查找,例如8051系列的二個(gè)定時(shí)器的中斷服務(wù)程序入口地址分別是000BH和0001BH,查看這2段程序可知哪一個(gè)是用于WDT的,然后進(jìn)一步在主程序的初始化設置中查看對該定時(shí)器的設置,便可找到定時(shí)時(shí)間;(2)外圍芯片(例如8155)的定時(shí)器,要將之用于WDT必須將定時(shí)器溢出線(xiàn)接到單片機的某外部中斷線(xiàn)上,查看這些外部中斷服務(wù)程序就可以找到相應的定時(shí)器,再查看主程序中對該定時(shí)器的設置,也能找到定時(shí)值。
  知道了WDT的溢出時(shí)間后,就可以在修改或增加的程序中,每隔規定的時(shí)間插入一段指令清除定時(shí)器以使WDT不對系統復位。例如對8096系統,若不使用乘除指令,可以每執行約4K條指令插入以下2條指令:
MOV0AH,#1EH
  MOV0AH,#E1H
5借用監控對象的資源
  充分利用監控對象的資源,可以降低成本,最主要是可以使學(xué)生不必耗費時(shí)間多學(xué)習一臺儀器的使用方法。本監控系統借用了原實(shí)驗機上的鍵盤(pán)和數碼管顯示器。
  原實(shí)驗機以?huà)呙鐸O口方式擴展6位鍵盤(pán),每個(gè)鍵盤(pán)都賦予了固定的鍵值和鍵功能,以及固定的鍵處理程序段。為了利用原實(shí)驗機的鍵盤(pán)使其執行新的鍵功能,又不破壞原來(lái)的功能,采用了這樣的方法:改寫(xiě)原機的鍵盤(pán)掃描程序段,定義當某2個(gè)鍵(是在原機中沒(méi)有用到的)同時(shí)按下時(shí),就跳出原程序轉往一個(gè)新編寫(xiě)的程序模塊。在該新模塊中,所有鍵功能都可以被任意重新定義,當處理完新按鍵后再轉回原機程序中執行。
  要利用原機的數碼管顯示器,可以有兩種方法:
(1)編寫(xiě)新的顯示程序;(2)利用原程序的顯示功能,將要顯示的內容嵌入原程序中。因后者能很好地兼容原機程序,不易導致系統出錯或崩潰,故選用之。通過(guò)研究和測試,知原機的顯示機理是將顯示數據送緩沖區,由專(zhuān)用顯示模塊轉為八段數碼管顯示值。但其轉換算法非常復雜繁鎖。為不占用原機CPU太多時(shí)間及不易出錯,將所有可能的數據逐個(gè)送入緩沖區,測出一張數據同顯示式樣的對照表,在增加的新程序中,將顯示數據查表轉換后送緩沖區就可以了。



關(guān)鍵詞: 系統 單片機 成品 改造 如何

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>