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

📄 dac5618.c

📁 DAC5618数模转化程序
💻 C
字号:
#include "SPCE061A.h"
#include "dac5618.h"

//#define	Set_IOA_Bit(x)		(*P_IOA_Data = *P_IOA_Buffer | x)
//#define	Clear_IOA_Bit(x)	(*P_IOA_Data = *P_IOA_Buffer & ~x)
#define	DA_DIN		0x0001         //串行数据输入   DIN---IOA0
#define	DA_SCLK	    0x0002         //串行时钟       SCLK---IOA1
#define	DA_CS		0x0004         //使能信号       CS---IOA2

extern unsigned int data_val;             //5618的控制字

void Init_AGC_IO_Port()
{
    *P_Watchdog_Clear= 0x0001;
    *P_IOA_Dir &= 0xffbf;             //IOA4(1,1,0),IOA5(1,1,0),IOA6(0,0,0)
    *P_IOA_Dir |= 0x003f;             //IOA0-3(1,1,0),其他位不变
    *P_IOA_Attrib &= 0xffbf;
    *P_IOA_Attrib |= 0x003f;
    *P_IOA_Data = 0x0000;
}


void Ctrl_TLV5618(unsigned int dat)           //传送数据dat
{
	unsigned int order,value,test,i;
	test = 0x8000;                            //测试DIN
	order = 0x4000;         //(R1 SPD PWR R0=1000)Write new DAC A value and update DAC A and B simultaneously
	value = order | dat;
//	Set_IOA_Bit(DA_CS);                       //CS=1
	*P_IOA_Data|=0x0004;
	delay(3);
//	Clear_IOA_Bit(DA_CS);                     //CS=0 开始转化
	*P_IOA_Data&=0xfffb;
	delay(3);
	for(i=0;i<16;i++)                         
	{
		*P_Watchdog_Clear= 0x0001;
		
		
		if(test & value)
		{
//			Set_IOA_Bit(DA_SCLK); 	              //SCLK=1
//			Set_IOA_Bit(DA_DIN);              //DIN=1
			*P_IOA_Data|=0x0003;
			delay(2);
		}
		else
		{
//			Set_IOA_Bit(DA_SCLK); 	              //SCLK=1
//			Clear_IOA_Bit(DA_DIN);	          //DIN=0
			*P_IOA_Data&=0xfffe;
			*P_IOA_Data|=0x0002;
			delay(2);
		}
//		Clear_IOA_Bit(DA_SCLK);           //SCLK=0
		*P_IOA_Data&=0xfffd;
//		delay(1);
		test = test>>1;                       //右移一位
	}
//	Set_IOA_Bit(DA_SCLK);		              //SCLK=1
	*P_IOA_Data|=0x0002;
	delay(2);
//	Clear_IOA_Bit(DA_DIN);	          //DIN=0
	*P_IOA_Data&=0xfffe;
	delay(2);
//	Set_IOA_Bit(DA_CS);	                      //CS=1  停止转化
    *P_IOA_Data|=0x0004;
}

void delay(unsigned int time)
{
	unsigned int i;
	for(i=0;i<time;i++)
	*P_Watchdog_Clear = 1;
}

⌨️ 快捷键说明

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