找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求分析这段单片机代码的作用

[复制链接]
ID:559917 发表于 2019-6-17 13:52 | 显示全部楼层 |阅读模式
unsigned int Adc0832(unsigned char channel)
{
        uchar i=0;
        uchar j;
        uint dat=0;
        uchar ndat=0;
        uchar  Vot=0;

        if(channel==0)channel=2;
        if(channel==1)channel=3;
        ADDI=1;
        _nop_();
        _nop_();
        ADCS=0;//拉低CS端
        _nop_();
        _nop_();
        ADCLK=1;//拉高CLK端
        _nop_();
        _nop_();
        ADCLK=0;//拉低CLK端,形成下降沿1
        _nop_();
        _nop_();
        ADCLK=1;//拉高CLK端
        ADDI=channel&0x1;
        _nop_();
        _nop_();
        ADCLK=0;//拉低CLK端,形成下降沿2
        _nop_();
        _nop_();
        ADCLK=1;//拉高CLK端
        ADDI=(channel>>1)&0x1;
        _nop_();
        _nop_();
        ADCLK=0;//拉低CLK端,形成下降沿3
        ADDI=1;//控制命令结束
        _nop_();
        _nop_();
        dat=0;
        for(i=0;i<8;i++)
        {
                dat|=ADDO;//收数据
                ADCLK=1;
                _nop_();
                _nop_();
                ADCLK=0;//形成一次时钟脉冲
                _nop_();
                _nop_();
                dat<<=1;
                if(i==7)dat|=ADDO;
        }
        for(i=0;i<8;i++)
        {
                j=0;
                j=j|ADDO;//收数据
                ADCLK=1;
                _nop_();
                _nop_();
                ADCLK=0;//形成一次时钟脉冲
                _nop_();
                _nop_();
                j=j<<7;
                ndat=ndat|j;
                if(i<7)ndat>>=1;
        }
        ADCS=1;//拉低CS端
        ADCLK=0;//拉低CLK端
        ADDO=1;//拉高数据端,回到初始状态
        dat<<=8;
        dat|=ndat;

        return(dat);            //return ad data
}

回复

使用道具 举报

ID:552614 发表于 2019-6-17 16:00 | 显示全部楼层
这应该是一个AD 转换的程序,先按它的时序来拉低或拔高电平,接着读取数据
回复

使用道具 举报

ID:517466 发表于 2019-6-17 16:47 | 显示全部楼层
你这个是通过串行方式获取AD转换结果的吧。for循环之前的代码好像是启动AD转换。后面的是通过串行方式获得转换结果。
回复

使用道具 举报

ID:452821 发表于 2019-6-17 20:38 | 显示全部楼层
这就是ADC0832对单片机的一种串行通讯,所以作用就是通讯咯
回复

使用道具 举报

ID:487604 发表于 2019-6-17 20:43 | 显示全部楼层
这是ADC0832的ADC转换程序,开始的两个if语句是通道选择,后面是按该芯片的通信时序写入控制指令和读取AD转换值
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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