upD79F8513A(NEC)或upD78F0511A(NEC)之AD采样

版权声明:喝水不忘挖井人,转载请注明出处,[email protected]。 https://blog.csdn.net/qq_18842031/article/details/78297343

本篇博文最后修改时间:2017年10月20日 17:30。

一、简介

本文以upD79F8513A(NEC)或upD78F0511A(NEC)编程为例,介绍upD79F8513A(NEC)或upD78F0511A(NEC)之AD采样。

二、实验平台

电脑平台:Windows7 64位旗舰

编译软件:IAR

硬件平台:upD79F8513A(NEC)或upD78F0511A(NEC)

三、版权声明

博主:_懵懂

声明:此博客仅供参考不做任何商业用途,最终解释权归原博主所有。

原文地址:http://blog.csdn.NET/qq_18842031

懵懂之MCU交流群:136384801

四、实验前提

1、在进行本文步骤前,请先安装IAR4.70.1.50025版本;准备好upD79F8513A(NEC)或upD78F0511A(NEC)硬件平台。

         

五、基础知识

暂无

六、源码地址

暂无

七、关联文章

系统时钟链接:http://blog.csdn.net/qq_18842031/article/details/77984026

电源检测链接:http://blog.csdn.net/qq_18842031/article/details/78185589

串口0链接:http://blog.csdn.net/qq_18842031/article/details/78196010

串口6链接:http://blog.csdn.net/qq_18842031/article/details/78185517

八、实验内容

1.初始化AD

/*********************************************************************
* @fn      Init_ADC()
*
* @brief   初始化ADC  初始化P2口 5脚 6脚 7脚为AD输入 
*
* @param   None.
*
* @return  None.
********************************************************************/
void Init_ADC(void)
{
  ADPC |= 0x05;/*初始化I/O口为模拟口*/
  PM2 |= 0xE0; /*设置为输入*/
  ADCE = 1;    //使能比较器
  ADS  = 7;    //
  ADIF = 0;    //
  ADCS = 1;    //使能AD转换器
  NOP();
  ADMK = 1;
}

2.编写主函数

#include <io78f0511_44.h>
#include <intrinsics.h> 


#define DI() __disable_interrupt()  /*关中断*/
#define EI() __enable_interrupt()   /*开中断*/
#define NOP() __no_operation()        /*空指令*/

#define W5NOP() NOP();NOP();NOP();NOP();NOP()      /*5个空指令*/

void main(void)
{ 
  Init_OST(); /*初始化系统时钟*/ 
  Init_LVI(); /*低电压检测*/ 
  Init_Uart0(); /*初始化串口0*/
  Init_ADC();   /*初始化ADC*/
  
  Send_UartByte0(5);/*查询发送*/
  while(1) 
  { 
    WDTE = 0xAC; /*clear and start watchdog timer */ 
    Send_UartByte0(Get_ADCValue());
    W5NOP();W5NOP();W5NOP();W5NOP();W5NOP();W5NOP();
    W5NOP();W5NOP();W5NOP();W5NOP();W5NOP();W5NOP();
    W5NOP();W5NOP();W5NOP();W5NOP();W5NOP();W5NOP();
  }
}

3.采集AD

/*********************************************************************
* @fn      Get_ADCValue()
*
* @brief   ADC采集函数  
*
* @param   None.
*
* @return  value 每次输出的7脚-5脚轮流输出.
********************************************************************/
uint8 Get_ADCValue()
{    
  uint8 value;        			 /*记录当次值*/
  
  if(ADIF != 1)
    return;
  ADIF = 0;

  value = ADCRH;
    if(ADS == 7)
    {
      ADS = 6;
    }  	
    else if(ADS == 6)
    {
      ADS = 5;
    }
    else if(ADS == 5)
    {
      ADS = 7;
    }
  }
  return value;
}

猜你喜欢

转载自blog.csdn.net/qq_18842031/article/details/78297343
upd
今日推荐