max542_16dac_driver.c

来自「基于AD542的16位串行数模转换驱动,精度极高」· C语言 代码 · 共 43 行

C
43
字号
#include "SPCE061V004.H"

#define din   0x0080
#define sclk  0x0040
#define ldac  0x0020
#define cs    0x0010



 
int main()
{
	initial_iob();
	DAC(0x7fff);
	while(1)
		*P_Watchdog_Clear=1;
}


int initial_iob()
{
	*P_IOB_Dir=0x00f0;
    *P_IOB_Attrib=0x00f0;                                                           
    *P_IOB_Data=0x0000;                                                         
    	
}

int DAC(unsigned int data)
{
     unsigned int i=0;
	 *P_IOB_Data&=(~cs);//cs拉低
	 *P_IOB_Data|=ldac;//ldac拉高
	 for(i=0;i<16;i++)//写16位串行数据
	 	{
	 	    *P_IOB_Data&=(~sclk);//clk拉低
	 		if(data&0x8000) *P_IOB_Data|=din;
	 		else  *P_IOB_Data&=(~din);
	 		data=data<<1;
	 		*P_IOB_Data|=sclk;   //clk拉高
	    }
	        *P_IOB_Data|=cs;//cs拉高
	        *P_IOB_Data&=(~ldac);//ldac拉低	    
}

⌨️ 快捷键说明

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