📄 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 + -