以下程序是基于新唐M051单片机运行:
/******************************************************************
*注 意:硬件上的AVDD一定要接上基准电压
******************************************************************/
#include "SmartM_M0.h"
#define ADC_CLOCK_DIVIDER 0x00040000
#define ADC_CLK_Source 0x00000000
STATIC VOID AdcInit(VOID)
{
if(ADC_CLK_Source==0x00000004)
{
PLLCON |= PLL_SEL;
PLL_Enable();
while((CLKSTATUS & PLL_STB) == 0);
}
set_ADC_RST;
clr_ADC_RST;
set_ADEN_CLK;
if (ADC_CLK_Source==0x00000000 )
{
ADCClkSource_ex12MHZ;
}
else if(ADC_CLK_Source==0x00000004 )
{
ADCClkSource_PLL;
}
else if(ADC_CLK_Source==0x00000008 )
{
ADCClkSource_int22MHZ;
}
CLKDIV=ADC_CLOCK_DIVIDER;
/* ADC使能 */
set_ADEN;
set_CALEN;
setAD_SIG;
clr_DIFFEN;
set_CHEN0;
/* 使能P1.0为模拟输入引脚 */
set_ADC0_channel;
/* 禁止P1.0数字输入通道 */
P1_OFFD |= OFFD0;
/* 设置P1.0引脚为输入模式Configure P1.0 as input mode */
P10_InputOnly;
/* 清除ADC中断标志位 */
set_ADF;
}
*函数名称:main
*输 入:无
*输 出:无
*功 能:函数主体
******************************************/
INT32 main(VOID)
{
UINT32 unVoltageValue;
PROTECT_REG //ISP下载时保护FLASH存储器
(
PWRCON |= XTL12M_EN; //默认时钟源为外部晶振
while((CLKSTATUS & XTL12M_STB) == 0); //等待12MHz时钟稳定
CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M;//设置外部晶振为系统时钟
)
{
set_ADST; //启动ADC
while(ADSR&ADF==0); //等待ADC结束
set_ADF; //清空ADC结束标志位
}
}
上一篇:新唐M051 ISP(LDROM、FMC,相当于8位机EEPROM操作)程序
下一篇:新唐M051 spi使用程序
推荐阅读最新更新时间:2024-03-16 13:48