《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 87C196MC單片機(jī)內(nèi)部存儲(chǔ)器的重復(fù)編程
87C196MC單片機(jī)內(nèi)部存儲(chǔ)器的重復(fù)編程
摘要: 本文針對(duì)Intel 87C196MC單片機(jī)內(nèi)部存儲(chǔ)器的不可擦除性,,對(duì)兩種情況下的使用問題提供了可以有效實(shí)現(xiàn)重復(fù)編程的方法,,并可以推廣至其他任何帶有OTPROM的單片機(jī)系列的編程應(yīng)用中,。
關(guān)鍵詞: 編程器 多次編程 高電平
Abstract:
Key words :

本文針對(duì)Intel 87C196MC單片機(jī)內(nèi)部存儲(chǔ)器的不可擦除性,,對(duì)兩種情況下的使用問題提供了可以有效實(shí)現(xiàn)重復(fù)編程的方法,,并可以推廣至其他任何帶有OTPROM的單片機(jī)系列的編程應(yīng)用中,。

1 87C196MC單片機(jī)內(nèi)部存儲(chǔ)器的編程方式

Intel 87C196MC單片機(jī)支持三種編程方式:自動(dòng)編程方式(使87C196MC單片機(jī)不用EPROM編程器即可從外部EPROM對(duì)自己編程),、從機(jī)編程方式(給外部EPROM編程器提供了一個(gè)標(biāo)準(zhǔn)接口)和實(shí)時(shí)編程方式(運(yùn)行中編程方式,,可以在軟件控制下實(shí)時(shí)對(duì)單個(gè)EPROM單元編程),。和其他方式不同,,實(shí)時(shí)編程可以在不進(jìn)入全EPROM編程方式下完成。

對(duì)于Intel 87C196MC單片機(jī)的OTPROM只能編程,,不能擦除,,但在編程時(shí)可以驗(yàn)證是否已確實(shí)編程。對(duì)0TPROM可以采用2種編程方法:在從機(jī)編程方式下或在專門的OTPROM編程方式下編程,。OTPROM為87C196MC單片機(jī)提供了輔助的存儲(chǔ)器保護(hù)手段,,它可以禁止總線控制器執(zhí)行外部取指周期,若企圖把一個(gè)外部地址裝載到PC寄存器,,芯片將復(fù)位,。這種自動(dòng)復(fù)位功能對(duì)跑飛的代碼也提供了一種額外的恢復(fù)手段,。使用時(shí)應(yīng)根據(jù)實(shí)際需要采取不同的編程方式。

2 87C196MC單片機(jī)內(nèi)部存儲(chǔ)器的重復(fù)編程方法

單片機(jī)87C196MC的EA引腳(外部訪問允許端,,87C196MC PLCC84-36腳)用來控制訪問內(nèi)部存儲(chǔ)器或外部存儲(chǔ)器,。當(dāng)EA=O時(shí),所有訪問都是對(duì)片外存儲(chǔ)器的,;當(dāng)EA=1時(shí),,對(duì)2000H~5FFFH單元的訪問都是對(duì)片內(nèi)OTPROM/ROM的。編程方式下,,EA=12.5 V,。由于復(fù)位時(shí)EA的電平被鎖存,難以通過外部硬件電路來實(shí)現(xiàn)程序空間的選擇,。這里通過應(yīng)用程序語(yǔ)句來控制程序地址范圍,相當(dāng)于EA的電平變化作用,。本文主要應(yīng)用了Intel匯編語(yǔ)言的長(zhǎng)跳轉(zhuǎn)指令UMP來實(shí)現(xiàn)控制訪問內(nèi),、外存儲(chǔ)器的功能,下面介紹兩種常用的方法,。

2.1 片內(nèi)編程操作方法

所謂87C196MC單片機(jī)OTPROM的不可擦除性,,實(shí)質(zhì)上是不可實(shí)現(xiàn)從“0”到“1”的編程,而只能完成從“1”到“O”的編程,。以下通過簡(jiǎn)單的程序?qū)嵗齺斫榻B這種方法,。

LJMP NEXTl
CSEG AT2600H
NEXTl:……  ;

上述語(yǔ)句實(shí)際上代表的是LJMP2600H.其機(jī)器碼為E79C04,當(dāng)?shù)刂?600H變化時(shí),,得到一組對(duì)應(yīng)的機(jī)器碼,,通過對(duì)這一組機(jī)器碼進(jìn)行分析,就可以得到該方法的原理,,如表1所列,。
 


