【正文】
lculating a checksum. If the calculated checksum is valid, the programmer acknowledges the packet by sending an ACK. If the checksum is in error, the programmer negatively acknowledges the packet by sending a NAK. Upon receipt of an ACK, the transmitter sends the next packet. If the transmitter receives a NAK, it resends the same packet. Transmission proceeds in this manner until the entire file has been transferred. The programmer might respond to a packet by sending a CAN, which indicates that a nonrecoverable error has occurred and that the transmitter should immediately abort the file transfer. If the programmer fails to respond to a packet within a limited period of time, the transmitter will resend the same packet. The transmitter will continue to resend the same packet until a valid response is received or until the allowed number of attempts is exceeded, at which time the file transfer is aborted. After each packet is received and validated by the programmer, the data contained in the packet is programmed into the AT89C51 controller in the application. After programming, the data is read back from the controller and verified against the received packet data. Successful verification indicates successful programming, causing the programmer to send ACK to the transmitter. If programming fails, the programmer sends CAN to signal the transmitter to abort the file transfer. The simplicity of the FTP reduces the amount of AT89C51 program memory used in the programmer. The sendandwait nature of the FTP allows interpacket delays due to AT89C51 program and erase times to be easily absorbed. Support for program verification is transparent, requiring no explicit mand or result codes, or additional data transfers. The files which are uploaded to the programmer are created with the tools in the Intel MCS51 Software Development Package for the IBM PC. Included in the package are the MCS51 Macro Assembler, MCS51 Relocator and Linker, and a useful utility, OH. OH converts an absolute 8051 object file to an equivalent ASCII hexadecimal object file. The records in the hex file produced by the OH utility serve, unchanged, as the packets in the FTP described above。 如果一個(gè)有效的數(shù)據(jù)包在 30秒延遲之前接收,另一個(gè)只能被接受一個(gè)有效的末端文件而終止的程序循環(huán)開(kāi)始執(zhí)行。 重要的是要注意,無(wú)效的數(shù)據(jù)包永遠(yuǎn)不會(huì)規(guī)劃到應(yīng)用程序控制器。由于 30秒的復(fù)位延遲,編程器重新對(duì)有效的數(shù)據(jù)包報(bào)頭進(jìn)行測(cè)試。然后編程器在程序模式中放置控制器。編程器給傳送者發(fā)送一個(gè) NAK作為信號(hào)數(shù)據(jù)包的接收和恢復(fù)為一個(gè)有效的數(shù)據(jù)包報(bào)頭審查的警 示信號(hào)。末端文件包中包含與數(shù)據(jù)包相同的領(lǐng)域的文件,但該數(shù)據(jù)字段是空的。 兩個(gè)數(shù)據(jù)包類型定義:數(shù)據(jù)和最終文件。如果來(lái)電掛斷,在得到下一次呼叫之前,三十秒時(shí)間必須終止。當(dāng)檢測(cè)到輸入 ,調(diào)制解調(diào)器響應(yīng)并試圖與輸入建立通信。 串行接口,程序員通過(guò)它連接到調(diào)制解調(diào)器,它支持兩個(gè)握手信號(hào), DTR和 DSR。在配置調(diào)制解調(diào)器接聽(tīng)來(lái)電后,程序控制器停止工作。 通話被檢測(cè)到并連接建立后,程序器強(qiáng)迫暫停其程序的執(zhí)行。在包中包括了 MCS 51宏匯編, MCS 51單片機(jī) Relocator和連接器,以及一個(gè)有用的工具, OH。 簡(jiǎn)單的 FTP減少了 AT89C51的 程序在編程時(shí)使用的內(nèi)存量。每個(gè)數(shù)據(jù)包接收和通過(guò)程序員驗(yàn)證后,數(shù)據(jù)包中包含的數(shù)據(jù)被加載到的 AT89C51 單片機(jī)控制器編程。以這種方式傳輸,直到整個(gè)文件已被移交。如果計(jì)算出的校驗(yàn)和是有效的,程序員通過(guò)發(fā)送一個(gè) ACK承認(rèn)此數(shù)據(jù)包。 文件傳輸協(xié)議( FTP)的實(shí)施,是一個(gè)簡(jiǎn)單的發(fā)送和等待的,數(shù)據(jù)包導(dǎo)向的協(xié)議。更高的傳輸速度的可能優(yōu)勢(shì)是在某些高速調(diào)制解調(diào)器內(nèi)的自動(dòng)錯(cuò)誤檢測(cè)和糾正。當(dāng)編程完成后,應(yīng)用程序執(zhí)行新的程序,它顯示新信息。 AT89C51的程序不使用外部程序或數(shù)據(jù)存儲(chǔ)器,這需要犧牲所需要的 I / O引腳 。這些信號(hào),在不活動(dòng)時(shí),不再是三種狀態(tài),但被接高電平。 程序控制器電路由一個(gè) AT89C51 和一個(gè) RS 232電平轉(zhuǎn)換器組成。應(yīng)用程序固件響應(yīng)中斷顯示一條消息,關(guān)閉顯示控制線。顯示數(shù)據(jù)輸入是不能被孤立的,因?yàn)閿?shù)據(jù)應(yīng)用到輸入被忽略時(shí),控制信號(hào)無(wú)效。在編程和程序驗(yàn)證時(shí),編程受端口 0和端口 2的一部分控制。 編程器的編程需要獲得所有數(shù)據(jù)表中記錄的 AT89C51 的 I / O端口。 支持應(yīng)用程序的修改 據(jù)推測(cè),編程器在休眠時(shí),既不會(huì)驅(qū)動(dòng),也不會(huì)加載應(yīng)用程序。這就產(chǎn)生了 16名顯示元素,每個(gè)數(shù)字有 09的顯示能力,是大寫字母,標(biāo)點(diǎn)符號(hào)和一些字符。在第一種模式的時(shí)候,進(jìn)入一個(gè)字符從右邊顯示和快速移動(dòng),通過(guò)每個(gè)元素顯示其在最后的裝配位置的左側(cè)。 應(yīng)用實(shí)例 應(yīng)用是該 AT89C51一個(gè)移動(dòng)的顯示情況。一個(gè)多路復(fù)用器可用于信號(hào)源之間進(jìn)行選擇,適用于任何一方的應(yīng)用電路或編程控制器電路的信號(hào)。 在編程過(guò)程中, AT89C51的 I / O端口是用于模式應(yīng)用程序,地址和數(shù)據(jù)選擇的,可能需要該控制器從應(yīng)用的電路隔離。 RST在編程期間必須為高電平。 總論 當(dāng)不在進(jìn)行程序設(shè)計(jì)的時(shí)候,在電路設(shè)計(jì)中的 AT89C51 設(shè)計(jì)將變得透明化。它為電路編程提出了相應(yīng)的例子,程序的修改需要在線編程的支持。這類顯示方法在應(yīng)用程序中的 AT89C51 單片機(jī)可通過(guò)電話線遠(yuǎn)程控制。 在編程期間必須重視 EA/VPP這一腳。應(yīng)該提供一種方法使得電路通入電源以后,使 RST代替主要的復(fù)位電路起到復(fù)位的作用 。如何做到這一點(diǎn)取決于應(yīng)用程序。 輸出端口 如果應(yīng)用的電路可以允許端口在編程過(guò)程中的狀態(tài)變化,則不需要改變電路。此應(yīng)用程序有在電路重新編程時(shí)將結(jié)果以圖表的形式顯示的簡(jiǎn)單能力。在 第二個(gè)模式,信息在信息窗口中右到左移動(dòng)顯示??娠@示字符的 ASCII 碼,范圍為 20H5FH。由于應(yīng)用程序不使用外部程序存儲(chǔ)器, EA/VPP腳接 VCC電源。編程器是與那些應(yīng)用程序未使用的控制器的引腳相連的,而 這些應(yīng)用程序的引腳需要最低有效位的四所產(chǎn)生的地址是可獲得的,如下段所述。程序設(shè)計(jì)器連接端口 0和 1,沒(méi)有緩沖,因?yàn)?,在不活?dòng)時(shí),它的存在不影響應(yīng)用程序的正常運(yùn)作。 AT89C51單片機(jī)復(fù)位電路,輸入多路復(fù)用器和輸出鎖存器是由程序控制器生成一個(gè)單一的信號(hào)來(lái)控制的。 編程后 ,當(dāng)復(fù)位生效,當(dāng)鎖存可視控制器端口輸出高電平。該控制器運(yùn)行在 HZ,此頻率允許串口運(yùn)行在一個(gè)標(biāo)準(zhǔn)波特率下。 AT89C51的端口 1, 2, 3內(nèi)部有大約 3000歐姆的上拉電阻,因?yàn)槎丝?0沒(méi)有內(nèi)部上拉電阻,所以外部 10 千歐姆的上拉電阻已經(jīng)加上允許適當(dāng)?shù)某绦蛘J(rèn)證模式操作。這就要求程序代碼和 I / O緩沖區(qū)保持足夠小以適合片上存儲(chǔ)器。 本地配置 測(cè)試配置的本地配置包括一臺(tái) IBM個(gè)人電腦級(jí)的計(jì)算機(jī)連接到與 Hayes兼容的,普羅米修斯 1200波特的調(diào)制解調(diào)器。 Prom Plus 版本 ,是一個(gè)商業(yè)數(shù)據(jù)通信軟件包,用于配置調(diào)制解調(diào)器,建立通訊設(shè)置參數(shù),并建立與遠(yuǎn)程調(diào)制解調(diào)器的鏈接。 FTP模式發(fā)送和接收的是用數(shù)字 4和 5,如流程圖所示。如果校驗(yàn)和錯(cuò)誤,程序員通過(guò)發(fā)送一個(gè)NAK來(lái)否定。 程序控制器可能通過(guò)發(fā)送一個(gè) CAN來(lái)響應(yīng)數(shù)據(jù)包, CAN表明一個(gè)不可恢復(fù)的錯(cuò)誤發(fā)生,而發(fā)射機(jī)應(yīng)立即中止文件傳輸。 編程后,數(shù)據(jù)從控制器讀回并對(duì)接收的數(shù)據(jù)包進(jìn)行驗(yàn)證。由于 AT89C51的編程和擦除時(shí)間可以很容易地吸收, FTP發(fā)送和等待的性質(zhì)允許跨包延遲。 OH將 8051絕對(duì)目標(biāo)文件轉(zhuǎn)換為為等效的 ASCII十六進(jìn)制目標(biāo)文件。新的程序就被下載并嵌入到應(yīng)用程序中的 AT89C51的編程。是程序控制器不會(huì)影響到程序直到一個(gè)新的程序應(yīng)用程序被下載。上電時(shí),程序控制器判定 DTR,斷定為 DTR后調(diào)制解調(diào)器響應(yīng)。如果建立了連接,調(diào)制解調(diào)器發(fā)送一個(gè)代碼,喚醒程序控制器。在復(fù)位延遲時(shí)間傳入是被忽略的。數(shù)據(jù)包包含五個(gè)領(lǐng)域,除了包報(bào)頭,是一個(gè)可變長(zhǎng)度的數(shù)據(jù)字段。這包類型對(duì)程序控制器具有特殊的意義,如下所述。 第一個(gè)有效數(shù)據(jù)的接收引起編程器中斷應(yīng)用程序控制器。 當(dāng)接收到第一個(gè)和其后的有效數(shù)據(jù)程序包時(shí),將它們分開(kāi),它們包含的數(shù)據(jù)被編程到程序包負(fù)載地址域中的地址中的應(yīng)用控制器內(nèi)。 如果編程失敗,編程器向傳送者發(fā)送信號(hào) CAN中止文件傳輸。這樣做將要求錯(cuò)誤被糾正之前,編程器中的記憶程序被徹底抹掉,造成先前所有數(shù)據(jù)的不可恢復(fù)。 如果復(fù)位在收有效末端文件之前終止,那么調(diào)制解調(diào)器會(huì)掉線,編程器停止工作,等待下一次傳入。 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 chec