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

📄 dio.c

📁 DSP2407上实现数控IO功能的C语言源程序
💻 C
字号:
#include "LF2407.h"
#include "ioports.h"
/******根据CPLD得译码,DI_CSL地址为0xxx xxxx xxx0 1010,即IO空间0x000A
                      DI_CSH地址为0xxx xxxx xxx0 1011,即IO空间0x000B
                      DO_CSL地址为0xxx xxxx xxx0 1100,即IO空间0x000C
                      DO_CSH地址为0xxx xxxx xxx0 1101,即IO空间0x000D
*********************************************************************/
static int DOL_State=0;
static int DOH_State=0;
static int DIL_State=0;/*****初始状态为0*****/
static int DIH_State=0;    
int testbit;  
int testresult=0;
/************************************/
void DI_Read(int LowHigh,int Port_Num) /***LowHigh=1为低16位,0为高8位**************/
{
  if(LowHigh==1) 
  {
    inport(DILS,&DIL_State);
    if(tstbit(DIL_State,Port_Num))
    testbit=101;
  }  
  else
  {
     inport(0x000B, &DIH_State);
     tstbit(DIH_State,Port_Num); 
   }
}

void DO_Write(int LowHigh,int Port_Num,int SetClr) /***LowHigh=1,为低16位,LowHigh=0为高8位,Port_Num为端口号,SetClr=1,为置位1,=0为清零***/
{
  if(LowHigh==1) /******读入低16位状态,与DOValue按位相与相或***********/
  {
    if(SetClr==1) setbit(DOL_State,Port_Num);
    else       clrbit(DOL_State,Port_Num);
    outport(0x000C,DOL_State);
   }
  else
   {
      if(SetClr==1)  setbit(DOH_State,Port_Num);
      else        clrbit(DOH_State,Port_Num);
      outport(0x000D,DOH_State);
    }
}
main()
{
  int i;
  asm(" setc SXM"); //抑制符号位扩展
  asm(" clrc OVM"); //清楚累加器溢出位
  asm(" clrc CNF"); //将B0配置为数据空间
  *SCSR1=0X83FF;    //×2模式,主频30MHz
    
  *IMR=0X0000;       //禁止所有中断
  *IFR=0XFFFF;       //清除所有中断标志
  WSGR=0x00;         //禁止所有等待状态
  *WDCR=0X0E8; 
  while(1)
  { 

 //  DI_Read(1,3);   //测试DI
inport(0x0001,&testresult);//测试手脉清计数        
//   inport(0x0000,&testresult);//测试编码器计数清零
//   inport(0x0004,&testresult);  //测试U51_Code3_Rd   
//    outport(0x0005,&testresult); //测试U51_PIO_WrState,ok,写信号   
//    outport(0x0006,&testresult); //测试U51_PIO_WrData,ok,写信号 
//      inport(0x0007,&testresult); //测试U51_PIO_RDState
//     inport(0x0008,&testresult); //测试U51_PIO_RdData
//   inport(0x0009,&testresult); //测试U53_Hand_Rd     
//     inport(0x000A,&testresult); //测试U53_DI_CsL
//      inport(0x000B,&testresult); //测试U53_DI_CsH
//    outport(0x000D,&testresult); //测试U53_DO_CsH
 // DO_Write(1,2,1);      //测试DO,写第17位
  }
}
void interrupt nothing()
{
 return;
}

⌨️ 快捷键说明

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