基于AT89S52與PIC16F877A的在線編程控制系統(tǒng)的設(shè)計(jì)
發(fā)布時(shí)間:2008/6/3 0:00:00 訪問(wèn)次數(shù):545
通常進(jìn)行單片機(jī)的實(shí)驗(yàn)或開(kāi)發(fā)時(shí),傳統(tǒng)的并行編程方法中,編程器是必不可少的。仿真、調(diào)試完的程序需要借助編程器燒到單片機(jī)內(nèi)部或外接的程序存儲(chǔ)器中。在開(kāi)發(fā)過(guò)程中,程序每改動(dòng)一次就要拔下電路板上的芯片,編程后再插上。隨著計(jì)算機(jī)技術(shù)的發(fā)展,許多公司推出了帶有片內(nèi)flash存儲(chǔ)器的mcu,flash存儲(chǔ)器具有電可擦除、無(wú)需后備電源保護(hù)數(shù)據(jù)、可在線編程等特點(diǎn)。在線編程目前有兩種實(shí)現(xiàn)方法:在線系統(tǒng)編程(isp)和在線應(yīng)用編程(iap)。isp一般是通過(guò)單片機(jī)專用的串行編程接口對(duì)單片機(jī)內(nèi)部的flash存儲(chǔ)器進(jìn)行編程,例如at-mel公司的單片機(jī)at89s52就提供了一個(gè)spi串行接口對(duì)內(nèi)部程序存儲(chǔ)器編程(isp)。
在線編程(isp)允許單片機(jī)內(nèi)部運(yùn)行的程序去改寫flash存儲(chǔ)器的內(nèi)容,可以在運(yùn)行過(guò)程中修改某些運(yùn)行參數(shù),已經(jīng)編程的器件也可以用isp方式擦除或再編程。單片機(jī)在isp模式下上電時(shí),可以進(jìn)行isp操作,在isp模式下,單片機(jī)通過(guò)串行端口與外部主機(jī)(如pc機(jī)或終端)通信,從主機(jī)接收命令和數(shù)據(jù),用于擦除和再編程代碼存儲(chǔ)區(qū)。isp的實(shí)現(xiàn)一般只需要很少的外部電路輔助實(shí)現(xiàn),使用isp技術(shù),連接一根下載線即可對(duì)芯片編程,不再需要編程器就可進(jìn)行單片機(jī)的實(shí)驗(yàn)和開(kāi)發(fā),單片機(jī)芯片可以直接焊接在電路板上,調(diào)試結(jié)束即成成品,甚至可以遠(yuǎn)程在線升級(jí)或改變單片機(jī)中的程序。
2 at89s52 isp原理
at89s52具有isp功能。在reset引腳處于高電平時(shí),利用p1.5(mosi),p1.6(miso),p1.7(sck)三引腳的數(shù)據(jù)設(shè)置或傳送達(dá)到程序下載的目的,p1.5(mosi)引腳作為串行指令的輸入端口,p1.6(miso)引腳作為串行數(shù)據(jù)的輸出端口,p1.7(sck)引腳作為串行移位脈沖的輸入端口。
at89s系列中的flash地址編址是以字節(jié)為單位的,在使用過(guò)程中應(yīng)注意高低字節(jié)的區(qū)別,上位機(jī)和目標(biāo)板通信時(shí),一般都是4字節(jié)的指令,第1字節(jié)為操作碼,第2、第3字節(jié)一般為地址碼,第4字節(jié)為數(shù)據(jù)。
根據(jù)串行下載波形圖和串行下載編程指令集即可完成有關(guān)在線下載的操作。
3 在線編程控制系統(tǒng)的設(shè)計(jì)
3.1 系統(tǒng)結(jié)構(gòu)
at89s52負(fù)責(zé)人機(jī)界面的信息交互,主要由顯示部分,鍵盤部分和數(shù)據(jù)通路組成。
顯示部分由at89s52的p1,p2口組成。p2是八位的顯示數(shù)據(jù)通路,p1.1~p1.4是4個(gè)led的使能線,達(dá)到動(dòng)態(tài)顯示4位數(shù)據(jù)的效果。
鍵盤部分由int0,int1,ct0,ct1組成。利用中斷的優(yōu)先級(jí)嵌套實(shí)現(xiàn)命令與數(shù)據(jù)的輸入,減少了鍵盤的體積。硬件分配如下:
數(shù)據(jù)通路部分主要是psp的控制。psp是pic16fx系列微處理器專門針對(duì)8位機(jī)的通用數(shù)據(jù)端口,由cs,wr,rd,8位數(shù)據(jù)線組成,可供at89s52直接控制。
pic收到psp的數(shù)據(jù)后會(huì)產(chǎn)生一個(gè)中斷響應(yīng),由軟件設(shè)計(jì)者決定該中斷如何處理。因此,可以設(shè)定0xc0~0xff為命令字節(jié),供控制使用,0x00~0x09為功能號(hào),組合起來(lái)就可以實(shí)現(xiàn)各種控制的命令。
pic16fx具有4路a/d通道,精度為10 b,轉(zhuǎn)換時(shí)間為56μs。內(nèi)置硬件看門狗電路,提高了可靠性,節(jié)省了軟件開(kāi)支。利用其4路中斷功能實(shí)現(xiàn)系統(tǒng)復(fù)位及檢修測(cè)試功能。pgm接口(在線編程接口)可采用icd2適配器進(jìn)行在線編程和調(diào)試。
3.2 系統(tǒng)功能
(1) at89s52頻率4 mhz,具有在線編程,無(wú)需編程器直接燒寫的功能,用at89s52[int0],[int1],[ct0],[ct1]四個(gè)引腳單獨(dú)引出,方便作為鍵盤接口。
(2) at89s52 p1.1~p1.4分別作為led1~4的使能線,高電平有效,p2口作為led1~4的八位顯示數(shù)據(jù)口。
(3) at89s52串口與16f877a的串口可直接進(jìn)行串口通訊。
(4) at89s52 p0口及[ale十p1.0],[wr],[rd]作為8位并行端口與16f877a通訊。
(5) pic16f877a:頻率20 mhz:
① pa-an[0]-板載a/d通道:vref+/-可調(diào)
an[1],[5]一外接a/d通道,an[2-3]-vref+/-可調(diào),an[4]-t0cki-wdt監(jiān)控。
、 pb-pb0-外接int中斷信號(hào),低電平/下降沿有效,pb1,2,4,5作為input1234,低電平/下降沿有效。
3軟件設(shè)計(jì)
3.1 at89s52部分
首先執(zhí)行系統(tǒng)初始化,初始時(shí)鐘,全局變量,定時(shí)器,io端口,鍵盤中斷服務(wù)子程序。
然后進(jìn)入mainloop循環(huán)程序,等待接受鍵盤中斷。如果鍵盤有輸入動(dòng)作,系統(tǒng)產(chǎn)生鍵盤中斷,進(jìn)入鍵盤中斷服務(wù)子程序。
鍵盤中斷服務(wù)子程序的主要功能是生成命令數(shù)據(jù)包,并根據(jù)用戶指令處理該命令數(shù)據(jù)包。
命令數(shù)據(jù)包的格式如下:
數(shù)據(jù)通路部分主要是psp的控制。psp是pic16fx系列微處理器專門針對(duì)8位機(jī)的通用數(shù)據(jù)端口,由cs,wr,rd,8位數(shù)據(jù)線組成,可供at89s52直接控制。
pic收到psp的數(shù)據(jù)后會(huì)產(chǎn)生一個(gè)中斷響應(yīng),由軟件設(shè)計(jì)者決定該中斷如何處理。因此,可以設(shè)定0xc0~0xff為命令字節(jié),供控制使用,0x00~0x09為功能號(hào),組合起來(lái)就可以實(shí)現(xiàn)各種控制的命令。
pic16fx具有4路a/d通道,精度為10 b,轉(zhuǎn)換時(shí)間為56μs。內(nèi)置硬件看門狗電路,提高了可靠性,節(jié)省了軟件開(kāi)支。利用其4路中斷功能實(shí)現(xiàn)系統(tǒng)復(fù)位及檢修測(cè)試功能。pgm接口(在線編程接口)可采用icd2適配器進(jìn)行在線編程和調(diào)試。
3.2 系統(tǒng)功能
(1) at89s52頻率4 mhz,具有在線編程,無(wú)需編程器直接燒寫的功能,用at89s52[int0],[int1],[ct0],[ct1]四個(gè)引腳單獨(dú)引出,方便作為鍵盤接口。
(2) at89s52 p1.1~p1.4分別作為led1~4的使能線,高電平有效,p2口作為led1~4的八位顯示數(shù)據(jù)口。
(3) at89s52串口與16f877a的串口可直接進(jìn)行串口通訊。
(4) at89s52 p0口及[ale十p1.0],[wr],[rd]作為8位并行端口與16f877a通訊。
(5) pic16f877a:頻率20 mhz:
、 pa-an[0]-板載a/d通道:vref+/-可調(diào)
an[1],[5]一外接a/d通道,an[2-3]-vref+/-可調(diào),an[4]-t0cki-wdt監(jiān)控。
、 pb-pb0-外接int中斷信號(hào),低電平/下降沿有效,pb1,2,4,5作為input1234,低電平/下降沿有效。
3軟件設(shè)計(jì)
3.1 at89s52部分
首先執(zhí)行系統(tǒng)初始化,初始時(shí)鐘,全局變量,定時(shí)器,io端口,鍵盤中斷服務(wù)子程序。
然后進(jìn)入mainloop循環(huán)程序,等待接受鍵盤中斷。如果鍵盤有輸入動(dòng)作,系統(tǒng)產(chǎn)生鍵盤中斷,進(jìn)入鍵盤中斷服務(wù)子程序。
鍵盤中斷服務(wù)子程序的主要功能是生成命令數(shù)據(jù)包,并根據(jù)用戶指令處理該命令數(shù)據(jù)包。
命令數(shù)據(jù)包的格式如下: