打印
[范例教程]

笙泉【8051 1T】MA82G5D16的ADC(模数转换)

[复制链接]
1377|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
KobeLai|  楼主 | 2018-12-21 16:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 KobeLai 于 2019-1-22 17:02 编辑

#include "REG_MA82G5Dxx.H"

Unsigned int AdcTemp;

//ADC的初始化
//ADC相应的转换端口(P1.0~P1.7)设置成仅模拟输入
P1M0=0X0;
SFRPI=0x0;
P1M1=0Xff;
//ADC转换速度
ADCFG0=0x10;                //ADC转换数据向右对齐
SFRPI=0x2;
ADCFG2=0x0;
SFRPI=0x3;
ADCFG3=0x0;
SFRPI=0x0;

ADCON0 = ADCEN;                //开启ADC模块,之后需要等待5uS
delay_5us();

While(1)
{
//ADC数据采集
ADCON0|=0x7;                //采集通道7的电压
ADCON0|=0x8;                //启动一次ADC转换
//等待ADC的转换完成
while((ADCON0&0x10)!=0x10)
AdcTemp=(ADCDH<<8)+ADCDL;                // AdcTemp为ADC采样的数据
ADCON0|=0x1;                //采集通道1的电压
ADCON0|=0x8;                //启动一次ADC转换
//等待ADC的转换完成
while((ADCON0&0x10)!=0x10)
AdcTemp=(ADCDH<<8)+ADCDL;                // AdcTemp为ADC采样的数据
}


MA82G5D16的ADC(模数转换)相关设置步骤如下:

一:设置ADC输入的相应端口为仅模拟输入。
二:设置ADC转换速度(最大1M SPS),一次ADC转换完成至少需要24个转换时钟。例如:ADCFG0=0x0,ADCFG2=0x0,ADCFG3=0x0;系统时钟为24MHz则ADC转换速度为1M SPS。
三:开启ADC模块。例如:ADCON0=0x80。
四:启动ADC转换。例如:ADCON0|=0x8。
五:等待ADC完成或使用中断来读取ADC的转换结果,转换结果保存在ADCDH、ADCDL。例如:while((ADCON0&0x10)!=0x10)。


MA82G5D16支持笙泉的OCD ICE,可以在Keil 3,Keil 4,Keil 5环境下自由仿真。
下面网址可以下载仿真安装包:
http://www.megawin.com.tw/zh-cn/support/index/70/113

评论
KobeLai 2018-12-21 16:34 回复TA
ADC也支持中断读取 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

14

帖子

1

粉丝