微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 帮忙看看哪里有错误,AD转换程序!

帮忙看看哪里有错误,AD转换程序!

时间:10-02 整理:3721RD 点击:
#include "stc12c5204ad.h"
#include "delay.h"
#define uchar unsigned char
#define uint unsigned int
sfr ADC_RES=0xbd;
sfr P1ASF=0x9d;       
uchar ch=0x07;//P1.7作为AD输入来用,多路AD时,把ch得值加1就可以切换输入通道
uchar result;
uchar ad(void)
{
        ADC_CONTR=0xc0;//开启电源,选择速度为140clock
        P1ASF=0x00;    //设置P1.0为AD转换通道
        ADC_CONTR=0x08;//启动AD转换
        delay_usx2(5);
        while((ADC_CONTR&0x10)==0);//等待转换结束,即ADC_FLAG=1
        ADC_CONTR&=0xe7;//置零ADC_FLAG,把ADC_START置零
        return ADC_RES;//保存AD转换之后的值
        //ADC_RES=0x00;  //清零转换结果寄存器
        //ADC_CONTR=power|speedh|start|ch;  //开启电源,140个时钟,开始转换
        //delay_usx2(5); //延时4个机器周期才能正确读取ADC_CONTR的值
}
void main()
{
        while(1)
        {
                result=ad();
                P2=result;
        }
}

你是看下你的AD是8位的还是10位的,第二就是说具体你的问题到底是什么?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top