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

📄 ad_da.c

📁 c8051f020的fyd12864 c程序 keilc
💻 C
字号:
#include "c8051f020.h"
#include "AD_DA.H"
 //***************AD_DA配置************************
void AD_DA_Config(void)
{

		WDTCN=0X07;
		WDTCN=0XDE;
		WDTCN=0XAD;	//关开门狗

		XBR0=0XAF;
		XBR1=0X0D;
		XBR2=0X44;		// 端口分配表见说明文件

		OSCXCN=0X00;
		OSCICN=0x06;	//内部8m晶振

		REF0CN = 0x03;	// Reference Control Register

//----------------------------------------------------------------
// ADC Configuration  AMUX0:九通道的可编程模拟多路选择器,ADC0的最高转换速率为100ksps,其转换时钟来源与系统
//时钟分频,分频值保存在寄存器ADC0CF的ADCSC位.

//----------------------------------------------------------------

		AMX0CF = 0x60;	// AMUX Configuration Register                     	配置寄存器
		AMX0SL = 0x00;	// AMUX Channel Select Register	  AMX0SL =0x00;    	//选择通道0	 AMX0SL通道选择寄存器
		ADC0CF = 0x18;	// ADC Configuration Register	 配置寄存器
		ADC0CN = 0x80;	// ADC Control Register			 控制寄存器
	
		ADC0LTH = 0x00;	// ADC Less-Than High Byte Register   ****下限寄存器ADC0GTH
		ADC0LTL = 0x00;	// ADC Less-Than Low Byte Register	  ****下限寄存器ADC0GTL
		ADC0GTH = 0xFF;	// ADC Greater-Than High Byte Register
		ADC0GTL = 0xFF;	// ADC Greater-Than Low Byte Register

    	/*AMX1SL = 0x00;  // AMUX1 Channel Select Register   
    	ADC1CF = 0xF8;  // ADC1 Configuration Register
    	ADC1CN = 0x00;  // ADC1 Control Register



		DAC0CN = 0x80;	// DAC0 Control Register
		DAC0L = 0x00;	// DAC0 Low Byte Register
		DAC0H = 0x00;	// DAC0 High Byte Register

		DAC1CN = 0X80;
		DAC1L = 0X00;
		DAC1H = 0X00; */


}

/****************************************************************
DAC0 DAC1  OUTPUT function
*****************************************************************/

void DA0_Out (unsigned int con_volt  )
{
	unsigned char hbyte,lbyte;
		
	hbyte=con_volt/256;
	lbyte=con_volt&0x00ff;

	DAC0L=lbyte;
	DAC0H=hbyte;
}

void DA1_Out (unsigned int con_volt)
{
	unsigned char hbyte,lbyte;
		
	hbyte=con_volt/256;
	lbyte=con_volt&0x00ff;

	DAC1L=lbyte;
	DAC1H=hbyte;
}

/************************************************************
ADC0 ADC1 output function 
**********************************************************/

unsigned int  AD_Sample ( )
{

	unsigned char hbyte,lbyte;
	unsigned char i;
	unsigned int  current_vlot=0;
	unsigned int  ret_volt=0;
	
	for(i=0;i<8;i++)	
	{
		AD0BUSY=1;				//start ADC0 convert
	
		while(!AD0INT);			// waitting
		hbyte=ADC0H;
		lbyte=ADC0L;
		
		current_vlot=hbyte*256+lbyte;
		
		ret_volt=( current_vlot>>3)+ret_volt;
	}
	 	
	return ret_volt;

}


void Delay_ADDA(unsigned int counter)
{
	while(counter--);
}



/*
main()

{
	unsigned int i=0;
	unsigned int voltage=0;
	unsigned int temp=0;
	AD_DA_Config();

	while(1)
	{
	
		DA0_Out (1000 );

		DA1_Out (2000 );


		Delay_ADDA(10000);
		temp=AD_Sample ( ); 
		Delay_ADDA(100);

	}
}
*/

⌨️ 快捷键说明

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