ad0832驱动程序.c

来自「AD0832驱动程序」· C语言 代码 · 共 113 行

C
113
字号
sbit ADCS=P1^3;
sbit ADCLK=P1^5;
sbit ADDO =P1^6;
sbit ADDI =P1^7;
// 读取温度信号 
unsigned char ReadADCH0(void) //把模拟电压值转换成8位二进制数并返回 
	{ 
	unsigned char i, ch;
	ch=0;
	ADCS=0;
	ADDO=0; //片选,DO为高阻态 
	Nop();
	Nop();
	ADCLK=0;
	Nop();
	Nop();
	ADDI=1; 
	ADCLK=1; 
	Nop();
	Nop(); //第一个脉冲,起始位 
	ADCLK=0; 
	Nop();
	Nop();
	ADDI=1; 
	ADCLK=1;
	Nop();
	Nop();//第二个脉冲,DI=1表示双通道单极性输入 
	ADCLK=0;
	Nop();
	Nop();
	ADDI=0; 
	ADCLK=1;
	Nop();
	Nop(); //第三个脉冲,DI=1表示选择通道1(CH2)  
	ADDI=0; 
	ADDO=1;//DI转为高阻态,DO脱离高阻态为输出数据作准备 
	ADCLK=1;
	Nop();
	Nop();
	ADCLK=0; 
	Nop();
	Nop();
	for (i=0; i<8; i++)
		{ 
		ADCLK=1; 
		Nop();
		Nop();
		ADCLK=0; 
		Nop();
		Nop();
		ch = (ch<<1)&0xfe;
		if (ADDO) ch |= 0x01;
		else      ch |= 0x00; //在每个脉冲的下降沿DO输出一位数据,最终ch为8位二进制数 
		}
	ADCS=1; //清除所有寄存器  
	return ch;
	}

// 读取湿度信号 
unsigned char ReadADCH1(void) //把模拟电压值转换成8位二进制数并返回 
	{ 
	unsigned char i,ch;
	ch=0;
	ADCS=0;
	ADDO=0;//片选,DO为高阻态 
	Nop();
	Nop();
	ADCLK=0;
	Nop();
	Nop();
	ADDI=1; 
	ADCLK=1; 
	Nop();
	Nop(); //第一个脉冲,起始位 
	ADCLK=0; 
	Nop();
	Nop();
	ADDI=1; 
	ADCLK=1;
	Nop();
	Nop();//第二个脉冲,DI=1表示双通道单极性输入 
	ADCLK=0;
	Nop();
	Nop();
	ADDI=1; 
	ADCLK=1;
	Nop();
	Nop();//第三个脉冲,DI=1表示选择通道1(CH2) 
	
	ADDI=0; 
	ADDO=1;//DI转为高阻态,DO脱离高阻态为输出数据作准备 
	ADCLK=1;
	Nop();
	Nop();
	ADCLK=0;
	Nop();
	Nop();

	for (i=0; i<8; i++)
		{ 
		ADCLK=1; 
		Nop();
		Nop();
		ADCLK=0; 
		Nop();
		Nop();
		ch = (ch<<1)&0xfe;
		if (ADDO) ch |= 0x01;
		else      ch |= 0x00;  //在每个脉冲的下降沿DO输出一位数据,最终ch为8位二进制数 
		}
	ADCS=1; //	 清除所有寄存器  
	return(ch);
	}

⌨️ 快捷键说明

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