标题:
求分析这段单片机代码的作用
[打印本页]
作者:
ljb147258369
时间:
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
}
作者:
charles11
时间:
2019-6-17 16:00
这应该是一个AD 转换的程序,先按它的时序来拉低或拔高电平,接着读取数据
作者:
suncat0504
时间:
2019-6-17 16:47
你这个是通过串行方式获取AD转换结果的吧。for循环之前的代码好像是启动AD转换。后面的是通过串行方式获得转换结果。
作者:
尹子归来
时间:
2019-6-17 20:38
这就是ADC0832对单片机的一种串行通讯,所以作用就是通讯咯
作者:
Weit8
时间:
2019-6-17 20:43
这是ADC0832的ADC转换程序,开始的两个if语句是通道选择,后面是按该芯片的通信时序写入控制指令和读取AD转换值
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1