【正文】
這樣做將要求錯(cuò)誤被糾正之前,編程器中的記憶程序被徹底抹掉,造成先前所有數(shù)據(jù)的不可恢復(fù)。這包類型對(duì)程序控制器具有特殊的意義,如下所述。上電時(shí),程序控制器判定 DTR,斷定為 DTR 后調(diào)制解調(diào)器響應(yīng)。由于 AT89C51的編程和擦除時(shí)間可以很容易地吸收, FTP 發(fā)送和等待的性質(zhì)允許跨包延遲。 FTP 模式發(fā)送和接收的是用數(shù)字 4 和 5,如流程圖所示。示例應(yīng)用程序在這種環(huán)境下可正常運(yùn)行。鎖存持有的顯示控制信號(hào)在編程過程中不反應(yīng),從而消除端口 0 和 2 由于程序控制器的活 動(dòng)造成操作失誤??娠@示字符的 ASCII 碼,范圍為 20H5FH。 在編程過程中, AT89C51 的 I / O 端口是用于模式應(yīng)用程序,地址和數(shù)據(jù)選擇的,可能需要該控制器從應(yīng)用的電路隔離。 它 為電路編程提出 了 相應(yīng)的例子, 程序的修改需要 在線編程 的支持 。 輸出端口 如果應(yīng)用的電路可以允許端口在編程過程中的狀態(tài)變化,則不需要改變電路。由于應(yīng)用程序不使用外部程序存儲(chǔ)器, EA/VPP 腳接 VCC 電源。應(yīng)用程序固件響應(yīng)中斷顯示一條消息,關(guān)閉顯示控制線。 編程器和前面描述的顯示應(yīng)用是與通過調(diào)制解調(diào)器連接在遠(yuǎn)程站點(diǎn)電話線相連的。當(dāng)接收一個(gè) ACK 后,發(fā)射器發(fā)送下一個(gè)數(shù)據(jù)包。 遠(yuǎn)程配置 在測(cè)試配置中的遠(yuǎn)程配置包括顯示應(yīng)用程序和程序員電路,如前所述,連接到一個(gè)與 Hayes 兼容的普羅米 修斯 1200 波特調(diào)制解調(diào)器。程序控制器驗(yàn)證連接的代碼,并開始審查有效的數(shù)據(jù)包報(bào)頭。該控制器的中斷響應(yīng)放棄其正在運(yùn)行的程序,并顯示一條消息,表明程序已經(jīng)被替代。在這種情況下應(yīng)用控制器被保留在程序設(shè)計(jì)模式,以防止它執(zhí)行這個(gè)程序。由于 30 秒的復(fù)位延遲,編程器重新對(duì)有效的數(shù)據(jù)包報(bào)頭進(jìn)行測(cè)試。 兩個(gè)數(shù) 據(jù)包類型定義:數(shù)據(jù)和最終文件。在配置調(diào)制解調(diào)器接聽來電后,程序控制器停止工作。每個(gè)數(shù)據(jù)包接收和通過程序員驗(yàn)證后,數(shù)據(jù)包中包含的數(shù)據(jù)被加載到的 AT89C51 單片機(jī)控制器編程。更高的傳輸速度的可能優(yōu)勢(shì)是在某些高速調(diào)制解調(diào)器內(nèi)的自動(dòng)錯(cuò)誤檢測(cè)和糾正。該控制器運(yùn)行在 兆 赫茲 ,此頻率允許串口運(yùn)行在一個(gè)標(biāo)準(zhǔn)波特率下。 請(qǐng)注意,加在開關(guān)上的四個(gè)電阻在基本應(yīng)用中并不是必須的,因?yàn)?AT89C51的端口上提供一個(gè)內(nèi)部上拉電阻。在第一種模式的時(shí)候,進(jìn)入一個(gè)字符從右邊顯示和快速移動(dòng),通過每個(gè)元素顯示其在最后的裝配位置的左側(cè)。應(yīng)用程序使用的外部程序存儲(chǔ)器要求這一腳為低電平才能正常運(yùn)行。在不使用外部程序存儲(chǔ)器的應(yīng)用程序中,這腳可能會(huì)永久接到 VCC。 顯示的文本可在 4 位 DIP 開關(guān)選擇兩 種模式之一中進(jìn)行。 由編程器生成的最 小的四位地址是與 DIP 轉(zhuǎn)換的數(shù)據(jù)在控制器的端口多路復(fù)用的 。 程序控制器電路由一個(gè) AT89C51 和一個(gè) RS 232 電平轉(zhuǎn)換器組成。更快的調(diào)制解調(diào)器如果需要的話可使用更快速的調(diào)制 解調(diào)器,盡管一旦該文件的傳輸時(shí)間低于 1 分鐘,進(jìn)一步削減的傳輸時(shí)間不會(huì)進(jìn)一步降低連接時(shí)間費(fèi)用。 發(fā)射器將繼續(xù)重發(fā),直到接收到一個(gè)有效的反應(yīng),或者,超出文件傳輸被中止的時(shí)間。 程序控制輸出無效時(shí)程序控制器上電,允許應(yīng)用程序正常運(yùn)行。在數(shù)據(jù)包的接收過程中的任何時(shí)間,無效字符,奇偶校驗(yàn)錯(cuò)誤或超時(shí)的時(shí)間內(nèi)接待字符將導(dǎo)致部分?jǐn)?shù)據(jù)包被宣布無效,并丟棄。成功的核查表明,方案是成功的,導(dǎo)致編程器向傳送者發(fā)送 ACK 信號(hào)。要返回應(yīng)用程序的正常運(yùn)行,另一個(gè)傳入必須被接收,一個(gè)有效的程序文件被上傳,由末端文件包終止。如果這是由于接收了末端文件或者是電源觸發(fā)從而接收的第一個(gè)有效的數(shù)據(jù)包,運(yùn)用必要的控制信號(hào)清除在應(yīng)用控制器內(nèi)的記憶程序。 傳入數(shù)據(jù)包必須在少于 30 秒內(nèi)到達(dá),否則調(diào)制解調(diào)器掛斷和程序控制器繼續(xù)停止工作,等待下一次呼叫。在正常操作時(shí),應(yīng)用程序執(zhí)行其內(nèi)部程序,而調(diào)制解調(diào)器和程序員監(jiān)測(cè)來電電話線。如果傳送者接收到 NAK,它重新發(fā)送相同的數(shù)據(jù)包。使用鏈接調(diào)制解調(diào)器的個(gè)人電腦,用戶可以上傳包含一個(gè)新的消息的程序,這個(gè)信息被變成進(jìn)了嵌入到應(yīng)用程序的 AT89C51 中。 編程后,當(dāng)復(fù)位生效,當(dāng)鎖存可視控制器端口輸出高電平。復(fù)位電路被兩種轉(zhuǎn)換器改變狀態(tài),此轉(zhuǎn)換器允許編程時(shí) RST 接高電平。如果應(yīng)用電路的狀態(tài) 不變化 ,必須事先在編程過程中的保持不變,可能在控制器和應(yīng)用電路中插入鎖存。這類顯示方法在應(yīng)用程序中的 AT89C51 單片機(jī)可通過電話線遠(yuǎn)程控制。 ALE/ PROG 在編程過程中輸出低電平,在正常運(yùn)行期間絕不能使用。這就產(chǎn)生了 16 名顯示元素,每個(gè)數(shù)字有 09 的顯示能力,是大寫字母, 標(biāo)點(diǎn)符號(hào)和一些字符。 透明鎖存器被加在了控制器的兩個(gè)端口之間做輸入控制。 AT89C51 的端口 1, 2, 3內(nèi)部有大約 3000 歐姆的上拉電阻,因?yàn)槎丝?0 沒有內(nèi)部上拉電阻,所以外部 10千歐姆的上拉電阻已經(jīng)加上 并 允許適當(dāng)?shù)某绦蛘J(rèn)證模式操作。 文件傳輸協(xié)議( FTP)的實(shí)施,是一個(gè)簡(jiǎn)單的發(fā)送和等 待的,數(shù)據(jù)包導(dǎo)向的協(xié)議。 簡(jiǎn)單的 FTP 減少了 AT89C51 的程序在編程時(shí)使用的內(nèi)存量。 串行接口,程序員通過它連接到調(diào)制解調(diào)器,它支持兩個(gè)握手信號(hào), DTR 和 DSR。末端文件包中包含與數(shù)據(jù)包相同的領(lǐng)域的文件,但該數(shù)據(jù)字段是空的。 重要的是要注意,無效的數(shù)據(jù)包永遠(yuǎn)不會(huì)規(guī)劃到應(yīng)用程序控制器。 根據(jù)末端文件的接收,編程器向閑置的狀態(tài)電源返回其控制輸出,允許應(yīng)用程序控制器,開始執(zhí)行新的程序。 任何包含有效文種的數(shù)據(jù)包,記錄長(zhǎng)度或校驗(yàn)和無效。如果調(diào)制解調(diào)器不響應(yīng)任何命令,包括命令掛斷,程序控制器抬高 DTR 點(diǎn)位,強(qiáng)制調(diào)制解調(diào)器下降。對(duì)程序驗(yàn)證的支持是透明的,不需要明確的命令或結(jié)果代碼,或轉(zhuǎn)讓的其他數(shù)據(jù)。不在流程控制下發(fā)射器發(fā)送每個(gè)數(shù)據(jù)包,并等待響應(yīng)。如果有需要的應(yīng)用程序兼容性,程序發(fā)出的信號(hào)可能在類似 74xx125 三態(tài)緩沖緩沖區(qū)內(nèi)緩沖。顯示數(shù)據(jù)輸入是不能被孤立的,因?yàn)閿?shù)據(jù)應(yīng)用到輸入被忽略時(shí),控制信號(hào)無效。上電復(fù)位電路和一個(gè) 6 MHz 的晶體振蕩器完成應(yīng)用軟件程序。如何做到這一點(diǎn)取決于應(yīng)用程序。 no service fields need to be added. The colon which begins each record serves as the packet signature field. The load address field serves as the packet sequence number. A checksum is provided as the last field in each record. Since sevenbit ASCII coding is utilized, the eighth bit of each byte is available to be used for parity checking. Because the AT89C51 in the programmer does not utilize external data memory, necessary packet buffering must be done using internal RAM. Limited memory precludes the use of conventional FTPs which utilize packets of 128 bytes and larger. The hex packet format used in this application limits packet data fields to 16 or fewer entries, requiring little memory for buffering. The ready availability of a utility for creating the packetized program file, bined with small packet size and adequate error checking, makes the hex packet format a near ideal solution for this application. A disadvantage is the use of ASCII, which requires each program data byte to be expressed as two hex characters. This demands that nearly twice as many bytes be transferred as might otherwise be required. This is not a severe limitation, however, since typical file transfer times are less than one minute. Overall, the simplicity of the custom FTP/hex packet format implementation outweighs the drawbacks. Remote Station The remote station in the test configuration consists of the display application and programmer circuits, described previously, connected to a Hayespatible, Prometheus 1200 baud modem. During normal operation, the application executes its internal program while the modem and programmer monitor the phone line for ining calls. After a call has been detected and a connection established, the programmer forces the application to suspend execution of its program. The new program is then downloaded and programmed into the AT89C51 embedded in the application. When programming is plete, the application is allowed to begin execution of its new program, and the programmer returns to monitoring the phone line for the next call. The programmer powers up with its programming control outputs inactive, allowing the application to run normally. After configuring the modem to answer ining calls, the programmer puts itself to sleep. The programmer will not disturb the application until a new program is to be downloaded. The programmer controls the modem by sending ASCII mand strings over th