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

📄 ad2543.h

📁 在mega128上实现ad2543的驱动程序
💻 H
字号:

/****************************************************************************/
//功能: AD2543与Atmega128硬件接口
//输入: 无
//输出: 无
//备注:
/****************************************************************************/
#define CS_SET   (PORTA|=(1<<0))
#define CS_CLR   (PORTA&=~(1<<0))

#define DIN_SET  (PORTA|=(1<<1))
#define DIN_CLR  (PORTA&=~(1<<1))

#define SCLK_SET (PORTA|=(1<<2))
#define SCLK_CLR (PORTA&=~(1<<2)) 

#define DOUT   (PINA&(1<<3))
#define EOC    (PINA&(1<<4))

#define uchar unsigned char
#define uint  unsigned int
/****************************************************************************/
//功能: AD2543各功能模块函数
//输入: 无
//输出: 
//备注:
/****************************************************************************/

//void init_ad2543(void);
void write_ad2543(uint command);
uint read_ad2543(void);


void init_ad2543(void)
 {
   write_ad2543(0xA700); 
 }
 /*D7-D4为:通道0-10的选择,11-13为test voltage的选择,14为power down
   D3-D2为output data length(01为8位,11为16位,其它为12位;
   D1位output data format:1为高位在前,0为低位在前
   D0为:1为bipolar,0为unipolar;*/
 void write_ad2543(uint command)   
  {
    uint token=0x8000,cmd;
	uchar i;
	cmd=command;
    CS_SET;
	CS_CLR;
	SCLK_CLR;
	delay_nus(2);
	for(i=0;i<16;i++)
	 {
       
		   if(cmd&token)
		    DIN_SET;
	       else
	        DIN_CLR;
	       SCLK_SET;
	       delay_1us();
	       SCLK_CLR;
		   token=token>>1;	   
	 }
	 delay_nus(2); 
  }
  
  
  uint read_ad2543(void)
   {
     uint ad16bit=0x0000;
	 uchar i;
	 while(EOC){;}
	 for(i=0;i<16;i++)
	  {
	    if(DOUT) ad16bit|=0x01;
		SCLK_SET;
		delay_1us();
		SCLK_CLR;
		ad16bit=ad16bit<<1;
	  }
	  return(ad16bit);
   }

⌨️ 快捷键说明

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