打印
[其他ST产品]

ADC采集程序

[复制链接]
801|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

粉丝