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

📄 application.c

📁 一本关于控制系统仿真的书的程序 1、文件夹1中的程序是书中的一些仿真。 2、文件2中的是最近做的预测控制、PID控制及逻辑控制的对比综合研究。 3、文件夹3中是与maltab通信的数据采集板的设
💻 C
字号:

#include "fx2.h"
#include "fx2regs.h"
#include "application.h"
#include "syncdly.h" 
#include "isr.h" 

#define GPIFTRIGRD 4
/*******************************************************************
 函数功能:DA传送数据,10位精度。
 入口参数:dac_data8位数据。
 出口参数:无
 说明:
*******************************************************/

void DAC_5618(unsigned char dac_dataH,unsigned char dac_dataL,unsigned char dac_channel)
{     
     unsigned char TempL,TempH;
	 if(dac_channel==0x01)   //使用通道A。(即out0)
	    {
	     nCS = 1;
	     TempH=0xc0; //模式调整
	     TempL=0x00;
	     TempH|=(dac_dataH<<2)|(dac_dataL>>6);
	      TempL|=(dac_dataL<<2);
	     nCS = 0;
	     SPI_Transmit(TempH);
	     SPI_Transmit(TempL);
	     nCS = 1;
		}
	 else if (dac_channel==0x02) //使用通道B。(即out1)
	   {
	     nCS = 1;
	     TempH=0x40;
	     TempL=0x00;
	      TempH|=(dac_dataH<<2)|(dac_dataL>>6);
	     TempL|=(dac_dataL<<2);
	     nCS = 0;
	     SPI_Transmit(TempH);
	     SPI_Transmit(TempL);
	     nCS = 1;
	   }
	 
	else  
	 { 
	   // asm("NOP");
	  }
}
//*****************************************************************/
//初始化spi
void SPI_Transmit(unsigned char dac_data)
{	 
   unsigned char i;
  
    for(i=0;i<8;i++)
    {
       SCK = 1;
	   if(dac_data&0x80) 
		    DIN=1;
        else      
		    DIN=0;
        SCK=0;
        dac_data<<=1;
     }
    SCK = 1;//
}
//******************************************************
//******************************************************
void Peripheral_SingleWordRead( WORD xdata *gdata )
   { 
     BYTE g_data = 0x00;
     while( !( GPIFTRIG & 0x80 ) ) 
         {
          }
     g_data = XGPIFSGLDATLX; // trigger GPIF
     while( !( GPIFTRIG & 0x80 ) ) // poll GPIFTRIG.7 Done bit
         {
            ;
          }
     *gdata = ( ( WORD )XGPIFSGLDATH << 8 ) | ( WORD )XGPIFSGLDATLNOX;
    }
//*****************************************************
// write single word to PERIPHERAL, using GPIF
//*****************************************************
void Peripheral_SingleWordWrite( WORD gdata )
    {
        while( !( GPIFTRIG & 0x80 ) ) // poll GPIFTRIG.7 Done bit
            {
               ;
            }

       XGPIFSGLDATH = gdata >> 8;
       XGPIFSGLDATLX = gdata; // trigger GPIF

     }
//--------------------------------------------------------------
// read(s) from PERIPHERAL, using GPIF and EPxFIFO
//--------------------------------------------------------------
void Peripheral_FIFORead( BYTE FIFO_EpNum )
{
      GPIFTRIG = GPIFTRIGRD | FIFO_EpNum; // launch GPIF FIFO READ Transaction to EP6 FIFO
      SYNCDELAY;
      while( !( GPIFTRIG & 0x80 ) )     // poll GPIFTRIG.7 GPIF Done bit
          {
            ;
          }
    
	      SYNCDELAY;
// for EPx read(s)
}
//--------------------------------------------------------------
// Set GPIF Transaction Count
//--------------------------------------------------------------
void Peripheral_SetGPIFTC( WORD xfrcnt)
{
GPIFTCB1 = xfrcnt >> 8; // setup transaction count
SYNCDELAY;
GPIFTCB0 = ( BYTE )xfrcnt;
}

⌨️ 快捷键说明

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