【正文】
。在這種情況下應(yīng)用控制器被保留在程序設(shè)計(jì)模式,以防止它執(zhí)行這個(gè)程序。 如果一個(gè)有效的數(shù)據(jù)包在 30 秒延遲之前接收,另一個(gè)只能被接受一個(gè)有效的末端文件而終止的程序循環(huán)開(kāi)始執(zhí)行。 根據(jù)末端文件的接收,編程器向閑置的狀態(tài)電源返回其控制輸出,允許應(yīng)用程序控制器,開(kāi)始執(zhí)行新的程序。 重要的是要注意,無(wú)效的數(shù)據(jù)包永遠(yuǎn)不會(huì)規(guī)劃到應(yīng)用程序控制器。調(diào)制解調(diào)器掉線,程序器繼續(xù)休眠等待下一次呼叫。由于 30 秒的復(fù)位延遲,編程器重新對(duì)有效的數(shù)據(jù)包報(bào)頭進(jìn)行測(cè)試。編程后,從控制器內(nèi)將數(shù)據(jù)讀回并與接收到的數(shù)據(jù)包中的數(shù)據(jù)進(jìn)行比較。然后編程器在程序模式中放置控制器。該控制器的中斷響應(yīng)放棄其正在運(yùn)行的程序,并顯示一條消息,表明程序已經(jīng)被替代。編程器給傳送者發(fā)送一個(gè) NAK 作為信號(hào)數(shù)據(jù)包的接收和恢復(fù)為一個(gè)有效的數(shù)據(jù)包報(bào)頭審查的警示信號(hào)。 任何包含有效文種的數(shù)據(jù)包,記錄長(zhǎng)度或校驗(yàn)和無(wú)效。末端文件包中包含與數(shù)據(jù)包相同的領(lǐng)域的文件,但該數(shù)據(jù)字段是空的。數(shù)據(jù)字段包含程序的數(shù)據(jù)在應(yīng)用程序中被寫(xiě)入在AT89C51 的控制器。 兩個(gè)數(shù) 據(jù)包類(lèi)型定義:數(shù)據(jù)和最終文件。 如果復(fù)位延遲時(shí)間結(jié)束之前收到一個(gè)有效的數(shù)據(jù)包報(bào)頭,程序控制器將嘗試讀取和驗(yàn)證傳入的數(shù)據(jù)包。如果來(lái)電掛斷,在得到下一次呼叫之前,三十秒時(shí)間必須終止。程序控制器驗(yàn)證連接的代碼,并開(kāi)始審查有效的數(shù)據(jù)包報(bào)頭。當(dāng)檢測(cè)到輸入,調(diào)制解調(diào)器響應(yīng)并試圖與輸入建 立通信。如果調(diào)制解調(diào)器不響應(yīng)任何命令,包括命令掛斷,程序控制器抬高 DTR 點(diǎn)位,強(qiáng)制調(diào)制解調(diào)器下降。 串行接口,程序員通過(guò)它連接到調(diào)制解調(diào)器,它支持兩個(gè)握手信號(hào), DTR 和 DSR。 程序員通過(guò)發(fā)送控制在串行接口上的 ASCII 命令字符串來(lái)控制調(diào)制解調(diào)器,對(duì)此調(diào)制解調(diào)器響應(yīng)海斯式調(diào)制解調(diào)器的 ASCII 數(shù)字代碼。在配置調(diào)制解調(diào)器接聽(tīng)來(lái)電后,程序控制器停止工作。當(dāng)編程完成后,應(yīng)用軟件程序獲準(zhǔn)開(kāi)始其新的程序執(zhí)行,而程序控制器返回監(jiān)督下一個(gè)通話的電話線。 通話被檢測(cè)到并連接建立后,程序器強(qiáng)迫暫停其程序的執(zhí)行。 遠(yuǎn)程配置 在測(cè)試配置中的遠(yuǎn)程配置包括顯示應(yīng)用程序和程序員電路,如前所述,連接到一個(gè)與 Hayes 兼容的普羅米 修斯 1200 波特調(diào)制解調(diào)器。在包中包括了 MCS 51 宏匯編, MCS 51 單片機(jī) Relocator 和連接器,以及一個(gè)有用的工具, OH。對(duì)程序驗(yàn)證的支持是透明的,不需要明確的命令或結(jié)果代碼,或轉(zhuǎn)讓的其他數(shù)據(jù)。 簡(jiǎn)單的 FTP 減少了 AT89C51 的程序在編程時(shí)使用的內(nèi)存量。成功的審查表明,成功的程序設(shè)計(jì),使程序員發(fā)送 ACK 給傳送者。每個(gè)數(shù)據(jù)包接收和通過(guò)程序員驗(yàn)證后,數(shù)據(jù)包中包含的數(shù)據(jù)被加載到的 AT89C51 單片機(jī)控制器編程。如果程序員沒(méi)有在有限的時(shí)間內(nèi)響應(yīng)到一個(gè)數(shù)據(jù)包,發(fā)送器將重新發(fā)送相同的數(shù)據(jù)包。以這種方式傳輸,直到整個(gè)文件已被移交。當(dāng)接收一個(gè) ACK 后,發(fā)射器發(fā)送下一個(gè)數(shù)據(jù)包。如果計(jì)算 出的校驗(yàn)和是有效的,程序員通過(guò)發(fā)送一個(gè) ACK 承認(rèn)此數(shù)據(jù)包。不在流程控制下發(fā)射器發(fā)送每個(gè)數(shù)據(jù)包,并等待響應(yīng)。 文件傳輸協(xié)議( FTP)的實(shí)施,是一個(gè)簡(jiǎn)單的發(fā)送和等 待的,數(shù)據(jù)包導(dǎo)向的協(xié)議。 Prom Plus 包括所謂的宏語(yǔ)言方面,它允許用戶編寫(xiě)實(shí)現(xiàn)自定義的文件傳輸協(xié)議的腳本。更高的傳輸速度的可能優(yōu)勢(shì)是在某些高速調(diào)制解調(diào)器內(nèi)的自動(dòng)錯(cuò)誤檢測(cè)和糾正。選擇此調(diào)制解調(diào)器,因?yàn)樗橇畠r(jià)可得。當(dāng)編程完成后,應(yīng)用程序執(zhí)行新的程序,它顯示新信息。 編程器和前面描述的顯示應(yīng)用是與通過(guò)調(diào)制解調(diào)器連接在遠(yuǎn)程站點(diǎn)電話線相連的。這就要求程序代碼和 I / O 緩沖區(qū)保持足夠小以適合片上存儲(chǔ)器。如果有需要的應(yīng)用程序兼容性,程序發(fā)出的信號(hào)可能在類(lèi)似 74xx125 三態(tài)緩沖緩沖區(qū)內(nèi)緩沖。 AT89C51 的端口 1, 2, 3內(nèi)部有大約 3000 歐姆的上拉電阻,因?yàn)槎丝?0 沒(méi)有內(nèi)部上拉電阻,所以外部 10千歐姆的上拉電阻已經(jīng)加上 并 允許適當(dāng)?shù)某绦蛘J(rèn)證模式操作。 程序控制器所產(chǎn)生的信號(hào)許多只需直接連接到 AT89C51, 無(wú)需緩沖。該控制器運(yùn)行在 兆 赫茲 ,此頻率允許串口運(yùn)行在一個(gè)標(biāo)準(zhǔn)波特率下。 程序控制器 程序控制器生成的地址,數(shù)據(jù)和控制信號(hào),對(duì)嵌入到程序中的 AT89C51 有重要作用。由于顯示控制輸入不為高電平,直到新的程序?qū)?入顯示器內(nèi)部不被打亂。應(yīng)用程序固件響應(yīng)中斷顯示一條消息,關(guān)閉顯示控制線。在編程過(guò)程中,復(fù)位鍵生效,多路開(kāi)關(guān)信號(hào)輸入,以及凍結(jié)顯示鎖存控制線。顯示數(shù)據(jù)輸入是不能被孤立的,因?yàn)閿?shù)據(jù)應(yīng)用到輸入被忽略時(shí),控制信號(hào)無(wú)效。 透明鎖存器被加在了控制器的兩個(gè)端口之間做輸入控制。在編程和程序驗(yàn)證時(shí),編程受端口 0 和端口 2 的一部分控制。 請(qǐng)注意,加在開(kāi)關(guān)上的四個(gè)電阻在基本應(yīng)用中并不是必須的,因?yàn)?AT89C51的端口上提供一個(gè)內(nèi)部上拉電阻。編程器是與那些應(yīng)用程序未使用的控制器的引腳相連的,而這些應(yīng)用程序的引腳需要最低有效位的四所產(chǎn)生的地址是可獲得的,如下段所述。在基本應(yīng)用時(shí)未使用的 PSEN 和 ALE/ PROG,是被程序員直接控制的。由于應(yīng)用程序不使用外部程序存儲(chǔ)器, EA/VPP 腳接 VCC 電源。 支持應(yīng)用程序的修改 。上電復(fù)位電路和一個(gè) 6 MHz 的晶體振蕩器完成應(yīng)用軟件程序。這就產(chǎn)生了 16 名顯示元素,每個(gè)數(shù)字有 09 的顯示能力,是大寫(xiě)字母, 標(biāo)點(diǎn)符號(hào)和一些字符。這種模式與常常在股票價(jià)格的顯示器所使用的方法類(lèi)似。在第一種模式的時(shí)候,進(jìn)入一個(gè)字符從右邊顯示和快速移動(dòng),通過(guò)每個(gè)元素顯示其在最后的裝配位置的左側(cè)。文本顯示被設(shè)計(jì)作為其硬件的一部分,不能在無(wú)改編情況下變化。鎖存在編程期間是可用的,并保存應(yīng)用程序的電路狀態(tài)。 輸出端口 如果應(yīng)用的電路可以允許端口在編程過(guò)程中的狀態(tài)變化,則不需要改變電路。帶有三個(gè)輸出狀態(tài)的緩沖區(qū)會(huì)在應(yīng)用程序之間插入電路和控制器,同時(shí) 在編程時(shí)緩沖區(qū)輸出三種狀態(tài)。如何做到這一點(diǎn)取決于應(yīng)用程序。 ALE/ PROG 在編程過(guò)程中輸出低電平,在正常運(yùn)行期間絕不能使用。應(yīng)該提供一種方法使得電路通入電源以后,使 RST 代替主要的復(fù)位電路起到復(fù)位的作用 。應(yīng)用程序使用的外部程序存儲(chǔ)器要求這一腳為低電平才能正常運(yùn)行。 總論 在編程期間必須重視 EA/VPP 這一腳。該應(yīng)用 指南 所描述的電路只支持 5v 電壓下編程。 它 為電路編程提出 了 相應(yīng)的例子, 程序的修改需要 在線編程 的支持 。 附 錄 附錄 A 外文資料 AT89C51 InCircuit Programming This application note illustrates the incircuit programmability of the Atmel AT89C51 Flashbased microcontroller. Guidelines for the addition of incircuit programmability to AT89C51 applications are presented along with an application example and the modifications to it required to support incircuit programming. A method is then shown by which the AT89C51 microcontroller in the application can be reprogrammed remotely, over a mercial telephone line. The circuitry described in this application note supports five volt programming only, requiring the use of an AT89C51XX5. The standard AT89C51 requires 12 volts for programming. The software for this application may be obtained by downloading from Atmel’s. General Considerations EA/VPP must be held high during programming. In applications which do not utilize external program memory, this pin may be permanently strapped to VCC. Applications utilizing external program memory require that this pin be held low during normal operation. RST must be held active during programming. A means must be provided for overriding the application reset circuit, which typically asserts RST only briefly after power is applied. PSEN must be held low during programming, but must not be driven during normal operation. ALE/PROG is pulsed low during programming, but must not be driven during normal operation. During programming, AT89C51 I/O ports are used for the application of mode select, addresses and data, possibly requiring that the controller be isolated from the application circuitry. How this is done is application dependent and will be addressed here only in general terms. Port Used for Input During programming, the controller must be isolated from signals sourced by the application circuitry. A buffer with three state outputs might be inserted between the application circuitry and the controller, with the buffer outputs threestated when programming is enabled. Alternately, a multiplexer might be used to select between signal sources, with signals applied to the controller by either the application circuitry or the programmer circuitry. Port Used for Output No circuit changes are required if the application circuitry can tolera