單片機簡(jiǎn)介及其ISP在線(xiàn)編程設計
隨著(zhù)電子技術(shù)的日益發(fā)展,芯片的規模越來(lái)越大,封裝日趨小型化,相應地對系統板級調試的困難也在加大。在傳統的調試方式中,頻繁的調試和更換程序需要頻繁地插拔芯片,開(kāi)發(fā)效率極低。AT89S系列單片機提供的ISP在線(xiàn)編程技術(shù)徹底地改變了傳統的開(kāi)發(fā)模式,開(kāi)發(fā)單片機系統時(shí)不會(huì )損壞芯片的引腳,加速了產(chǎn)品的上市并降低了研發(fā)成本,縮短了從設計、制造到現場(chǎng)調試的時(shí)間,簡(jiǎn)化了生產(chǎn)流程,大大提高了工作效率,因此它是對市場(chǎng)定型產(chǎn)品進(jìn)行現場(chǎng)升級和維護的經(jīng)濟、有效的方式,極大地促進(jìn)了PLD產(chǎn)品的發(fā)展。
本文引用地址:http://dyxdggzs.com/article/171117.htm1 PC機并行口
1.1 并行口硬件接口簡(jiǎn)介
標準并行口有25個(gè)引腳,其中數據端口引腳為2~9,狀態(tài)端口引腳為15、10~13,控制端口引腳1、14、16、17用于連接器件,其他引腳18~25是接地引腳GND。25針并行口如圖1所示。
圖1 25針并行口
并行口工作在SPP模式下,PC機是通過(guò)對3個(gè)8位端口寄存器的讀或寫(xiě)來(lái)實(shí)現對它們的控制。端口寄存器分別是:
◆ 數據端口(地址0x378)為D7~D0,對應引腳P9~P2;
◆ 狀態(tài)端口(地址0x379)為S7~S3,對應引腳P11、P10、P12、P13、P15;
◆ 控制端口(地址0x37A)為C3~C0,對應引腳P17、P16、P14、P1。
注意: S7、C0、C1、C3信號的邏輯狀態(tài)在連接器處是與相應寄存器位相反的。對這些位進(jìn)行寫(xiě)操作時(shí),寫(xiě)入的值應該與連接器處設置的值相反;同樣,進(jìn)行讀操作時(shí),讀取的值也與連接器處設置的值相反。
Windows對系統底層操作采取了屏蔽的策略,但是在硬件或系統軟件開(kāi)發(fā)中只要涉及系統底層的操作,就不得不深入到Windows的內核去編寫(xiě)屬于系統級的設備驅動(dòng)程序。對并行口的讀/寫(xiě)操作就是如此。為了繞過(guò) Windows安全保護機制,需要允許32位 Windows程序直接對 I/O口進(jìn)行操作。這里使用由 Yariv Kaplan編寫(xiě)的 WinIo庫中的幾個(gè)函數來(lái)實(shí)現對I/O口的讀/寫(xiě)。
(1) 初始化與終止
對端口讀/寫(xiě)前后要分別初始化和終止。
InitializeWinIo();
ShutdownWinIo();
(2) 安裝與卸載
如果操作系統是Windows98或Windows95,則需要調用驅動(dòng)函數。
InstallWinIoDriver(PSTR pszWinIoDriverPath, bool IsDemandLoaded = false);
RemoveWinIoDriver();
(3) 讀/寫(xiě)I/O口
GetPortVal(WORD wPortAddr, PDWORD pdwPortVal, BYTE bSize);
SetPortVal(WORD wPortAddr, DWORD dwPortVal, BYTE bSize);
GetPortVal函數從指定端口讀取一個(gè)BYTE/WORD/DWORD類(lèi)型的值;SetPortVal函數向指定端口寫(xiě)入一個(gè)BYTE/WORD/DWORD類(lèi)型的值;wPortAddr是指定一個(gè)端口地址值;pdwPortVal為指向一雙字節型變量的指針,該變量存儲從wPortAddr端口讀取的值;dwPortVal為一雙字節型變量寫(xiě)到wPortAddr端口中;bSize指定讀取字節數,值可以為1、2或4。
2 AT89S5X系列單片機
2.1 AT89S51簡(jiǎn)介
AT89S51是一個(gè)低功耗、高性能CMOS 8位單片機,片內含4 KB ISP(InSystem Programming)的可反復擦寫(xiě)1 000次的Flash只讀程序存儲器。該器件采用Atmel公司的高密度、非易失性存儲技術(shù)制造,兼容標準MCS51指令系統及80C51引腳結構,芯片內集成了通用8位中央處理器和ISP Flash存儲單元。功能強大的AT89S51可為許多嵌入式控制應用系統提供高性?xún)r(jià)比的解決方案。
2.2 AT89S51串行編程時(shí)序及指令
2.2.1 串行編程模式下的時(shí)序分析
2.2.2 串行編程指令
串行編程使用4字節協(xié)議,指令如表1所列。
表1 串行編程指令
評論