[其他ST产品] ADC采集程序

[复制链接]
927|2
 楼主| mtff 发表于 2016-8-10 10:19 | 显示全部楼层 |阅读模式
#include <STC12C5A60S2.h>
#include "intrins.h"

#define uchar unsigned char
#define uint unsigned int

void Delay(uint xms)
{
                uint i,j;
                for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}
void AD_Init()
{
                P1M0=0x0f;
                P1M1=0x0f;
                ADC_CONTR=0xe0;
                Delay(10);
}
int GetAD(unsigned char channel)
{
                unsigned char AD_finished=0;
                int result;
                ADC_CONTR|=channel;
                ADC_CONTR|=0x80;
                while(AD_finished==0)
                {
                AD_finished=(ADC_CONTR&0x10);
                }
                result=ADC_RES*4+ADC_RESL;
                ADC_CONTR&=0xf7;
                return(result);
}

float Ad_AV(uchar channel)
{
                float Val_Av=0;
                uchar num;
                for(num=100;num>0;num--);
                {
                Val_Av+=GetAD(channel);
                }
                Val_Av/=100.0;
                Val_Av=Val_Av*5/1024;
                return(Val_Av);
}
unsigned int ADC1()
{
                float ad1;
                AD_Init();
          IE=0xA0;
                ad1=Ad_AV(1);
                while(1);
    return(ad1);
}


这一部分while(AD_finished==0){AD_finished=(ADC_CONTR&0x10);}为啥调试的时候运行不过去?是有问题吗?等待ADC标志位变化,这样写可以吗?
mmuuss586 发表于 2016-8-10 13:04 | 显示全部楼层
没有启动ADC转换吧,读到的一直是0吧
 楼主| mtff 发表于 2016-8-10 13:34 | 显示全部楼层
mmuuss586 发表于 2016-8-10 13:04
没有启动ADC转换吧,读到的一直是0吧

没有结果,是不是要把ADC_CONTR=0xe8;就可以,麻烦帮忙看一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

14

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部