//************************************************************ // Copyright (c) 深圳市赛元微电子有限公司 // 文件名称 : ADC // 作者 : // 模块功能 : ADC固件函数库使用示范:将AIN0口做为AD转换口,转换值通过UART0发出 // 局部函数列表: // 最后更正日期: 2018/9/8 // 版本 : V1.0 //************************************************************* #include "sc92f8003_adc.h" #include "sc92f8003_uart0.h" #define Fsoc 16000000 uint16_t i,j; extern bit ADC_Flag; extern bit UART0_SendFlag; extern bit UART0_ReceFlag; void Uart0Init() { //设置系统时钟频率Fsoc,波特率9600,10位工作模式,波特率发生器TIMER2,使能接收 UART0_Init(Fsoc, 9600, UART0_Mode_10B, UART0_CLOCK_TIMER2, UART0_RX_ENABLE); UART0_ITConfig(ENABLE, LOW); //UART0中断使能,低中断优先级 } void ADCInit() { //设置预分频fHRC/6,采样时间36个ADC采样时钟周期 ADC_Init(ADC_PRESSEL_FHRC_D6, ADC_Cycle_36Cycle); //选择采样通道AIN0、使能 ADC_ChannelConfig(ADC_CHANNEL_0, ENABLE); ADC_ITConfig(ENABLE, LOW); //ADC中断使能,低中断优先级 ADC_Cmd(ENABLE); //ADC模块使能 } void main( void ) { Uart0Init(); //UART0初始化 //UART0_PinSelection(UART0_PinSelection_P11P20); ADCInit(); //ADC初始化 enableInterrupts(); //开总中断 while(1) { ADC_StartConversion(); //启动一次AD转换 while(!(ADC_Flag)); //等待转换完成 ADC_Flag = 0; //UART0发送AD转换结果高4位 UART0_SendData8((uint8_t)(ADC_GetConversionValue() >> 8)); while(!(UART0_SendFlag)); //等待发送完成 UART0_SendFlag = 0; //UART0发送AD转换结果低8位 UART0_SendData8((uint8_t)ADC_GetConversionValue()); while(!(UART0_SendFlag)); //等待发送完成 UART0_SendFlag = 0; for(i=0;i<400;i++) for(j=0;j<500;j++); } }