l 引 言
通常進行單片機的實驗或開發(fā)時,傳統(tǒng)的并行編程方法中,編程器是必不可少的。仿真、調試完的程序需要借助編程器燒到單片機內部或外接的程序存儲器中。
在開發(fā)過程中,程序每改動一次就要拔下電路板上的芯片,編程后再插上。隨著計算機技術的發(fā)展,許多公司推出了帶有片內FLASH存儲器的MCU,FLASH存儲器具有電可擦除、無需后備電源保護數據、可在線編程等特點。在線編程目前有兩種實現方法:在線系統(tǒng)編程(ISP)和在線應用編程(IAP)。ISP一般是通過單片機專用的串行編程接口對單片機內部的FLASH存儲器進行編程,例如AT-MEL公司的單片機AT89S52就提供了一個SPI串行接口對內部程序存儲器編程(ISP)。
在線編程(ISP)允許單片機內部運行的程序去改寫FLASH存儲器的內容,可以在運行過程中修改某些運行參數,已經編程的器件也可以用ISP方式擦除或再編程。單片機在ISP模式下上電時,可以進行ISP操作,在ISP模式下,單片機通過串行端口與外部主機(如PC機或終端)通信,從主機接收命令和數據,用于擦除和再編程代碼存儲區(qū)。ISP的實現一般只需要很少的外部電路輔
助實現,使用ISP技術,連接一根下載線即可對芯片編程,不再需要編程器就可進行單片機的實驗和開發(fā),單片機芯片可以直接焊接在電路板上,調試結束即成成品,甚至可以遠程在線升級或改變單片機中的程序。
2 AT89S52 ISP原理
AT89S52具有ISP功能。在RESET引腳處于高電平時,利用P1.5(MOSI),P1.6(MISO),P1.7(SCK)三引腳的數據設置或傳送達到程序下載的目的,P1.5(MOSI)引腳作為串行指令的輸入端口,P1.6(MISO)引腳作為串行數據的輸出端口,P1.7(SCK)引腳作為串行移位脈沖的輸入端口。
AT89S系列中的FLASH地址編址是以字節(jié)為單位的,在使用過程中應注意高低字節(jié)的區(qū)別,上位機和目標板通信時,一般都是4字節(jié)的指令,第1字節(jié)為操作碼,第2、第3字節(jié)一般為地址碼,第4字節(jié)為數據。
根據串行下載波形圖和串行下載編程指令集即可完成有關在線下載的操作。
3 在線編程控制系統(tǒng)的設計
3.1 系統(tǒng)結構
AT89S52負責人機界面的信息交互,主要由顯示部分,鍵盤部分和數據通路組成。
顯示部分由AT89S52的P1,P2口組成。P2是八位的顯示數據通路,P1.1~P1.4是4個LED的使能線,達到動態(tài)顯示4位數據的效果。
鍵盤部分由INT0,INT1,CT0,CT1組成。利用中斷的優(yōu)先級嵌套實現命令與數據的輸入,減少了鍵盤的體積。硬件分配如下:
數據通路部分主要是PSP的控制。PSP是PIC16FX系列微處理器專門針對8位機的通用數據端口,由CS,WR,RD,8位數據線組成,可供AT89S52直接控制。
PIC收到PSP的數據后會產生一個中斷響應,由軟件設計者決定該中斷如何處理。因此,可以設定0XC0~0XFF為命令字節(jié),供控制使用,0X00~0X09為功能號,組合起來就可以實現各種控制的命令。
PIC16FX具有4路A/D通道,精度為10 b,轉換時間為56μs。內置硬件看門狗電路,提高了可靠性,節(jié)省了軟件開支。利用其4路中斷功能實現系統(tǒng)復位及檢修測試功能。PGM接口(在線編程接口)可采用ICD2適配器進行在線編程和調試。系統(tǒng)結構如圖1所示。
3.2 系統(tǒng)功能
(1) AT89S52頻率4 MHz,具有在線編程,無需編程器直接燒寫的功能,用AT89S52[INT0],[INT1],[CT0],[CT1]四個引腳單獨引出,方便作為鍵盤接口。
(2) AT89S52 P1.1~P1.4分別作為LED1~4的使能線,高電平有效,P2口作為LED1~4的八位顯示數據口。
(3) AT89S52串口與16F877A的串口可直接進行串口通訊。
(4) AT89S52 P0口及[ALE十P1.0],[WR],[RD]作為8位并行端口與16F877A通訊。
(5) PIC16F877A:頻率20 MHz:
① PA-AN[0]-板載A/D通道:VREF+/-可調
AN[1],[5]一外接A/D通道,AN[2-3]-VREF+/-可調,AN[4]-T0CKI-WDT監(jiān)控。
?、?PB-PB0-外接INT中斷信號,低電平/下降沿有效,PB1,2,4,5作為INPUT1234,低電平/下降沿有效。
3.3 電路原理圖
AT89S52部分電路原理如圖2所示。
PIC16F877A部分電路原理如圖3所示。
4 軟件設計
4.1 AT89S52部分
首先執(zhí)行系統(tǒng)初始化,初始時鐘,全局變量,定時器,IO端口,鍵盤中斷服務子程序。
然后進入MAINLOOP循環(huán)程序,等待接受鍵盤中斷。如果鍵盤有輸入動作,系統(tǒng)產生鍵盤中斷,進入鍵盤中斷服務子程序。
鍵盤中斷服務子程序的主要功能是生成命令數據包,并根據用戶指令處理該命令數據包。
命令數據包的格式如下:
若用戶確認,則發(fā)送到PIC16F877A執(zhí)行;
若用戶取消,則退出鍵盤中斷服務子程序,重新進入等待狀態(tài)。系統(tǒng)運行流程圖如圖4所示。
4.2 PIC軟件結構
PIC系統(tǒng)初始化后首先按默認參數啟動PWM輸出,在啟動過程中不斷地進行A/D轉換,將采集到的數據根據PID策略調節(jié)PWM的占空比,從而達到調節(jié)電機轉速的目的,同時不問斷的監(jiān)聽PSP通道,若收到AT89S52的命令數據包,馬上更新默認啟動參數,讓電機以新參數模式運行在新轉速狀態(tài)。
PIC16F877A執(zhí)行軟件運行流程圖如圖5所示。
5 結 語
利用AT89S52作為主處理器,PIC16F87X作為從處理器,使控制精度大為提高,可達10位PWM精度。AT89S52與PIC16F87X具有在線編程功能,功能齊全,片上資源豐富,可以滿足系統(tǒng)升級要求。隨著帶有系統(tǒng)在線編程功能的單片機得到廣泛應用與發(fā)展,ISP技術成了未來發(fā)展方向,基于在線編程技術的控制系統(tǒng)應用也將越來越廣泛。