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

📄 ad421.c

📁 AD421 是美国ADI 公司推出的高性能模数转换器,其优良特性使其被广泛应用于各种智能变送器中及其他工 业控制场合中AD421程序
💻 C
字号:
#include <c8051f020.h>
#include <INTRINS.H>


void SYSCLK_Init (void);
void PORT_Init (void);
void Delay (int);
void da421_conv1(unsigned int);
void da421_conv2(unsigned int);
void da421_conv3(unsigned int);
void Delay_adda(int);
/* hardware connect configure */
sbit DA_data1=P2^6;
sbit DA_CLK1=P2^5;
sbit DA_CS1=P2^4;

sbit DA_data2=P1^4;
sbit DA_CLK2=P1^3;
sbit DA_CS2=P1^2;

sbit DA_data3=P1^1;
sbit DA_CLK3=P1^0;
sbit DA_CS3=P2^7;

sbit DA_data4=P1^7;
sbit DA_CLK4=P1^6;
sbit DA_CS4=P1^5;


void da421_conv1(unsigned int a)
{
   unsigned int n;
   unsigned int temp=0;
   int i;
   n=a;
   for(i=16;i>0;i--) 	
	{
	 
	  DA_CLK1=0;
      Delay_adda(10);
	  temp=a>>(i-1);
	  temp=temp&0x0001;
	  if(temp==0)DA_data1=0;
	  else DA_data1=1;
	  // DA_data1=1;
	  	  	 
	 // Delay_adda(10);
	  DA_CLK1=1;
	  Delay_adda(10);
	  a=n;
     }
     DA_CS1=0;
	 Delay_adda(20);
	 DA_CS1=1;  
}

void da421_conv2(unsigned int a)
{
   unsigned int n;
   unsigned int temp;
   int i;
   n=a;
                                             // enable);
    //DA_CS2=1;
   for(i=16;i>0;i--) 	
	{
	 
	 DA_CLK2=0;
      Delay_adda(10);
	  temp=a>>(i-1);
	  temp=temp&0x0001;
	  if(temp==0)DA_data2=0;
	  else DA_data2=1;
	  // DA_data2=1;
	  	  	 
	 // Delay_adda(10);
	  DA_CLK2=1;
	  Delay_adda(10);
	  a=n;
     }
     DA_CS2=0; 
	 Delay_adda(20);
	 DA_CS2=1; 
	 //Delay_adda(10); 
}


void da421_conv3(unsigned int a)
{
   unsigned int n;
   unsigned int temp=0;
   int i;
   n=a;
                                             // enable);
    //DA_CS3=1;
	//DA_CLK3=0;
	//DA_data3=0 ;                        // Initialize crossbar and GPIO

   //DA_CS3=1;
   //Delay_adda(2);
   for(i=16;i>0;i--) 	
	{
	 
	  DA_CLK3=0;
      Delay_adda(10);
	  temp=a>>(i-1);
	  temp=temp&0x0001;
	  if(temp==0)DA_data3=0;
	  else DA_data3=1;
	  // DA_data3=1;
	  	  	 
	 // Delay_adda(10);
	  DA_CLK3=1;
	  Delay_adda(10);
	  a=n;
     }
      DA_CS3=0;
	 Delay_adda(20);
	 DA_CS3=1;  
}

void da421_conv4(unsigned int a)
{
  unsigned int n;
   unsigned int temp;
   int i;
   n=a;
                                             // enable);
    //DA_CS4=0;
//	DA_CLK4=0;
//	DA_data4=0;                        // Initialize crossbar and GPIO

    //DA_CS2=1;
   for(i=16;i>0;i--) 	
	{
	 
	  DA_CLK4=0;
      Delay_adda(10);
	  temp=a>>(i-1);
	  temp=temp&0x0001;
	  if(temp==0)DA_data4=0;
	  else DA_data4=1;
	  // DA_data4=1;
	  	  	 
	 // Delay_adda(10);
	  DA_CLK4=1;
	  Delay_adda(10);
	  a=n;
     }
     DA_CS4=0; 
	 Delay_adda(20);
	 DA_CS4=1; 
	 //Delay_adda(10); 
}





void main (void) 
{
bit temp02=0;
SYSCLK_Init ();                        	// 系统时钟初始化
PORT_Init ();                          	// 交叉开关和通用I/O口初始化
//da421_conv(0x00ff;
//da421_conv3(0x0500);
//da421_conv1(0x6666);
//da421_conv2(0x7777);
//da421_conv3(0x9999);
da421_conv3(0xaaaa);
while(1){
//Delay_adda(200);
//DA_CS2=1;
//Delay_adda(200);
//DA_CS4=1;
//DA_CLK4=0;
//DA_data4=1;
//da421_conv3(0x8888);
//da421_conv3(0x6666);




}



}

void Delay(int count)
{
    int i,j;
	  for (i=0;i<count;i++)
	    for(j=0;j<120;j++)
		;
}
void SYSCLK_Init (void)
{
   int i;                              // delay counter

   OSCXCN = 0x67;                      // start external oscillator with
                                       // 22.1184MHz crystal

   for (i=0; i < 256; i++) ;           // Wait for osc. to start up

   while (!(OSCXCN & 0x80)) ;          // Wait for crystal osc. to settle

   OSCICN = 0x88;    

  //OSCICN = 0x05;                          // 系统时钟初始化为片内的 24.5MHz / 8                                                           
 }
void PORT_Init (void)
{
   XBR0     = 0x00;                       // 没有选择数字外设
   XBR2     = 0x40;
   P2MDOUT  = 0xff;                       // P2口设为推挽方式
   P74OUT  = 0xff;
   P0MDOUT = 0xff;
   P1MDOUT = 0xff;
   P3MDOUT = 0xff;
}
void Delay_adda(int count)//da8501所用
{
    int i,j;
	  for (i=0;i<count;i++)
	    for(j=0;j<120;j++)
		;
}

⌨️ 快捷键说明

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