碧波液压网 欢迎你,游客。 登录 注册

单片机的ISP在线编程设计

版权信息:站内文章仅供学习与参考,如触及到您的版权信息,请与本站联系。

  随着电子技术的日益发展,芯片的规模越来越大,封装日趋小型化,相应地对系统板级调试的困难也在加大。在传统的调试方式中,频繁的调试和更换程序需要频繁地插拔芯片,开发效率极低。AT89S系列单片机提供的ISP在线编程技术彻底地改变了传统的开发模式,开发单片机系统时不会损坏芯片的引脚,加速了产品的上市并降低了研发成本,缩短了从设计、制造到现场调试的时间,简化了生产流程,大大提高了工作效率,因此它是对市场定型产品进行现场升级和维护的经济、有效的方式,极大地促进了PLD产品的发展。

  1 PC机并行口

  1.1 并行口硬件接口简介

  标准并行口有25个引脚,其中数据端口引脚为2~9,状态端口引脚为15、10~13,控制端口引脚1、14、16、17用于连接器件,其他引脚18~25是接地引脚GND。25针并行口如图1所示。

  

图1 25针并行口

  并行口工作在SPP模式下,PC机是通过对3个8位端口寄存器的读或写来实现对它们的控制。端口寄存器分别是:

  ◆ 数据端口(地址0x378)为D7~D0,对应引脚P9~P2;

  ◆ 状态端口(地址0x379)为S7~S3,对应引脚P11、P10、P12、P13、P15;

  ◆ 控制端口(地址0x37A)为C3~C0,对应引脚P17、P16、P14、P1。

  注意: S7、C0、C1、C3信号的逻辑状态在连接器处是与相应寄存器位相反的。对这些位进行写操作时,写入的值应该与连接器处设置的值相反;同样,进行读操作时,读取的值也与连接器处设置的值相反。

  1.2 并行口编程简介

  Windows对系统底层操作采取了屏蔽的策略,但是在硬件或系统软件开发中只要涉及系统底层的操作,就不得不深入到Windows的内核去编写属于系统级的设备驱动程序。对并行口的读/写操作就是如此。为了绕过 Windows安全保护机制,需要允许32位 Windows程序直接对 I/O口进行操作。这里使用由 Yariv Kaplan编写的 WinIo库中的几个函数来实现对I/O口的读/写。

  (1) 初始化与终止

  对端口读/写前后要分别初始化和终止。

  InitializeWinIo();

  ShutdownWinIo();

  (2) 安装与卸载

  如果操作系统是Windows98或Windows95,则需要调用驱动函数。

  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函数从指定端口读取一个BYTE/WORD/DWORD类型的值;SetPortVal函数向指定端口写入一个BYTE/WORD/DWORD类型的值;wPortAddr是指定一个端口地址值;pdwPortVal为指向一双字节型变量的指针,该变量存储从wPortAddr端口读取的值;dwPortVal为一双字节型变量写到wPortAddr端口中;bSize指定读取字节数,值可以为1、2或4。

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签:
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码:

最新评论