【正文】
cation controller. The programmer then places the controller in programming mode. The first and subsequent valid data packets are dissected as they are received and the data which they contain is programmed into the application controller at the address indicated in the packet load address field. After programming, the data is read back from the controller and verified against the received packet data. Successful verification indicates that programming was successful, causing the programmer to send ACK to the transmitter. The programmer then resumes polling for a valid packet header, subject to the thirty second reset delay. If programming fails, the programmer sends CAN to signal the transmitter to abort the file transfer. The modem drops the line and the programmer returns to sleep, waiting for the next call. The application controller is left in programming mode, preventing it from executing the inplete or invalid program which it contains. It is important to note that invalid packets are NEVER programmed into the application controller. To do so would require that the program memory in the controller be pletely erased before the error could be corrected, causing the nonrecoverable loss of all previous program data. Upon receipt of an endoffile packet, the programmer returns its control outputs to the inactive, power on state, allowing the application controller to begin execution of the new program. The programmer then resumes polling for a valid packet header, subject to the thirty second reset delay. If a valid packet is received prior to the expiration of the thirty second delay, another programming cycle begins, which can only be terminated by the reception of a valid endoffile packet. If the reset delay expires prior to the reception of a valid endoffile packet, the modem will drop the line and the programmer will return to sleep, waiting for the next call. In this case, the application controller is left in programming mode, preventing it from executing its program. To return the application to normal operation, another call must be received, and a valid program file uploaded, terminated by an endoffile packet. 。要返回應(yīng)用程序的正常運行,另一個傳入必須被接收,一個有效的程序文件被上傳,由末端文件包終止。然后編程器在三十 秒延遲之下重新開始對一個數(shù)據(jù)包報進(jìn)行審查。應(yīng)用控制在程序模式中被保留,用以阻止它包含的不完整的或無效的程序。成功的核查表明,方案是成功的,導(dǎo)致編程器向 傳送者發(fā)送 ACK信號。如果這是由于接收了末端文件或者是電源觸發(fā)從而接收的第一個有效的數(shù)據(jù)包,運用必要的控制信號清除在應(yīng)用控制器內(nèi)的記憶程序。程序數(shù)據(jù)在一個無效的數(shù)據(jù)包被丟棄的處理過程中被積累。負(fù)載地址字段中包含數(shù)據(jù)寫入的地址。在數(shù)據(jù)包的接收過程中的任何時間,無效字符,奇偶校驗錯誤或超時的時間內(nèi)接待字符將導(dǎo)致部分?jǐn)?shù)據(jù) 包被宣布無效,并丟棄。 傳入數(shù)據(jù)包必須在少于 30秒內(nèi)到達(dá),否則調(diào)制解調(diào)器掛斷和程序控制器繼續(xù)停止工作,等待下一次呼叫。 當(dāng)程序控制器停止工作后,監(jiān)測調(diào)制解監(jiān)聽電話線,等待來電呼叫。該軟件是專為與海斯兼容使用的調(diào)制解調(diào)器,其中包括這里使用的 1200普羅米修斯 ProModem。 程序控制輸出無效時程序控制器上電,允許應(yīng)用程序正常運行。在正常操作時,應(yīng)用程序執(zhí)行其內(nèi)部程序,而調(diào)制解調(diào)器和程序員監(jiān)測來電電話線。 上傳到程序控制器的文件是用英特爾 MCS 51軟件開發(fā)包來創(chuàng)建的。如果編程失敗,程序員發(fā)送 CAN向傳送者發(fā)送信號中止文件傳輸。 發(fā)射器將繼續(xù)重發(fā),直到接收到一個有效的反應(yīng),或者,超出文件傳輸被中止的時間。如果傳送者接收到 NAK,它重新發(fā)送相同的數(shù)據(jù)包。 在計算校驗和時那個程序控制器(接收器)讀取并剖析了數(shù)據(jù)包。一個簡單的腳本編寫用來讀取一個程序文件的內(nèi)容,并上傳到遠(yuǎn)程編程器 。更快的調(diào)制解調(diào)器如果需要的話可使用更快速的調(diào)制解調(diào)器,盡管一旦該文件的傳輸時間低于 1分鐘,進(jìn)一步削減的傳輸時間不會進(jìn)一步降低連接時間費用。使用鏈接調(diào)制解調(diào)器的個人電腦,用戶可以上傳包含一個新的消息的程序,這個信息被變成進(jìn)了嵌入到應(yīng)用程序的 AT89C51中。如果有需要的應(yīng)用程序兼容性,程序發(fā)出的信號可能在類似 74xx125 三態(tài)緩沖緩沖區(qū)內(nèi)緩沖。 程序控制器所產(chǎn)生的信號許多只需直接連接到 AT89C51,無需緩沖。雖然這個應(yīng)用程序是沒有必要的,它可能在某些應(yīng)用中必須指出,在編程過程中不會擾亂外圍電路的狀態(tài) 程序控制器 程序控制器生成的地址,數(shù)據(jù)和控制信號,對嵌入到程序中的 AT89C51 有重要作用。 為確保控制線顯示在已知的狀態(tài)前鎖定, AT89C51 的外部中斷是用來允許程序控制器在復(fù)位之前向應(yīng)用程序發(fā)出信號。鎖存持有的顯示控制信號在編程過程中不反應(yīng),從而消除端口 0和 2由于程序控制器的活動造成操作失誤。 在應(yīng)用程序的正常運作時,控制器端口 0, 1個分別在顯示器上提供數(shù)據(jù)和控制信號。在基本應(yīng)用時未使用的 PSEN和 ALE/ PROG,是被程序員直接控制的。無論外部程序存儲器或外部數(shù)據(jù)存儲器都時可用的。 輸出包括四個 DL1414T, 4位 17段的積分解碼器和驅(qū)動程序的字母數(shù)字顯示器。 顯示的文本可在 4位 DIP開關(guān)選擇兩種模式之一中進(jìn)行。鎖存在編程期間是可用的,并保存應(yīng)用程序的電路狀態(tài)。帶有三個輸出狀態(tài) 的緩沖區(qū)會在應(yīng)用程序之間插入電路和控制器,同時在編程時緩沖區(qū)輸出三種狀態(tài)。 ALE/ PROG 在編程過程中輸出低電平,在正常運行期間絕不能使用。應(yīng)用程序使用的外部程序存 儲器要求這一腳為低電平才能正常運行。此應(yīng)用軟件可以到 Atmel進(jìn)行下載。51單片機(jī)在編程電路中的應(yīng)用 本應(yīng)用指南說明了 Atmel AT89C51 是可在線可編程的微控制器。該應(yīng)用指南所描述的電路只支持 5v 電壓下編程。在不使用外部程序存儲器的應(yīng)用程序中,這腳可能會永久接到 VCC。 在編程過程中, PSEN必須保持低電平,在正常運行期間絕不能使用。 輸入端口 在編程過程中,控制器必須與應(yīng)用電路的信號來源隔離。如果應(yīng)用電路的狀態(tài),必須事先在編程過程中的保持不變,可能在控制器和應(yīng)用電路中插入鎖存。文本顯示被設(shè) 計作為其硬件的一部分,不能在無改編情況下變化。這種模式與常常在股票價格的顯示器所使用的方法類似。上 電復(fù)位電路和一個 6 MHz的晶體振蕩器完成應(yīng)用軟件程序。復(fù)位電路被兩種轉(zhuǎn)換器改變狀態(tài),此轉(zhuǎn)換器允許編程時 RST接高電平。 由編程器生成的最小的四位地址是與 DIP轉(zhuǎn)換的數(shù)據(jù)在控制器的端口多路復(fù)用的 請注意,加在開關(guān)上的四個電阻在基本應(yīng)用中并不是必須的,因為 AT89C51 的端口上提供一個內(nèi)部上拉電阻。 透明鎖存器被加在了控制器的兩個端口之間做 輸入控制。在編程過程中,復(fù)位鍵生效,多路開關(guān)信號輸入,以及凍結(jié)顯示鎖存控制線。由于顯示控制輸入不為高電平,直到新的程序?qū)懭腼@示器內(nèi)部不被打亂。一個 MAXIM MAX232線路驅(qū)動器 /接收器產(chǎn)生 RS 232水平,而只需要 5伏的電源系統(tǒng)。示例應(yīng)用程序在這種環(huán)境下可正常運行。 商業(yè)電話線遠(yuǎn)程編程 編程器和前面描述的顯示應(yīng)用是與通過調(diào)制解調(diào)器連接在遠(yuǎn)程站點電話線相連的。選擇此調(diào)制解調(diào)器,因為它是廉價可得。 Prom Plus包括所謂的宏語言方面,它允許用戶編寫實現(xiàn)自定義的文件傳輸協(xié)議的腳本。不在流程控制下發(fā)射器發(fā)送每個數(shù)據(jù)包,并等待響應(yīng)。當(dāng)接收一個 ACK后,發(fā)射器發(fā)送下一個數(shù)據(jù)包。如果程序員沒有在有限的時間內(nèi)響應(yīng)到一個數(shù)據(jù)包,發(fā)送器將重新發(fā)送相同的數(shù)據(jù)包。成功的審查表明,成功的程序設(shè)計,使程序員發(fā)送 ACK給傳送者。對程序驗證的支持是透明的,不需要明確的命令或結(jié)果代碼,或轉(zhuǎn)讓的其他數(shù)據(jù)。 遠(yuǎn)程配置 在測試配置中的遠(yuǎn)程配置包括顯示應(yīng)用程序和程序員電路,如前所述,連接 到一個與Hayes兼容的普羅米修斯 1200波特調(diào)制解調(diào)器。當(dāng)編程完成后,應(yīng)用軟件程序獲準(zhǔn)開始其新的程序執(zhí)行,而程序控制器返回監(jiān)督下一個通話的電話線。 程序員通過 發(fā)送控制在串行接口上的 ASCII命令字符串來控制調(diào)制解調(diào)器,對此調(diào)制解調(diào)器響應(yīng)海斯式調(diào)制解調(diào)器的 ASCII數(shù)字代碼。如果調(diào)制解調(diào)器不響應(yīng)任何命令,包括命令掛斷,程序控制器抬高 DTR點位,強(qiáng)制調(diào)制解調(diào)器下降。程序控制器驗證連接的代碼,并開始審查有效的數(shù)據(jù)包報頭。 如果復(fù)位延遲時間結(jié)束之前收到一個有效的數(shù)據(jù)包報頭,程序控制器將嘗試讀取和驗證傳入的數(shù)據(jù)包。數(shù)據(jù)字段包含程序的數(shù)據(jù)在應(yīng)用程序中被寫入在 AT89C51的控制器。 任何包含有效文種的數(shù)據(jù)包,記錄長度或校驗和無效。該控制器的中斷響應(yīng)放棄其正在運行的程序,并顯示一條消息,表明程序已經(jīng)被替代。編程后,從控制器內(nèi)將數(shù)據(jù)讀回并與接收到的數(shù)據(jù)包中的數(shù)據(jù)進(jìn)行比較。調(diào)制解調(diào)器掉線,程序器繼續(xù)休眠等待下一次呼叫。 根據(jù)末端文件的接收,編程器向閑置的狀態(tài)電源返回其控制輸出,允許應(yīng)用程序控制器,開始執(zhí)行新的程序。在這種情況下應(yīng)用控制器被保留在程序設(shè)計模式,以防止它執(zhí)行這個程