微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > FPGA和CPLD > 用CPLD实现单片机与ISA总线并行通信

用CPLD实现单片机与ISA总线并行通信

时间:11-08 来源:互联网 点击:
    • 3 通信软件设计

      PC104是基于ISA总线的,在系统软件设计中要防止地址冲突。PC104中使用A0~A9地址位来表示I/O端口地址,即可有1024个口地址:前512个供系统板使用,后512个供扩充槽使用。当A9=0时表示为系统板上的口地址;A9=1时,表示扩充插槽接口卡上的口地址。因此,采用保留的口地址220H和221H,保证不会发生地址冲突。

      本程序中PC104采用查询方式接收数据,单片机用中断方式接收数据。

      #define pcreadwrite 0x220 /*PC104读写数据口地址*/

      #define pcrdstate 0x221 /*PC104查询状态口地址*/

      PC104写数据函数:

      Void pcwrite(int port,unsigned char ch)

      { outportb(pcreadwrite,ch);

      while ((inportb(pcrdstate)&0x02)!=0x02); /*等待单片机读走数据*/

      { }

      }

      单片机读子程序:

      MCUWR:MOV DPTR,#4000H

      MOVX A,@DPTR

      RETI

      PC104读数据函数:

      Unsigned char pcread(int port)

      { while((inportb(pcrdstate)&0x01)!=0x01);/*等待单片机写数据*/

      {}

      return inportb(pcreadwrite);

      }

      单片机写子程序:

      MCUWR:MOV DPTR,#8000H

      MOVX @DPTR,A ;等待PC104读走数据

      RET

      4结论

      用CPLD实现单片机与ISA总线接口的并行通信,电路结构简单、体积小,1片CPLD芯片足够,并且控制方便,实时性强,通信效率高。本设计方法已成功地应用于作者开发的各种数据采集系统中,用作单片机与PC104之间的并行数据通信,效果非常理想。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top