- #include "ADC0832.h"
- unsigned char Read_ADC0832(unsigned char CH)
- {
- unsigned char i,dis0,dis1;
- unsigned int date;
- ADC_Clk=0; //拉低时钟
- ADC_DI=1; //初始化
- _nop_();
- ADC_CS=0; //芯片选定
- _nop_();
- ADC_Clk=1; //拉高时钟
- _nop_();
- if(CH==0) //通道选择
- {
- ADC_Clk=0; //第一次拉低时钟
- ADC_DI=1; //通道0的第一位
- _nop_();
- ADC_Clk=1; //拉高时钟
- _nop_();
- ADC_Clk=0; //第二次拉低时钟,ADC0832 DI接受数据
- ADC_DI=0; //通道0的第二位
- _nop_();
- ADC_Clk=1;
- _nop_();
- }
- else
- {
- ADC_Clk=0;
- ADC_DI=1; //通道1的第一位
- _nop_();
- ADC_Clk=1;
- _nop_();
- ADC_Clk=0;
- ADC_DI=1; //通道1的第二位
- _nop_();
- ADC_Clk=1;
- _nop_();
- }
- ADC_Clk=0; //第三次拉低时钟,此前DI两次赋值决定通道
- ADC_DI=1; //DI开始失效,拉高电平,便于DO数据传输
- for(i= 0;i<8;i++) //读取前8位的值
- {
- _nop_();
- dis0<<= 1;
- ADC_Clk=1;
- _nop_();
- ADC_Clk=0;
- if (ADC_DO)
- dis0|=0x01;
- else
- dis0|=0x00;
- }
- for (i=0;i<8;i++) //读取后8位的值
- {
- dis1>>= 1;
- if (ADC_DO)
- dis1|= 0x80;
- else
- dis1|= 0x00;
- _nop_();
- ADC_Clk=1;
- _nop_();
- ADC_Clk=0;
- }
- if(dis0==dis1) //两次结束数据比较,若相等
- date=dis0; //则赋值给dat
- _nop_();
- ADC_CS=1; //释暸ADC0832
- ADC_DO=1; //拉高输出端,暯便下次通道选择DI端有效
- ADC_Clk=1; //拉高时钟
- return date;
复制代码
|