下面是我原有的ADC程序,有定時器初始化,ADC初始化和中斷程序,目前只有一個模擬輸入口,想再加進去兩個,要怎么改,求指教,先謝過
//-----------------------------------------------------------------------------定時器初始化部分
void Timer2_Init (void)
{
TMR2CN = 0x00; // Stop Timer2; Clear TF2;
// use SYSCLK as timebase, 16-bit
// auto-reload
CKCON |= 0x10; // select SYSCLK for timer 2 source
TMR2RL = 65535 - (SYSCLK / 10000); // init reload value for 10uS
TMR2 = 0xffff; // set to reload immediately
TR2 = 1; // start Timer2
}
//-----------------------------------------------------------------------------ADC初始化部分
void ADC0_Init (void)
{
ADC0CN = 0x02; // ADC0 disabled, normal tracking,
// conversion triggered on TMR2 overflow
REF0CN = 0x01; // Select internal high speed voltage
// reference
ADC0MX = 0x0e; // Select P1.6 as the ADC input pin
ADC0CF = ((SYSCLK/8300000)-1)<<3; // Set SAR clock to 8.3MHz
ADC0CF |= 0x00; // Select Gain of 0.5
ADC0AC = 0x00; // Right-justify results, no shifting
// applied
EIE1 |= 0x08; // Enable ADC0 conversion complete int.
AD0EN = 1; // Enable ADC0
}
//------------------------------------------------------------------中斷函數
INTERRUPT (ADC_ISR, INTERRUPT_ADC0_EOC)
{
static unsigned long accumulator = 0; // accumulator for averaging
static unsigned int measurements = 2048; // measurement counter
unsigned long result=0;
AD0INT = 0; // clear ADC0 conv. complete flag
accumulator += ADC0;
measurements--;
if(measurements == 0)
{
measurements = 2048;
result = accumulator / 2048;
accumulator=0;
// The 10-bit ADC value is averaged across 2048 measurements.
// The measured voltage applied to P1.4 is then:
//
// Vref (mV)
// measurement (mV) = --------------- * result (bits)
// (2^10)-1 (bits)
mV = result * 3360 / 1023;
LCM1_Data(0,DuMa[mV/1000]);
LCM1_Data(1,DuMa[(mV%1000)/100]|0x10);
LCM1_Data(2,DuMa[((mV%1000)%100)/10]);
LCM1_Data(3,DuMa[((mV%1000)%100)%10]);
|