📄 ad7705.c
字号:
#include "config.h"
#define Init_Byte 0x08
//sbit AD_DAT =P1^0;
//sbit AD_CLK =P1^2;
//sbit AD_RST =P1^3;
//sbit AD_READY =P1^1;
//0 0/DRDY (0); RS2 (0); RS1 (0); RS0 (0); R/W (0); StBY (0); CH1 (0); CH0 (0);0x00
//1 MD1 (0) ; MD0 (0); G2 (0); G1 (0); G0 (0); B/U (0); BUF (0); FSYNC(1); 0x01
//2 ZERO (0) ZERO (0) ZERO (0) AD_CLKDIS (0) AD_CLKDIV (0) AD_CLK (1) FS1 (0) FS0 (1)
uint16 ad_result(void);
void ad_ch_scal(unsigned char ch,unsigned char scal);
//bit ad_drdy(void );
void ad_init(void);
void ad_reset(void);
unsigned int ad_read_byte(unsigned char Bit);
void ad_write_byte(unsigned char byte_w);
uint8 B_Channel;
void ad_init()
{
//ad_reset();
//ad_write_byte(0x10);
//ad_write_byte(0);
ad_write_byte(0x20);
ad_write_byte(Init_Byte);
DelayNS(10);
ad_write_byte(0x20);
ad_write_byte(Init_Byte);
}
uint16 ad_result()
{
// ad_reset();
//IO0DIR = IO0DIR | AD_DAT; //输出
ad_write_byte(0x38 | B_Channel);
//IO0DIR = IO0DIR & (~AD_DAT); //输入
return ad_read_byte(16);
}
void ad_ch_scal(unsigned char ch,uint8 scal)
{
// ad_reset();
B_Channel=(ch&0x01);
scal&=0x7;scal<<=3;
scal|=0x44;
// ad_write_byte(0x10 | B_Channel);
// ad_write_byte(scal | 1);
//IO0DIR = IO0DIR | AD_DAT; //输出
ad_write_byte(0x10 | B_Channel);
ad_write_byte(scal);
}
void ad_write_byte(unsigned char byte_w)
{
unsigned char i;
IO0DIR=IO0DIR | (AD_DAT);
IO0DIR=IO0DIR | (AD_DAT);
IO0DIR=IO0DIR | (AD_DAT);
IO0DIR=IO0DIR | (AD_DAT);
//Cs7705(0);
for (i=8;i>0;i--)
{
if (byte_w&0x80)
{
IO0SET=AD_DAT;IO0SET=AD_DAT;
IO0SET=AD_DAT;IO0SET=AD_DAT;
}
else
{
IO0CLR=AD_DAT;IO0CLR=AD_DAT;
IO0CLR=AD_DAT;IO0CLR=AD_DAT;
}
byte_w<<=1;
IO1CLR=AD_CLK;
IO1CLR=AD_CLK;
IO1CLR=AD_CLK;
IO1CLR=AD_CLK;
IO1SET=AD_CLK;
IO1SET=AD_CLK;
IO1SET=AD_CLK;
IO1SET=AD_CLK;
}
IO0SET=AD_DAT;IO0SET=AD_DAT;
IO1SET=AD_CLK;IO1SET=AD_CLK;
//Cs7705(1);
}
unsigned int ad_read_byte(unsigned char BitS)
{
unsigned char RD_H,RD_L;
IO0DIR=IO0DIR & (~(AD_DAT)) ;
IO0DIR=IO0DIR & (~(AD_DAT)) ;
IO0DIR=IO0DIR & (~(AD_DAT)) ;
IO0DIR=IO0DIR & (~(AD_DAT)) ;
//Cs7705(0);
//IO0CLR=AD_DAT;
//IO0SET=AD_DAT;
for (;BitS>8;BitS--)
{
IO1CLR=AD_CLK;
IO1CLR=AD_CLK;
IO1CLR=AD_CLK;
IO1CLR=AD_CLK;
//IO1CLR=AD_CLK;
RD_H<<=1;
//IO1CLR=AD_CLK;
IO1SET=AD_CLK;
IO1SET=AD_CLK;
IO1SET=AD_CLK;
IO1SET=AD_CLK;
if ((IO0PIN & (AD_DAT))==AD_DAT)
RD_H++;
else
;//DelayNS(50);
}
for (;BitS>0;BitS-- )
{
IO1CLR=AD_CLK;
IO1CLR=AD_CLK;
IO1CLR=AD_CLK;
IO1CLR=AD_CLK;
//IO1CLR=AD_CLK;
RD_L<<=1;
IO1SET=AD_CLK;
IO1SET=AD_CLK;
IO1SET=AD_CLK;
IO1SET=AD_CLK;
//IO1CLR=AD_CLK;
if ((IO0PIN & (AD_DAT))==AD_DAT)
RD_L++;
}
//Cs7705(1);
return (RD_H*256+RD_L);
}
void ad_reset(void)
{
unsigned char i;
IO0DIR = IO0DIR | AD_DAT; //输出
IO0SET = AD_DAT;
IO0SET = AD_DAT;
for (i=100;i>0;i--)
{
IO1CLR =AD_CLK; IO1CLR =AD_CLK;
IO1SET =AD_CLK; IO1SET =AD_CLK;
}
}
/*bit ad_drdy(void ){
unsigned char Temp;
ad_write_byte(0x08 | (char)B_Channel);
Temp=ad_read_byte(8);
if (Temp&0x08) return (Temp&0x80);else return 0;
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -