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

📄 adc.c

📁 本代码是基于三星2410的嵌入式开发实验程序代码,包括:ADC,CS8900A,KEY_GPIO,KEY_INT,LED,PWMDAC,UART
💻 C
字号:
#include "2410addr.h"
#include "def.h"
#define ADC_FREQ 2500000

volatile U32 preScaler;

int ReadAdc(int ch){
    rADCCON = (1<<14)|(preScaler<<6)|((ch&0x7)<<3);	//setup channel
    rADCCON |= 0x1;   //start ADC
    while (rADCCON & 0x1);	//check if Enable_start is low
    while (!(rADCCON & 0x8000));	//check if EC(End of Conversion) flag is high
    return ( (int)rADCDAT0 & 0x3ff );
}

void Main(void){
    int Val, i;
    ChangeClockDivider(1,1);          // 1:2:4    
    ChangeMPllValue(0xa1,0x3,0x1);    // FCLK=202.8MHz  
    Port_Init();
    Uart_Init(0,115200);
    Uart_Select(0);
    Delay(0);	                      // calibrate Delay()
    Uart_Printf("\nAN2410SSB ADC test\n");

    preScaler = ADC_FREQ;
    Uart_Printf("ADC conv. freq. = %dHz\n",preScaler);
    preScaler = PCLK/ADC_FREQ -1;               //PCLK:50.7MHz   
    Uart_Printf("PCLK/ADC_FREQ - 1 = %d\n",preScaler);
    while (1){
        for (Val = 0,i = 0; i < 10; i++) 
            Val += ReadAdc(0);
        Uart_Printf("AIN0 is %d mV\n",Val*330/1024);
        Delay(10000);
    }
}

⌨️ 快捷键说明

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