//文件名 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. 【quick-cocos2d-x】Lua 面向对象(OOP)编程与元表元方法

    版权声明:本文为博主原创文章,转载请注明出处. 面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物. 早期的计算机编程是基于面向过程的方法,通过设计一个算法就可以解决当时 ...

  2. Office2013版的破解之路

    追着潮流,我还是更新了我的所有软件,2013版早就下载了,因为一直破解的问题没有装,这次终于找到必成功的办法. 1.准备工作: 下载office2013的官方版即可,官方版里不包含project和vi ...

  3. ps闪闪发光的字 教程+自我练习

    本教程的文字效果非常经典.不仅是效果出色,创作思路及制作手法都堪称完美.作者并没有直接使用纹理素材,纹理部分都是用滤镜来完成.这需要很强的综合能力,非常值得学习和借鉴.最终效果 我的: 1.创建一个新 ...

  4. effective c++:dynamic_cast,避免返回handles指向对象内部

    关于dynamic_cast 假定我们有一个基类指针bp,我们在运行时需要把它转换成他的派生类指针,这个时候需要用到dynamic_cast. Derived *dp = dynamic_cast&l ...

  5. hadoop的kerberos认证

    言归正传,介绍过hadoop的simple认证和kerberos后,我们在这一章介绍hadoop的kerberos认证 我们还使用hadoop集群的机器. OS 版本: Centos6.4 Kerbe ...

  6. android 使用虚拟机安装apk(图文教程)(转)

    1.启动虚拟机 2.我的android sdk在“E:\android\android开发环境\android SDK\platform-tools”把要安装的apk复制到这个根目录(和adb.exe ...

  7. Ruby on Rails vs. PHP vs. Python

    开发者在开发web应用时,往往会对平台的选择感到困惑,而web专家通常会建议:要考虑几个因素,这些因素包括周转时间.质量.跨浏览器兼容性.与其他框架的整合.数据安全性.易于访问性等. 在考虑了这些因素 ...

  8. Flex之DataGrid和Tree控件的数据源XML格式

    1.flex的完整代码: <?xml version="1.0" encoding="utf-8"?> <s:Application xmln ...

  9. linux之间连接—使用SSH

    菜鸟学linux笔记.本机是linux,需要远程连接linux,使用SSH (1)在终端,输入命令:ssh root@110.110.100.100 root为用户名,110.110.100.100为 ...

  10. [iOS微博项目 - 3.2] - 发送微博

    github: https://github.com/hellovoidworld/HVWWeibo   A.使用微博API发送微博 1.需求 学习发送微博API 发送文字微博 发送带有图片的微博   ...