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

📄 7841.c

📁 ADS7841的驱动
💻 C
字号:
#include "SPCE061A.h"


void delay_7841(unsigned int i)
{
	for(;i>0;i--);
}

void P_IOA_IOB_INIT(void)
{
	*P_IOA_Dir|=0x0007;
	*P_IOA_Dir&=0xfff7;
	
	*P_IOA_Attrib |=0x0007;
	*P_IOA_Attrib &=0xfff7;
	
	*P_IOA_Data  |=0x0000;
	*P_IOA_Data  &=0xffe0;
}

unsigned int ADS7841_read_data(unsigned int Channel)
{
	unsigned int ADResult=0,ADS7841_CHANNEL; 
	unsigned int DataInput=0; 
	unsigned int i,a=0,b=0; 
	*P_IOA_Dir |= 0x0004;			    //DIN(IOA2)为带数据缓存器的低电平输出。
	*P_IOA_Attrib |= 0x004;
	*P_IOA_Data &= 0xfffb;

	switch(Channel)
	{
		case 0:	ADS7841_CHANNEL=0x10;break;
		case 1:	ADS7841_CHANNEL=0x50;break; 
		case 2:	ADS7841_CHANNEL=0x20;break; 
		case 3:	ADS7841_CHANNEL=0x60;break; 
		default:ADS7841_CHANNEL=0x10;break;
	}
	DataInput=0x80 | ADS7841_CHANNEL | 0x04;
	
	*P_IOA_Data &=0xfffd;								//CS==L
	delay_7841(1);
	*P_IOA_Data &=0xfffe;								//DCLK==L
	delay_7841(1);

	for(i=0;i<8;i++)									//发送DIN
	{
		a=DataInput&0x80;
		a=a>>5;											//送到IOA2 DIN
		*P_IOA_Data &=0xfffb;
		*P_IOA_Data |=a;
		*P_IOA_Data &=0xfffe;							//DCLK==L
		delay_7841(3);
		*P_IOA_Data |=0x0001;							//DCLK==H
		DataInput = DataInput <<1;
	}	
	*P_IOA_Data &=0xfffe;								//DCLK==L
	delay_7841(1);
	while(*P_IOA_Data&0x0008)							//是否转换完成
	{
		delay_7841(3);
		*P_IOA_Data &=0xfffe;								//DCLK==L
		delay_7841(3);
		*P_IOA_Data |=0x0001;								//DCLK==H
		*P_Watchdog_Clear = 0x0001;
	}
	delay_7841(1);
	for(i=0;i<12;i++)
	{
		
		*P_IOA_Data |=0x0001;								//DCLK==H
		delay_7841(1);
		a = *P_IOA_Data&0x0010;
		a = a>>4;
		a = a<<(11-i);
		b = b | a;
		*P_IOA_Data &=0xfffe;								//DCLK==L
		ADResult=b;
	}
	
	for(i=0;i<4;i++)                    //滤掉多余的4个时钟
	{
		*P_IOA_Data |=0x0001;         // clk high将CLK置1。且不影响其他位,
		delay_7841(1);
		*P_IOA_Data &=0xfffe;        // clk low
		delay_7841(1);
	}
	ADResult &= 0x0fff;
	*P_IOA_Data |= 0x0002;			    // CS(IOA14)为高电平,禁止芯片
	return 	ADResult;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -