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

📄 adc.c

📁 PIC4455 ADC源程序
💻 C
字号:
//==============================================================================
// DEVICE       = PICC-18
// VERSION      = 1.0
// DATE         = 11.08.2007
// LAST CHANGE  = -
// Developer    = Keith Yuen
// =============================================================================
// Description:  ADC Driver for PIC18F4455
// =============================================================================

#include "adc.h"


/****************************************************************
* PRIVATE FUNCTIONS
****************************************************************/
#define ADC_SetBitAlignment(align)	ADFM = align

/****************************************************************
* PUBLIC FUNCTIONS - SETTINGS
****************************************************************/

/*=====================================================
*Set ADC convertion clock
=====================================================*/
void ADC_SetClock(unsigned char clock)
{
	ADCON2 &= ~ADC_SET_CLOCK_MASK;
	ADCON2 |= clock & ADC_SET_CLOCK_MASK;
}

/*=====================================================
*Init the ADC
=====================================================*/
void ADC_Init(void)
{
	
	ADC_SetClock(ADC_CLOCK);
	ADC_SetAnalogPort(1);
	ADC_SetChannel(ADC_DEFAULT_CH);
	ADC_SetMode(ADC_DEFAULT_MODE);
	//Turn ON ADC
	ADON = 1;
}


/*=====================================================
*Set the no. of Analog port to use
=====================================================*/
void ADC_SetAnalogPort(unsigned char port)
{
	ADCON1 &= ~ADC_SET_ANALOG_PORT_MASK;
	ADCON1 | = (0x0F - port) & ADC_SET_ANALOG_PORT_MASK;
}

/*=====================================================
*Set ADC MUX Channel
=====================================================*/
void ADC_SetChannel(unsigned char ch)
{
	//clear bits
	ADCON0 &= ~ADC_SET_CHANNEL_MASK;
	//set bits
	ADCON0 |= (ch << 2) & ADC_SET_CHANNEL_MASK;
}

/*=====================================================
*Set 8bits mode(Left alignment) / 10 bits mode(Right alignment)
=====================================================*/
void ADC_SetMode(unsigned char mode)
{
	if(mode == ADC_MODE_8_BITS)
		ADC_SetBitAlignment(ADC_BIT_ALIGNMENT_LEFT);
	else	//10bit
		ADC_SetBitAlignment(ADC_BIT_ALIGNMENT_RIGHT);
}

/****************************************************************
* PUBLIC FUNCTIONS - USE
****************************************************************/

/*=====================================================
*Get 10 bits integer value in 10 bits mode
=====================================================*/
unsigned int ADC_GetInt(void)
{
	unsigned int i;
	i = ADRESH;
	i = i << 8;
	i = i + ADRESL;
	return	i;
}

⌨️ 快捷键说明

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