【正文】
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. 單片機在編程電路中的應用 本應用指南說明了 Atmel AT89C51 是可在線可編程的微控制器。這類顯示方法在應用程序中的 AT89C51 單片機可通過電話線遠程控制。此應用軟件可以到 Atmel 進行下載 。在不使用外部程序存儲器的應用程序中,這腳可能會永久接到 VCC。 RST 在 編程期間必須為高電平。 在編程過程中, PSEN 必須保持低電平,在正常運行期間絕不能使用。 在編程過程中, AT89C51 的 I / O 端口是用于模式應用程序,地址和數(shù)據(jù)選擇的,可能需要該控制器從應用的電路隔離。 輸入端口 在編程過程中,控制器必須與應用電路的信號來源隔離。一個多路復用器可用于信號源之間進行選擇,適用于任何一方的應用電路或編程控制器電路的信號。如果應用電路的狀態(tài) 不變化 ,必須事先在編程過程中的保持不變,可能在控制器和應用電路中插入鎖存。 應用實例 此應用程序有在電路重新編程時將結果以圖表的形式顯示的簡單能力。 顯示的文本可在 4 位 DIP 開關選擇兩 種模式之一中進行。在第二個模式,信息在信息窗口中右到左移動顯示。 輸出包括四個 DL1414T, 4 位 17 段的積分解碼器和驅(qū)動程序的字母數(shù)字顯示器。可顯示字符的 ASCII 碼,范圍為 20H5FH。無論外部程序存儲器或外部數(shù)據(jù) 存儲器都時可用的。 編程器在休眠時,既不會驅(qū)動,也不會加載應用程序。復位電路被兩種轉(zhuǎn)換器改變狀態(tài),此轉(zhuǎn)換器允許編程時 RST 接高電平。 編程器的編程需要獲得所有數(shù)據(jù)表中記錄的 AT89C51 的 I / O 端口。 由編程器生成的最 小的四位地址是與 DIP 轉(zhuǎn)換的數(shù)據(jù)在控制器的端口多路復用的 。 在應用程序的正常運作時,控制器端口 0, 1 個分別在顯示器上提供數(shù)據(jù)和控制信號。程序設計器連接端口 0 和 1,沒有緩沖,因為,在不活動時,它的存在不影響應用程序的正常運作。鎖存持有的顯示控制信號在編程過程中不反應,從而消除端口 0 和 2 由于程序控制器的活 動造成操作失誤。 AT89C51 單片機復位電路,輸入多路復用器和輸出鎖存器是由程序控制器生成一個單一的信號來控制的。 為確保控制線顯示在已知的狀態(tài)前鎖定, AT89C51 的外部中斷是用來允許程序控制器在復位之前向應用程序發(fā)出信號。 編程后,當復位生效,當鎖存可視控制器端口輸出高電平。雖然這個應用程序是沒有必要的,它可能在某些 應用中必須指出,在編程過程中不會擾亂外圍電路的狀態(tài)。 程序控制器電路由一個 AT89C51 和一個 RS 232 電平轉(zhuǎn)換器組成。一個MAXIM MAX232 線路驅(qū)動器 /接收器產(chǎn)生 RS 232 水平,而只需要 5 伏的電源系統(tǒng)。這些信號,在不活動時,不再是三種狀態(tài),但被接高電平。示例應用程序在這種環(huán)境下可正常運行。 AT89C51 的程序不使用外部程序或數(shù)據(jù)存儲器,這需要犧牲所需要的 I / O引腳。 商業(yè)電話線遠程編程 。使用鏈接調(diào)制解調(diào)器的個人電腦,用戶可以上傳包含一個新的消息的程序,這個信息被變成進了嵌入到應用程序的 AT89C51 中。 本地配置 測試配置的本地配置包括一臺 IBM 個人電腦級的計算機連接到與 Hayes 兼容的,普羅米修斯 1200 波特的調(diào)制解調(diào)器。更快的調(diào)制解調(diào)器如果需要的話可使用更快速的調(diào)制 解調(diào)器,盡管一旦該文件的傳輸時間低于 1 分鐘,進一步削減的傳輸時間不會進一步降低連接時間費用。 Prom Plus 版本 ,是一個商業(yè)數(shù)據(jù)通信軟件包,用于配置調(diào)制解調(diào)器,建立通訊設置參數(shù),并建立與遠程調(diào)制解調(diào)器的鏈接。一個簡單的腳本編寫用來讀取一個程序文件的內(nèi)容,并上傳到遠程編程器 。 FTP 模式發(fā)送和接收的是用數(shù)字 4 和 5,如流程圖所示。 在計算校驗和時那個程序控制器(接收器)讀取并剖析了數(shù)據(jù)包。如果校驗和錯誤,程序員通過發(fā)送一個 NAK 來否定。如果傳送者接收到 NAK,它重新發(fā)送相同的數(shù)據(jù)包。 程序控制器可能通過發(fā)送一個 CAN 來響應數(shù)據(jù)包, CAN 表明一個不可恢復的錯誤發(fā)生,而 發(fā)射機應立即中止文件傳輸。 發(fā)射器將繼續(xù)重發(fā),直到接收到一個有效的反應,或者,超出文件傳輸被中止的時間。 編程后,數(shù)據(jù)從控制器讀回并對接收的數(shù)據(jù)包進行驗證。如果編程失敗,程序員發(fā)送 CAN向傳送者發(fā)送信號中止文件傳輸。由于 AT89C51的編程和擦除時間可以很容易地吸收, FTP 發(fā)送和等待的性質(zhì)允許跨包延遲。 上傳到程序控制器的文件是用英特爾 MCS 51 軟件開發(fā)包來創(chuàng)建的。 OH 將 8051 絕對目標文件轉(zhuǎn)換為為等效的 ASCII 十六進制目標文件。在正常操作時,應用程序執(zhí)行其內(nèi)部程序,而調(diào)制解調(diào)器和程序員監(jiān)測來電電話線。新的程序就被下載并嵌入到應用程序中的 AT89C51 的編程。 程序控制輸出無效時程序控制器上電,允許應用程序正常運行。是程序控制器不會影響到程序直到一個新的程序應用程序被下載。該軟件是專為與海斯兼容使用的調(diào)制解調(diào)器,其中包括這里使用的 1200 普羅米修斯 ProModem。上電時,程序控制器判定 DTR,斷定為 DTR 后調(diào)制解調(diào)器響應。 當程序控制器停止工作后,監(jiān)測調(diào)制解監(jiān)聽電話線,等待來電呼叫。如果建立了連接,調(diào)制解調(diào)器發(fā)送一個代碼,喚醒程序控制器。 傳入數(shù)據(jù)包必須在少于 30 秒內(nèi)到達,否則調(diào)制解調(diào)器掛斷和程序控制器繼續(xù)停止工作,等待下一次呼叫。在復位延遲時間傳入是被忽略的。在數(shù)據(jù)包的接收過程中的任何時間,無效字符,奇偶校驗錯誤或超時的時間內(nèi)接待字符將導致部分數(shù)據(jù)包被宣布無效,并丟棄。數(shù)據(jù)包包含五個領域,除了包報頭,是一個可變長度的數(shù)據(jù)字段。負載地址字段中包含數(shù)據(jù)寫入的地址。這包類型對程序控制器具有特殊的意義,如下所述。程序數(shù)據(jù)在一個無效的數(shù)據(jù)包被丟棄的處理過程中被積累。 第一個有效數(shù)據(jù)的接收 引起編程器中斷應用程序控制器。如果這是由于接收了末端文件或者是電源觸發(fā)從而接收的第一個有效的數(shù)據(jù)包,運用必要的控制信號清除在應用控制器內(nèi)的記憶程序。 當接收到第一個和其后的有效數(shù)據(jù)程序包時,將它們分開,它們包含的數(shù)據(jù)被編程到程序包負載地址域中的地址中的應用控制器內(nèi)。成功的核查表明,方案是成功的,導致編程器向傳送者發(fā)送 ACK 信號。 如果編程失敗,編程器向傳送者發(fā)送信號 CAN 中止文件傳輸。應用控制在程序模式中被保留,用以阻止它包含的不完整的或無效的程序。這樣做將要求錯誤被糾正之前,編程器中的記憶程序被徹底抹掉,造成先前所有數(shù)據(jù)的不可恢復。然后編程器在三十秒延遲之下重新開始對一個數(shù)據(jù)包 報進行審查。 如果復位在收有效末端文件之前終止,那么調(diào)制解調(diào)器會掉線,編程器停止工作,等待下一次傳入。要返回應用程序的正常運行,另一個傳入必須被接收,一個有效的程序文件被上傳,由末端文件包終