本帖最后由 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
|
ADC也支持中断读取