版权声明:喝水不忘挖井人,转载请注明出处,[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;
}