⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 源码.c

📁 D7210C和DS75160及DS75161的并口编程资料及源码
💻 C
字号:
P2.0 P2.1 P2.2 作为三根地址线来控制D7210C的RS0 RS1 RS2 进行寄存器选择
D7210C的片选利用P2.5 P2.6 P2.7 通过38译码器选通,即执行XBYTE[0x0xxx]指令即可选通
//***********************************************//
void gpib_init()	//gpib初始化

{
   XBYTE[0x0500]=0x02;                   //芯片复位
   XBYTE[0x0500]=0x2c;                   //置位外部计数发生器
   XBYTE[0x0500]=0x8c;                   //设置为8bits数据传送
   XBYTE[0x0500]=0xa8;                   //低电平中断
   XBYTE[0x0500]=0xc0;                   //进入准备
   XBYTE[0x0100]=0x03;                   //设输入输出产生中断
   XBYTE[0x0400]=0x31;                   //设受命方式为1
   XBYTE[0x0600]=0x20;                   //设程控地址
   XBYTE[0x0600]=0xc0;                   //设程控地址为15
   XBYTE[0x0700]=0x0a;                   //设结束字符为“0x0a”(回车)
   XBYTE[0x0500]=0;                      //立即执行,产生本地消息
}
//***********************************************//
void rec488()		//数据接收
{
   char idata tem48,tem88;
   char idata i,j;
   tem48=XBYTE[0x0100];
   if((tem48&0x08)==0x08)//产生器件清除中断
   {
      ;                                  //不执行任何指令
   }
   else if((tem48&0x04)==0x04)//出错中断
   {
      XBYTE[0x0100]=0x08;                //器件清除
      return;
   }
   else if((tem48&0x01)==0x01)//收到数据,将数据存到pdtem[]数组
   {
      i=0;
      for(j=0;j<18;j++)
      pdtem[j]=0;
      tem88=XBYTE[0x0000];
      while(tem88!=0x0a)		//遇到结束符0x0a则接收完毕
      {
         pdtem[i]=tem88;
         i++;
         tem48=XBYTE[0x0100];
         while((tem48&0x01)!=0x01)
         tem48=XBYTE[0x0100];
         tem88=XBYTE[0x0000];
      }
      strjudge();                        //接收完毕进入数据处理程序
   }
}
//**************************************************//
void strjudge()		//数据处理
{
   if(strncmp(pdtem,"data",4)==0)//判断接收到的指令(如果前四个字符为"data0")
   {
      。。。。。。
      。。。。。。
      。。。。。。//执行相应操作
      send_data(pdtem);                  //将要返回的字符放到pdtem[]数组,发送到计算机接收
   }
}
//*************************************************//
void send_data(char temp[64])		//数据发送
{
   uchar i;
   i=0;
   do
   {
      tem88=XBYTE[0x0100];
      while((tem88&0x02)!=0x02)
      tem88=XBYTE[0x0100];
      XBYTE[0x0000]=pdtem[i];
      i++;
   }
   while(pdtem[i-1]!=0x0a);			//遇到结束符0x0a则发送完毕
   while(((tem88=XBYTE[0x0100])&0x02)==0x02);	//防止输出中断未清除,这句可以不加
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -