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

📄 dac.c

📁 dac8532读写程序 可以根据需要读写控制DAC8532的输出
💻 C
字号:
#include  "config.h" 
#define   DA_IN    (1<<6)         /*P0.6口为ATT7022B的片选 */
#define   DA_CK    (1<<7)         /*P0.7输出引脚*/
#define   DA_CS	   (1<<24)        /*P1.24输出引脚*/



/****************************************************************************
* 名称:dacIni()
* 功能:初始化dac8532接口。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  DacIni1(void)
{  
    IO0DIR=DA_IN | DA_CK | IO0DIR;
	IO1DIR=DA_CS | IO1DIR;
	
	IO1SET=DA_CS;
	IO0SET=DA_IN;
	IO0SET=DA_CK;
}

//**************************************************//
//命令字
//0x00
//0x10
//0x04
//0x14
//
//


void write_Dac(uint8 command,uint16 Dac_nunber)
{
	uint8 i,data=0x80;
	uint16 shift_data=0x8000;
	
	IO1SET=DA_CS;
	IO0CLR=DA_CK;
	IO1CLR=DA_CS;

	for(i=0;i<8;i++)
    {
		IO0SET = DA_CK;  // CLK
		if((command & data)!=0)
		{
		    IO0SET = DA_IN;  
		    IO0SET = DA_IN;  
		}
		else
		{
		    IO0CLR = DA_IN;  
		    IO0CLR = DA_IN;  
		}
		IO0CLR = DA_CK;  // CLK
		IO0CLR = DA_CK;  // CLK
		data =(data>>1);
    }
	
    for(i=0;i<16;i++)
    {
		IO0SET = DA_CK;  // CLK
		if((Dac_nunber & shift_data)!=0)
		{
		    IO0SET = DA_IN;  
		    IO0SET = DA_IN;  
		}
		else
		{
		    IO0CLR = DA_IN;  
		    IO0CLR = DA_IN;  
		}
		IO0CLR = DA_CK;  // CLK
		IO0CLR = DA_CK;  // CLK
		shift_data =(shift_data>>1);
    }
    IO1SET=DA_CS;
	IO0SET = DA_CK;  // CLK
	IO0SET = DA_IN;  

}

////////*******例子

	switch(step_num)
	{
		case 0:
			corrosive_Vx=0x8000;
			write_Dac(0x00,0x8000);
			write_Dac(0x34,0x8000);
			step_num++;
		break;
		case 1:
			corrosive_buf[0]=read_ad(0x97);
			step_num++;
		break;
		case 2:		
			corrosive_buf[1]=read_ad(0x97);
			if(corrosive_buf[0]/2 == corrosive_buf[1]/2)
			{
				sum=corrosive_buf[0]+corrosive_buf[1];
				corrosive_V=sum/2;
				corrosive_buf[2]=corrosive_V;
				corrosive_buf[1]=read_ad(0xa7);
				send_num16(corrosive_buf[2]);
				send_num16(corrosive_buf[1]);
				
				corrosive_Vx=corrosive_V;
				IO0SET=SHUT2;
				step_num++;
			}
			else
			{
				step_num--;
			}
		break;


⌨️ 快捷键说明

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