例程5. ADC -- 慕司板IAP15

慕司板的摇杆和锂电池电压的检测都是通过AD实现的。IAP15有8路10位的AD,速度可达300k 次/s。板子上使用了5路:
f01

ADC的初始化和读取函数比较简单(adc.c):

#include "adc.h"
#include "delay.h"
#include <intrins.h>

/*----------------------------
初始化ADC
----------------------------*/
void ADC_Init()
{
    P1ASF = 0x1f;                   //设置P1.0 1 2 3 4口为AD口
    ADC_RES = 0;                    //清除结果寄存器
    ADC_CONTR = ADC_POWER | ADC_SPEEDH;
    Delay_ms(2);                     //ADC上电延时
}

/*----------------------------
读取ADC结果
----------------------------*/
unsigned char ADC_GetResult(unsigned char ch)
{
    ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
    _nop_();                        //等待4个NOP
    _nop_();
    _nop_();
    _nop_();
    while (!(ADC_CONTR & ADC_FLAG));//等待ADC转换完成
    ADC_CONTR &= ~ADC_FLAG;         //Close ADC

    return ADC_RES;                 //返回ADC结果
}

其中,ADC转换速率的宏定义在ADC.h中:

#define ADC_SPEEDLL 0x00            //540个时钟
#define ADC_SPEEDL  0x20            //360个时钟
#define ADC_SPEEDH  0x40            //180个时钟
#define ADC_SPEEDHH 0x60            //90个时钟

注意把P19的跳线帽放到下面,即开启LCD背光。

完整工程参见资源汇总帖.

原作于 2014年10月
CSDN发表于2016年4月
weifengdq

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值