⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad7705.c

📁 我用ARM写的一些东西
💻 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 + -