//文件名 p33adc.h

#ifndef _P33ADC_H_
#define _P33ADC_H_
//#include "p33adc.h"
//--AD1CON1 #define ADON (1<<15)
#define MAUTO (7<<5) //采样后 自动转换模式
#define SAMP (1<<1)
#define DONE (1<<0) //ADC时钟选择--时钟分频
#define ADC_DIV1 (1-1)
#define ADC_DIV5 (5-1)
#define ADC_DIV10 (10-1)
#define ADC_DIV25 (25-1)
#define ADC_DIV50 (50-1)
#define ADC_DIV100 (100-1)
#define ADC_DIV250 (250-1) //--AD通道选择------
#define ADC_Chanel0 (0x00<<0)
#define ADC_Chanel1 (0x01<<0)
#define ADC_Chanel2 (0x02<<0)
#define ADC_Chanel3 (0x03<<0)
#define ADC_Chanel4 (0x04<<0)
#define ADC_Chanel5 (0x05<<0)
#define ADC_Chanel6 (0x06<<0)
#define ADC_Chanel7 (0x07<<0)
#define ADC_Chanel8 (0x08<<0)
#define ADC_Chanel9 (0x09<<0)
#define ADC_Chanel10 (0x0A<<0)
#define ADC_Chanel11 (0x0B<<0)
#define ADC_Chanel12 (0x0C<<0)
#define ADC_Chanel13 (0x0D<<0)
#define ADC_Chanel14 (0x0E<<0)
#define ADC_Chanel15 (0x0F<<0) //================================
extern void Init_Adc(uint16 ClkDiv) ;
extern uint16 AdcSwitch(uint16 Adc_Ch) ; #endif //文件名 p33adc.c #include "global.h"
//#include "p33adc.h" //***************************************
// 函数名称:Init_Adc
// 函数功能:初始化ADC模块
// 入口参数:
// 出口参数:无
// 返回值:无
// ADC时钟来源于Fcpu
//***************************************
void Init_Adc(uint16 ClkDiv)
{
AD1CON1 = 0X0000|MAUTO; //设置为自动模式 10位4通道模式 数据右对齐
AD1CON2 = 0X0000 ;
AD1CON3 = 0X0000 | ClkDiv |0X8000; //ADC时钟分频
AD1CON4 = 0X0000 ; //不使能DMA 每个通道分一个字的缓存 AD1CHS123 = 0X0000 ;
AD1CHS0 = 0X0000 ; AD1CSSH = 0X0000 ;
AD1CSSL = 0X0000 ; AD1CON1 |= ADON ; //开启ADC模块工作
asm("nop") ;asm("nop") ;asm("nop") ;asm("nop") ;//延时
asm("nop") ;asm("nop") ;asm("nop") ;asm("nop") ;
}
//***************************************
// 函数名称:AdcSwitch
// 函数功能:选择AD通道转换
// 入口参数:
// 出口参数:无
// 返回值:无
//***************************************
uint16 AdcSwitch(uint16 Adc_Ch) // ADRESH ADRESL
{
uint16 wTmp ; AD1CON1 |= ADON ; //开启ADC模块工作 AD1CHS0 = (AD1CHS0 & 0XFFE0)|Adc_Ch ;//选择通道 asm("nop") ;asm("nop") ;asm("nop") ;asm("nop") ;//延时
asm("nop") ;asm("nop") ;asm("nop") ;asm("nop") ; AD1CON1 &= ~DONE ; //ADC空闲
AD1CON1 |= SAMP ; //开始转换 while(!(AD1CON1 & DONE)) ; //等待转换完成
// AD1CON1 &= ~DONE ; //ADC空闲 wTmp = ADC1BUF0 & 0X03FF ; //读取转换结果 return wTmp ;
} //应用实例 void main(void)
{
uint16 g_wTmp1 ; //初始化ADC
Init_Adc(ADC_DIV25) ;//AD模块时钟输入频率 10BIT AD while(1)
{
g_wTmp1 = AdcSwitch(ADC_Chanel0) ;//读取转换结果
} }

dsPIC33EP ADC模块初始化及应用实例的更多相关文章

  1. JobTracker等相关功能模块初始化

    [Hadoop代码笔记]Hadoop作业提交之JobTracker等相关功能模块初始化 一.概要描述 本文重点描述在JobTracker一端接收作业.调度作业等几个模块的初始化工作.想过模块的介绍会在 ...

  2. nginx源码分析之模块初始化

    在nginx启动过程中,模块的初始化是整个启动过程中的重要部分,而且了解了模块初始化的过程对应后面具体分析各个模块会有事半功倍的效果.在我看来,分析源码来了解模块的初始化是最直接不过的了,所以下面主要 ...

  3. nginx-push-stream模块源码学习(二)——模块初始化

    本文重点介绍push stream模块的构成,至于nginx如何启动.维护该模块不会详细阐述,以后有时间会做详细阐述. 一.模块定义 1.1.  模块配置 通用nginx模块的配置struct有三种, ...

  4. nodejs -- 主模块 ,初始化.

    一:知识点: 1-1: 模块初始化: 1-2 主模块: 二: 测试 2-1: 代码: 1) 主模块 1:   main.js var counter1 = require("./counte ...

  5. Java初始化顺序(静态变量、静态初始化块、实例变量、实例初始化块、构造方法)

    1.执行顺序 1.1.一个类中的初始化顺序 类内容(静态变量.静态初始化块) => 实例内容(变量.初始化块.构造器) 1.2.两个具有继承关系类的初始化顺序 父类的(静态变量.静态初始化块)= ...

  6. Framebuffer 驱动学习总结(二)---- Framebuffer模块初始化

    ---恢复内容开始--- Framebuffer模块初始化过程:--driver\video\fbmem.c 1.  初始化Framebuffer: FrameBuffer驱动是以模块的形式注册到系统 ...

  7. Nodejs模块初始化

    模块初始化 一个模块中的JS代码仅在模块第一次被使用时执行一次,并在执行过程中初始化模块的导出对象.之后,缓存起来的导出对象被重复利用. 主模块 通过命令行参数传递给NodeJS以启动程序的模块被称为 ...

  8. Windows加载器与模块初始化

    本文是Matt Pietrek在1999年9月的MSJ杂志上发表的关于Windows加载器与模块初始化方面的文章.作者深入分析了LdrpRunInitialize璕outines例程的作用,用C语言写 ...

  9. C# 9.0新特性详解系列之三:模块初始化器

    1 背景动机 关于模块或者程序集初始化工作一直是C#的一个痛点,微软内部外部都有大量的报告反应很多客户一直被这个问题困扰,这还不算没有统计上的客户.那么解决这个问题,还有基于什么样的考虑呢? 在库加载 ...

随机推荐

  1. static_cast .xml

    pre{ line-height:1; color:#1e1e1e; background-color:#d2d2d2; font-size:16px;}.sysFunc{color:#627cf6; ...

  2. python中的深拷贝与浅拷贝

    深拷贝和浅拷贝 浅拷贝的时候,修改原来的对象,浅拷贝的对象不会发生改变. 1.对象的赋值 对象的赋值实际上是对象之间的引用:当创建一个对象,然后将这个对象赋值给另外一个变量的时候,python并没有拷 ...

  3. 机器学习中的算法-决策树模型组合之随机森林与GBDT

    机器学习中的算法(1)-决策树模型组合之随机森林与GBDT 版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使 ...

  4. 150个JS特效脚本

    收集了其它一些不太方便归类的JS特效,共150个,供君查阅. 1. simplyScroll simplyScroll这个jQuery插件能够让任意一组元素产生滚动动画效果,可以是自动.手动滚动,水平 ...

  5. oracle 体系结构解析

    三.oracle 体系结构 1.oracle内存由SGA+PGA所构成 2.oracle数据库体系结构数据库的体系结构是指数据库的组成.工作过程与原理,以及数据在数据库中的组织与管理机制. oracl ...

  6. Python:映像、集合

    一.字典 字典(dictionary)是Python中唯一的“映射”类型,映射这个概念在高中就学过:一个函数f将键(key, 定义域)映射到值(value, 值域).这样的函数在字典中可以称为哈希(H ...

  7. C# 必应代码搜索

    微软宣布推出必应代码搜索服务,暂时只支持 C# 语言,日后将支持更多代码语言. Visual Studio 用户安装必应搜索插件之后可使用该服务来简化编程任务.Visual Studio 与 MSDN ...

  8. FTP没权限直接删除目录,写的一个小工具循环删除

    $path = '/var/www/html/Runtime/'; $ite = new RecursiveDirectoryIterator($path); foreach (new Recursi ...

  9. 解决SQL Server Always 日志增大的问题-摘自网络

    配置了Alwayson之后,因为没有只能使用完全恢复模式,不能使用简单或大容量日志模式,所以日志不断增长,不能使用改变恢复模式的方式清空日志 手动操作收缩或截断日志也无效 读了一些文章后发现,有人使用 ...

  10. ucos创建任务的一般方法

    一般说来,任务可在OSStart()启动任务调度之前来创建,也可在任务中创建,但是UC/OS有个规定:在调用OSStart()启动任务调度之前,必须创建了至少一个任务.因此一般习惯上,在OSStart ...