我要用TLC0834做A/D转换.... TLC0834是4通道的,如果我只用到他的1个通道就够了,其他3通道应该怎么处理啊?是不是架空在那里就好了?
下面是我自己改的程序,在使用的时候,result的值好象没出来,程序编译通过的,不知道那里出的问题,大家帮忙研究下啊
#include <reg52.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int #define ulong unsigned long int #define FLASE 0 #define TRUE 1 //=========引脚定义============== sbit CS_AD =P0^2; sbit CLK_AD =P0^4; sbit DAT_AD =P0^3; /******************************************************************** * 名称: uchar ADConver(); * 功能: 获取模数转换值 * 调用: * 输入: n,表示通道值,n=(1-4) * 说明: * 返回值: adresult ***********************************************************************/ //=======AD数据开始转换========= uchar ADConver() { uchar i,adresult;//adresult2; adresult=0; CS_AD=1; CLK_AD=0; CS_AD=0; //send start bit 1 DAT_AD=1; CLK_AD=1; CLK_AD=0; //send SGL bit DAT_AD=1; CLK_AD=1; CLK_AD=0; //send ODD bit DAT_AD=0; CLK_AD=1; CLK_AD=0; //send SELECT bit DAT_AD=0; CLK_AD=1; CLK_AD=0; for(i=0;i<8;i++) { adresult=_crol_(adresult,1);//高位向左移 CLK_AD=1; CLK_AD=0; DAT_AD=1; if(DAT_AD==1) adresult|=0x01; } for(i=0;i<8;i++) { //adresult2=_cror_(adresult2,1);//高位向右移 //if(DAT_AD==1) //adresult2|=0x80; CLK_AD=1; CLK_AD=0; //DAT_AD=1; } CS_AD=1; return adresult; } |