标题:
能不能帮我解释一下,下面每条程序的含义!万分感谢!
[打印本页]
作者:
Jennie895
时间:
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);
}
作者:
jinsheng7533967
时间:
2020-5-23 17:23
字面含义都很清楚了,自己要多动动手,多按自己理解的意思调试就能了解这些代码是做什么的。
作者:
wulin
时间:
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;
}
作者:
aligaduokeil
时间:
2020-5-23 19:30
你这个只截取了一部分,我只能看出来这是一个简单的ad采集器,三个脉冲一组,DO采集信号送个DATA,DATA没完成8位返回一次。都是些脉冲,最复杂的应该是倒数第三句,意思是把DO采集到的0
作者:
aligaduokeil
时间:
2020-5-23 19:31
或1送给DATA,自己多琢磨琢磨,挺简单的,这里不提倡无脑发问这种情况。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1