本帖最后由 hotpower 于 2012-9-22 12:42 编辑
根据“ddllxxrrMiNi51学习第六贴:带LED指示的ADC”修改而来
看到原地里面都是用查询法测AD的帖子,所以改了一下用中断法的。。。
需要的朋友请直接下载附件工程,补充代码
/*---------------------------------------------------------------------------------------------------------*/
/* */
/* Copyright(c) 2009 Nuvoton Technology Corp. All rights reserved. */
/* */
/*---------------------------------------------------------------------------------------------------------*/
#include "includes.h" //包含所需的头文件
uint32_t ADCdata = 0;
void AdcIntCallback(uint32_t u32UserData)
{
ADCdata=DrvADC_GetConversionData();
DrvADC_StartConvert();
}
int main (void)
{
Set_System(); //调用系统初始化函数
/* 初始化类比数位转换器 */
DrvGPIO_InitFunction(FUNC_ADC0);
DrvADC_Open(0, EXTERNAL_CLOCK, 3); // 设置类比数位转换器时钟为12/(3+1) = 3兆赫兹
DrvADC_EnableADCInt(AdcIntCallback, 0);
DrvADC_StartConvert();
while(1)
{
if(ADCdata==0)
{
DrvGPIO_ClrBit(E_PORT3, 1); //LED0-OFF
DrvGPIO_ClrBit(E_PORT3, 6); //LED1-OFF
DrvGPIO_ClrBit(E_PORT5, 2); //LED2-OFF
DrvGPIO_ClrBit(E_PORT2, 6); //LED3-OFF
}
else if(ADCdata<155)
{
DrvGPIO_SetBit(E_PORT3, 1); //LED0-ON
DrvGPIO_ClrBit(E_PORT3, 6); //LED1-OFF
DrvGPIO_ClrBit(E_PORT5, 2); //LED2-OFF
DrvGPIO_ClrBit(E_PORT2, 6); //LED3-OFF
}
else if((ADCdata>155)&&(ADCdata<310))
{
DrvGPIO_SetBit(E_PORT3, 1); //LED0-ON
DrvGPIO_SetBit(E_PORT3, 6); //LED1-ON
DrvGPIO_ClrBit(E_PORT5, 2); //LED2-OFF
DrvGPIO_ClrBit(E_PORT2, 6); //LED3-OFF
}
else if((ADCdata>310)&&(ADCdata<465))
{
DrvGPIO_SetBit(E_PORT3, 1); //LED0-ON
DrvGPIO_SetBit(E_PORT3, 6); //LED1-ON
DrvGPIO_SetBit(E_PORT5, 2); //LED2-ON
DrvGPIO_ClrBit(E_PORT2, 6); //LED3-OFF
}
else if((ADCdata>465)&&(ADCdata<930))
{
DrvGPIO_SetBit(E_PORT3, 1); //LED0-ON
DrvGPIO_SetBit(E_PORT3, 6); //LED1-ON
DrvGPIO_SetBit(E_PORT5, 2); //LED2-ON
DrvGPIO_SetBit(E_PORT2, 6); //LED3-ON
}
}
}
|