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

📄 adc.c

📁 利用NTC电阻实现温度测试,带详细文档和C语言代码,测试温度误差在0.5度.
💻 C
字号:

#include "24e1.h"
#include "adc.h"


  
 void InitADC(void)
{
    //ADCCON = 0x20;                  // Channel 0, NPD=1, ADCRUN=0, EXTREF=0
	//ADCCON = 0x28;					  // ADCSEL=8, NPD=1, ADCRUN=0, EXTREF=0
    ADCCON  = 0x30;   				  // Channel 0, NPD=1, ADCRUN=0, EXTREF=1
	ADCSTATIC &= 0x1c;				//	 
    ADCSTATIC |= 0x03;              // 12bit
	//ADCSTATIC |= 0x01;              // 8bit
    ADCCON &= ~0x80;                // Start..
    ADCCON |= 0x80;                 // ..new conversion
} 
  
unsigned int ReadADC1(void)
{
    unsigned int b;
	//watchdog
		REGX_MSB = 0xFF;
		REGX_LSB = 0xFF;
    while((EXIF & 0x10) == 0)       // Wait until ADC conversion complete
        ;
    EXIF &= ~0x10;                  // Clear ADC completion bit
    b = ADCDATAH;                   // Read ADC data
    ADCCON &= ~0x80;                // Start..
    ADCCON |= 0x80;                 // ..new conversion
    return b;
}

unsigned int ReadADC(void)
{
  	unsigned int adc[7],adc_rev;
  	unsigned int sum;
  	unsigned int max,min,temp,i;
  	//watchdog
		REGX_MSB = 0xFF;
		REGX_LSB = 0xFF;
  	for(i=0;i<7;i++)
  	{
   		adc[i]=ReadADC1();
   		Delay100us(10);
   	}
  	max=adc[0];
  	min=adc[6];
  	if(max<min)
  	{
    	temp=max;
		max=min;
		min=temp;
  	}
  	for(i=1;i<6;i++)
  	{
   		if(adc[i]>max)
   		{
     		temp=max;
	 		max=adc[i];
	 		adc[i]=temp;
   		}
   		else if(adc[i]<min)
   		{
	 		temp=min;
	 		min=adc[i];
	 		adc[i]=temp;
   		}
  	}
  	for(i=1,sum=0;i<6;i++)
  	{
    	sum+=adc[i];
  	}
  	adc_rev=sum/5;
  	return adc_rev;
}


⌨️ 快捷键说明

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