找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1577|回复: 4
收起左侧

能不能帮我解释一下,下面每条程序的含义!万分感谢!

[复制链接]
ID:715024 发表于 2020-5-23 15:36 | 显示全部楼层 |阅读模式
uchar ADC0832(uchar channel)  //AD采集
{
    uchar i,ADC_Data;  

    ADC_CS=0;
    ADC_Data=0;
    ADC_DO=0;
    Delay100us();

    ADC_CLK=0;
    Delay100us();
    ADC_DO=1;  //第一个脉冲  启动AD转换器
    ADC_CLK=1;
    Delay100us();
    ADC_CLK=0;

    Delay100us();
    ADC_CLK=1; // 第二的脉冲 送出1
    ADC_DO=1;
    Delay100us();
    ADC_CLK=0;

    Delay100us();

    if(channel == 0)
    {
        ADC_DO=0;
    }
    else
    {
        ADC_DO=1;
    }

    ADC_CLK=1;   //第三个脉冲 送出0
    Delay100us();
    ADC_CLK=0;

    ADC_DO=0;   //D1口转为高阻态
    ADC_DO=1;   //D0口脱离高阻态 为输出做准备

    for (i=0; i<8; i++) //读出数据
    {
        ADC_CLK=1;
        Delay100us();
        ADC_CLK=0;
        Delay100us();
        ADC_Data=(ADC_Data<<1)|ADC_DO;
    }
    ADC_CS=1;
    return(ADC_Data);
}

回复

使用道具 举报

ID:21069 发表于 2020-5-23 17:23 | 显示全部楼层
字面含义都很清楚了,自己要多动动手,多按自己理解的意思调试就能了解这些代码是做什么的。
回复

使用道具 举报

ID:213173 发表于 2020-5-23 17:51 | 显示全部楼层
这是坛友的程序片段,供参考。
uchar ad0832read(bit ch)
{
        uchar i=0,value=0,value1=0;               
        CLK=0; //时钟置低平
        DO=1;  //开始信号为高电平
        CS=0;  //片选信号置低,启动AD转换芯片
        CLK=1; //输入开始信号(构成一个正脉冲),时钟上升沿,输入开始信号
        CLK=0; //时钟下降沿
        DO =1; //模拟信号输入模式选择(1:单模信号,0:双模差分信号)
        CLK=1; //时钟上升沿,输入开始信号
        CLK=0; //时钟下降沿
        DO=ch; //模拟信号输入通道选择(1:通道CH1,0:通道CH0)
        CLK=1; //时钟上升沿,输入开始信号
        CLK=0; //时钟下降沿
        DO =1; //数据线置高,准备接收数据
        for(i=0;i<8;i++) //从高位移入数据
        {
                CLK=1;
                CLK=0; //时钟下降沿,AD0832输出数据,高位(MSB)先
                value<<=1;
                if(DO)
                        value++;
        }
        for(i=0;i<8;i++) //从低位移入数据
        {                //接收校验数据
                value1>>=1;
                if(DO)
                        value1+=0x80;
                CLK=1;
                CLK=0;
        }
        CLK=1;        //数据线置高,释放总线,完成一次转换
        DO =1;
        CS =1;        
        if(value==value1) //与校验数据比较,正确就返回数据,否则返回0
                return value;
        return 0;
}
回复

使用道具 举报

ID:757123 发表于 2020-5-23 19:30 | 显示全部楼层
你这个只截取了一部分,我只能看出来这是一个简单的ad采集器,三个脉冲一组,DO采集信号送个DATA,DATA没完成8位返回一次。都是些脉冲,最复杂的应该是倒数第三句,意思是把DO采集到的0
回复

使用道具 举报

ID:757123 发表于 2020-5-23 19:31 | 显示全部楼层
或1送给DATA,自己多琢磨琢磨,挺简单的,这里不提倡无脑发问这种情况。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表