打印
[MINI51]

mini51第二贴 中断法测AD

[复制链接]
1976|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cnjxlxp|  楼主 | 2012-2-1 23:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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
  }
}
   
   
}




ADC.rar

670.7 KB

相关帖子

沙发
hotpower| | 2012-2-2 00:11 | 只看该作者
建议将主程序关键代码贴出~~~

使用特权

评论回复
板凳
changfeng1800| | 2012-12-31 14:14 | 只看该作者
我来补充:
#include "includes.h"         //°üº¬ËùÐèµÄÍ·Îļþ
/*************************************************************************************
** Function name:       Set_System
** Descriptions:        ·âװһЩ³õʼ»¯Ä£¿é
** input parameters:    none
** output parameters:   none
** Returned value:      none
*************************************************************************************/
void Set_System(void)
{
  RCC_Configuration();                                        //ÅäÖÃϵͳʱÖÓ

  GPIO_Configuration();                                        //ÅäÖÃGPIO
}
/*************************************************************************************
** Function name:       RCC_Configuration
** Descriptions:        ÏµÍ³Ê±ÖÓÔ´ÉèÖÃ
** input parameters:    none
** output parameters:   none
** Returned value:      none
*************************************************************************************/
void RCC_Configuration(void)
{
   UNLOCKREG();                                                                                                // ¶Ôд±£»¤Î»²Ù×÷ʱ ÐèÒªÒ»´ÎÏò0x50000 0100дÈë 0x59,0x16,0x88
   DrvSYS_Open(XTL_CLK);                                                                        // Enable high external clock and use it as system clock (HCLK)
   while (DrvSYS_GetChipClockSourceStatus(XTL_CLK) != 1);         //µÈ´ýÍⲿ12MHZ¾§Õñ¾ÍÐ÷
   LOCKREG();                                                                                  // Ïò¡°0x5000_0100¡±Ð´ÈëÈκÎÖµ£¬¾Í¿ÉÒÔÖØËø±£»¤¼Ä´æÆ÷
}
/*************************************************************************************
** Function name:       GPIO_Configuration
** Descriptions:        GPIOÅäÖÃ
** input parameters:    none
** output parameters:   none
** Returned value:      none
*************************************************************************************/
void GPIO_Configuration()
{
    DrvGPIO_Open(E_PORT3, E_PIN1, E_IO_OUTPUT);                                //LED0
    DrvGPIO_Open(E_PORT3, E_PIN2, E_IO_INPUT);                                //INTKEY
        DrvGPIO_Open(E_PORT3, E_PIN6, E_IO_OUTPUT);                                //LED1
    DrvGPIO_Open(E_PORT5, E_PIN2, E_IO_OUTPUT);                                //LED2
        DrvGPIO_Open(E_PORT2, E_PIN6, E_IO_OUTPUT);                                //LED3
}
/*************************************************************************************
** Function name:       delay_ms
** Descriptions:        1ms(¾§ÕñΪ12MHZ)ÑÓʱ×Ó³ÌÐò
** input parameters:    count
** output parameters:   none
** Returned value:      none
*************************************************************************************/
void delay_ms(uint32_t count)
{
    uint32_t i,j;
        for(i=count;i>0;i--)
           for(j=2395;j>0;j--);
}

使用特权

评论回复
地板
jstele| | 2013-1-26 11:14 | 只看该作者
真是有心的提醒

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

46

帖子

2

粉丝