機(jī)器碼E79C04的后兩個(gè)字節(jié)代表了匯編程序語(yǔ)句中的地址(04代表了2600H,14代表了3600H……),。當(dāng)一個(gè)字節(jié)從4位全是“1”變成4位全是“O”,,且每次只有一個(gè)“l”變?yōu)?ldquo;0”時(shí),可以有多種不同的變法,,如表2所列,。
 


由于87C196MC單片機(jī)的OTPROM只能完成從“1”到“O”的編程,而87C196MC單片機(jī)的程序從2000H開始執(zhí)行,,因此可以在程序從2000H執(zhí)行一小段后進(jìn)行跳轉(zhuǎn),,例如首先跳至4100H(對(duì)應(yīng)的機(jī)器碼為E79C1F)再存儲(chǔ)程序的其他部分。下一次使用時(shí),,把機(jī)器碼E79C1F改為E79C1E(對(duì)應(yīng)地址為4000H),,程序則跳至4000H開始執(zhí)行,4100H以后的程序段不再執(zhí)行。再下一次使用時(shí),,把機(jī)器碼E79C1E改為E79C1c(對(duì)應(yīng)地址為3A00H),,程序則跳至3A00H開始執(zhí)行,4000H以后的程序段不再執(zhí)行,,以此類推(即機(jī)器碼的最后一個(gè)字節(jié)變化為F→E→c,,對(duì)應(yīng)表2中第一組的變化),即可以重復(fù)使用同一片單片機(jī)進(jìn)行多次編程操作,。

這種方法中,,單片機(jī)87C196MC的引腳EA接高電平。它適用于程序簡(jiǎn)短且沒有擴(kuò)展外部存儲(chǔ)器,,只有內(nèi)部存儲(chǔ)器可用的情況,。

2.2 片內(nèi)、外編程操作方法

如果內(nèi)部存儲(chǔ)器容量不夠或因?yàn)槠渌矫嫘枰?,要求擴(kuò)展外部存儲(chǔ)器時(shí),,當(dāng)然可以選擇容量較大的外部存儲(chǔ)器,而不使用內(nèi)部存儲(chǔ)器,,但這樣一來,,程序的保密性將難以實(shí)現(xiàn),而且浪費(fèi)了單片機(jī)內(nèi)部的存儲(chǔ)器空間,。使用內(nèi),、外結(jié)合的方法既可以滿足容量需求,叉能方便的實(shí)現(xiàn)加密操作,。

鑒于87C196MC單片機(jī)的程序從2000H開始執(zhí)行,,將單片機(jī)87C196MC的引腳麗置“1”,那么單片機(jī)程序?qū)膬?nèi)部2000H開始執(zhí)行,??梢栽诔绦驈?000H執(zhí)行一小段后(根據(jù)實(shí)際需要任意設(shè)定)進(jìn)行跳轉(zhuǎn),此處與片內(nèi)跳轉(zhuǎn)的操作有所不同,,它將直接跳出單片機(jī)87C196MC片內(nèi)OTPROM的2000H~5FFFH單元的范圍,。當(dāng)命令被執(zhí)行時(shí),會(huì)自動(dòng)轉(zhuǎn)入外部存儲(chǔ)器的地址范圍內(nèi),,例如:LJMP8000H,,其中8000H是外部存儲(chǔ)器的地址入口,這樣就從片內(nèi)存儲(chǔ)器轉(zhuǎn)入到外部存儲(chǔ)器了,??梢酝ㄟ^修改外部存儲(chǔ)器(可重復(fù)擦寫)的程序來進(jìn)行程序的調(diào)試,非常方便,。當(dāng)然,,如果需要從外部存儲(chǔ)器轉(zhuǎn)入內(nèi)部存儲(chǔ)器時(shí),,操作方法是類似的。

3 結(jié) 語(yǔ)

本文詳細(xì)分析介紹了兩種可以實(shí)現(xiàn)可重復(fù)編程的單片機(jī)的使用方法,,而且這兩種方法可以推廣至其他任何帶有0TPROM的單片機(jī)編程,,編程的思路完全相同,具體實(shí)驗(yàn)證實(shí)了這兩種方法具有切實(shí)可行性,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。