#include "../mscbemb.h"#include "adc_internal.h"Functions | |
| void | adc_internal_init (void) |
| unsigned int | adc_read (unsigned char channel, unsigned char gain) |
| void adc_internal_init | ( | void | ) |
00017 { 00018 #ifdef CPU_C8051F120 00019 SFRPAGE = ADC0_PAGE; 00020 ADC0CN = 0xC0; // ADC0 Enabled 00021 // Tracking on request (ADBUSY) 00022 // left-justified 00023 ADC0CF = 0x80; // ADC conversion 16 clocks 00024 ADC0CF |= 0x00; // PGA gain = 1 00025 00026 REF0CN = 0x07; // Temperature, VREF0 Bias & Buffer enable 00027 #endif 00028 #ifdef CPU_C8051F310 00029 ADC0CN = 0xC0; // ADC0 Enabled 00030 // Tracking on request (ADBUSY) 00031 // left-justified 00032 ADC0CF = 0x80; // ADC conversion 16 clocks 00033 REF0CN = 0x0E; // External Vcc , Temperature, VREF0 Bias 00034 #endif 00035 }
| unsigned int adc_read | ( | unsigned char | channel, | |
| unsigned char | gain | |||
| ) |
00039 { 00040 #ifdef CPU_C8051F120 00041 /* set MUX */ 00042 SFRPAGE = ADC0_PAGE; 00043 AMX0SL = (channel & 0x0F); 00044 ADC0CF = ((ADC0CF&0xF8)|gain); 00045 AMX0CF = 0x00; // Input 0.. 7 + Temperature in single ended mode 00046 #endif 00047 #ifdef CPU_C8051F310 00048 /* set MUX */ 00049 AMX0P = (channel & 0x1F); 00050 AMX0N = 0xFF; // Input 0.. 15 + Temperature in single ended mode 00051 #endif 00052 00053 DISABLE_INTERRUPTS; 00054 00055 AD0INT = 0; 00056 AD0BUSY = 1; 00057 00058 AD0INT = 0; 00059 AD0BUSY = 1; 00060 00061 while(AD0BUSY == 1); 00062 00063 ENABLE_INTERRUPTS; 00064 00065 return (((ADC0H & 0x03) << 8) + ADC0L); 00066 }
1.4.7