新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)的ISP在線編程設(shè)計(jì)分析

基于單片機(jī)的ISP在線編程設(shè)計(jì)分析

作者: 時(shí)間:2012-07-31 來源:網(wǎng)絡(luò) 收藏

隨著電子技術(shù)的日益發(fā)展,芯片的規(guī)模越來越大,封裝日趨小型化,相應(yīng)地對(duì)系統(tǒng)板級(jí)調(diào)試的困難也在加大。在傳統(tǒng)的調(diào)試方式中,頻繁的調(diào)試和更換程序需要頻繁地插拔芯片,開發(fā)效率極低。AT89S系列提供的技術(shù)徹底地改變了傳統(tǒng)的開發(fā)模式,開發(fā)系統(tǒng)時(shí)不會(huì)損壞芯片的引腳,加速了產(chǎn)品的上市并降低了研發(fā)成本,縮短了從、制造到現(xiàn)場(chǎng)調(diào)試的時(shí)間,簡(jiǎn)化了生產(chǎn)流程,大大提高了工作效率,因此它是對(duì)市場(chǎng)定型產(chǎn)品進(jìn)行現(xiàn)場(chǎng)升級(jí)和維護(hù)的經(jīng)濟(jì)、有效的方式,極大地促進(jìn)了PLD產(chǎn)品的發(fā)展。

本文引用地址:http://butianyuan.cn/article/171100.htm

1 PC機(jī)并行口

1.1 并行口硬件接口簡(jiǎn)介

  標(biāo)準(zhǔn)并行口有25個(gè)引腳,其中數(shù)據(jù)端口引腳為2~9,狀態(tài)端口引腳為15、10~13,控制端口引腳1、14、16、17用于連接器件,其他引腳18~25是接地引腳GND。25針并行口如圖1所示。

按此在新窗口瀏覽圖片
圖1 25針并行口

  并行口工作在SPP模式下,PC機(jī)是通過對(duì)3個(gè)8位端口寄存器的讀或?qū)憗韺?shí)現(xiàn)對(duì)它們的控制。端口寄存器分別是:

  ◆ 數(shù)據(jù)端口(地址0x378)為D7~D0,對(duì)應(yīng)引腳P9~P2;
  ◆ 狀態(tài)端口(地址0x379)為S7~S3,對(duì)應(yīng)引腳P11、P10、P12、P13、P15;
  ◆ 控制端口(地址0x37A)為C3~C0,對(duì)應(yīng)引腳P17、P16、P14、P1。

  注意: S7、C0、C1、C3信號(hào)的邏輯狀態(tài)在連接器處是與相應(yīng)寄存器位相反的。對(duì)這些位進(jìn)行寫操作時(shí),寫入的值應(yīng)該與連接器處設(shè)置的值相反;同樣,進(jìn)行讀操作時(shí),讀取的值也與連接器處設(shè)置的值相反。

1.2 并行口簡(jiǎn)介

  Windows對(duì)系統(tǒng)底層操作采取了屏蔽的策略,但是在硬件或系統(tǒng)軟件開發(fā)中只要涉及系統(tǒng)底層的操作,就不得不深入到Windows的內(nèi)核去編寫屬于系統(tǒng)級(jí)的設(shè)備驅(qū)動(dòng)程序。對(duì)并行口的讀/寫操作就是如此。為了繞過 Windows安全保護(hù)機(jī)制,需要允許32位 Windows程序直接對(duì) I/O口進(jìn)行操作。這里使用由 Yariv Kaplan編寫的 WinIo庫(kù)中的幾個(gè)函數(shù)來實(shí)現(xiàn)對(duì)I/O口的讀/寫。

(1) 初始化與終止
  對(duì)端口讀/寫前后要分別初始化和終止。
  InitializeWinIo();
  ShutdownWinIo();

(2) 安裝與卸載
  如果操作系統(tǒng)是Windows98或Windows95,則需要調(diào)用驅(qū)動(dòng)函數(shù)。
  InstallWinIoDriver(PSTR pszWinIoDriverPath, bool IsDemandLoaded = false);
  RemoveWinIoDriver();

(3) 讀/寫I/O口
  GetPortVal(WORD wPortAddr, PDWORD pdwPortVal, BYTE bSize);
  SetPortVal(WORD wPortAddr, DWORD dwPortVal, BYTE bSize);

  GetPortVal函數(shù)從指定端口讀取一個(gè)BYTE/WORD/DWORD類型的值;SetPortVal函數(shù)向指定端口寫入一個(gè)BYTE/WORD/DWORD類型的值;wPortAddr是指定一個(gè)端口地址值;pdwPortVal為指向一雙字節(jié)型變量的指針,該變量存儲(chǔ)從wPortAddr端口讀取的值;dwPortVal為一雙字節(jié)型變量寫到wPortAddr端口中;bSize指定讀取字節(jié)數(shù),值可以為1、2或4。

2 AT89S5X系列

2.1 AT89S51簡(jiǎn)介

  AT89S51是一個(gè)低功耗、高性能CMOS 8位單片機(jī),片內(nèi)含4 KB (InSystem Programming)的可反復(fù)擦寫1 000次的Flash只讀程序存儲(chǔ)器。該器件采用Atmel公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和 Flash存儲(chǔ)單元。功能強(qiáng)大的AT89S51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。

2.2 AT89S51串行時(shí)序及指令

2.2.1 串行編程模式下的時(shí)序

按此在新窗口瀏覽圖片

2.2.2 串行編程指令

  串行編程使用4字節(jié)協(xié)議,指令如表1所列。

表1 串行編程指令
按此在新窗口瀏覽圖片


上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