
这个芯片的功能就不用我介绍了吧,AD芯片都一样。
主要是程序的初始化,和AD采样时序的程序编写,看的懂时序就会用这个芯片了。
//TLC1543 A/D用转换用#define CLOCK P1_3#define D_IN P1_4#define D_OUT P1_5#define _CS P1_6uint read1543(uchar port) //从TLC1543读取采样值,形参port是采样的通道号{uint data aduint data iuchar data al=0,ah=0CLOCK=0_CS=0port<<=4for (i=0i<4i++) //把通道号打入1543{D_IN=(bit)(port&0x80)CLOCK=1CLOCK=0port<<=1}for (i=0i<6i++) //填充6个CLOCK{CLOCK=1CLOCK=0}_CS=1_nop_()_nop_()_CS=0 //等待AD转换for (i=0i<2i++) //取D9,D8{D_OUT=1CLOCK=1ah<<=1if (D_OUT) ah|=0x01CLOCK=0} for (i=0i<8i++) //取D7--D0{D_OUT=1CLOCK=1al<<=1if (D_OUT) al|=0x01CLOCK=0} _CS=1ad=(uint)ahad<<=8ad|=al //得到AD值return (ad)}
因为每次读出来只读出1个字节,分别为高地址的ah,低地址的al
现在要把这两个值放到一个2个字节的变量中去。
ad=(uint)ah // ad高8位清0,低8位为ah的值。
ad<<=8// ad向左移8位,这时ad高8位的值和ah一样,低8位的值为0
ad|=al// 按位或,因为al不够16位,所以ad高8位的值不会变,ad低8位为0,所以按位或上al,以后低8位的值为al的值。
经过上面三条语句,将ah,al,合并到ad中。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)