打印
[51单片机]

小谈AD共用,多路通道切换

[复制链接]
2697|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
华师单车汉|  楼主 | 2013-8-28 14:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟,最近在用C8051F020单片机,它有12位AD, 8个通道,共用时候就要进行通道切换,以前用的时候在通道切换后加了也就500ns级的小小的延时,正常,  这次没有加这个采样死活出不来,但是硬件调试的时候寄存器什么都很正确,频幕显示也没有什么问题, 一自己跑起来就出问题了
最后按照那样加了一个延时就可以了,
附上程序,我感觉要确认和切换最好不要吝惜这几个空指令
下面是好的程序
unsigned int Get_Value00(void)

{
        //首先选择0通道 再开启转黄  再查询中断位
        AMX0SL = 0x00;                                        //通道选择
        AD0INT = 0;
        AD0BUSY = 0;
       
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();

        AD0BUSY = 1;      //把此位写1 启动转换

        while(!AD0INT);

        return ADC0HL;
}

unsigned int Get_Value01(void)
{
        //首先选择1通道 清理标记位 再开启装换 再查寻中断位
        AMX0SL = 0x01;
        AD0INT = 0;
        AD0BUSY = 0;
       
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();

        AD0BUSY = 1;

        while(!AD0INT);
        return ADC0HL;
}

下面是出错的程序
//启动0路转换
unsigned int ADC_Start0()
{
        AMX0SL = 0x00;
        AD0BUSY = 1;
       
        while(AD0BUSY);     //这里其实是一样的 中断位会在它变为0的时候变为1 ,所以对它更好用
        AD0INT = 0;
        return ADC0HL;
}
//启动1路转换
unsigned int ADC_Start1()
{
        AMX0SL = 0x01;
        AD0BUSY = 1;
       
        while(AD0BUSY);  
        AD0INT = 0;
        return ADC0HL;
}
//启动2路转换
unsigned int ADC_Start2()
{
        AMX0SL = 0x02;
        AD0BUSY = 1;
       
        while(AD0BUSY);
        AD0INT = 0;
        return ADC0HL;
}

相关帖子

沙发
opal11| | 2013-8-28 23:36 | 只看该作者
路过,学习。

使用特权

评论回复
板凳
ayb_ice| | 2013-8-29 08:16 | 只看该作者
跟踪方式有问题吧,有两种方式选择

使用特权

评论回复
地板
华师单车汉|  楼主 | 2013-8-30 09:01 | 只看该作者
ayb_ice 发表于 2013-8-29 08:16
跟踪方式有问题吧,有两种方式选择

没有问题  确实是因为通道切换并没有想象的那么快才出现问题的

使用特权

评论回复
5
ayb_ice| | 2013-8-30 09:17 | 只看该作者
这个系列芯片我用了不下10个型号,包括020,都没有出现你说的情况

使用特权

评论回复
6
ayb_ice| | 2013-8-30 09:21 | 只看该作者
经常切换通道最好不要选择连续跟踪方式,否则延时是必须的

使用特权

评论回复
7
华师单车汉|  楼主 | 2013-8-30 17:03 | 只看该作者
ayb_ice 发表于 2013-8-30 09:21
经常切换通道最好不要选择连续跟踪方式,否则延时是必须的

是的 性价比还不错,功能在8位中战斗机啊  我是首次遇到这种问题,一般也不注意要延时,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

38

帖子

0

粉丝