_nop_();
ADCLK=1; //拉高CLK端 ADDI=channel&0x1; _nop_(); _nop_();
ADCLK=0; //拉低CLK端,形成下降沿2 _nop_(); _nop_();
ADCLK=1; ADDI=(channel>>1)&0x1; _nop_(); _nop_();
ADCLK=0; ADDI=1; _nop_(); _nop_(); dat=0; for(i=0;i<8;i++) {
dat|=ADDO; ADCLK=1; _nop_(); _nop_();
ADCLK=0; _nop_(); _nop_(); dat<<=1;
if(i==7)dat|=ADDO; }
for(i=0;i<8;i++) { j=0;
j=j|ADDO; ADCLK=1; _nop_(); _nop_();
//拉高CLK端 //拉低CLK端,形成下降沿3 //控制命令结束 //收数据 //形成一次时钟脉冲 //收数据
ADCLK=0; //形成一次时钟脉冲 _nop_(); _nop_(); j=j<<7; ndat=ndat|j; if(i<7)ndat>>=1; }
ADCS=1; //拉低CS端 ADCLK=0; //拉低CLK端
ADDO=1; //拉高数据端,回到初始状态 dat<<=8; dat|=ndat;
return(dat); //return ad k }
void main(void) { while(1)
{ unsigned int temp; float press; } }
getdata=Adc0832(0); if(14 { //y=(115-15)/(243-13)*X+15kpa //测试时补偿值为9.3 //当压力值介于15kpa到115kpa之间时,遵循线性变换 int vary=getdata; press=((10.0/23.0)*vary)+9.3; temp=(int)(press*10); //放大10倍,便于后面的计算 dispbuf[3]=temp/1000; //取压力值十位 //取压力值个位 //取压力值十分位 //取压力值百分位 dispbuf[2]=(temp00)/100; dispbuf[1]=((temp00)0)/10; dispbuf[0]=((temp00)0); display(); } if(getdata<15||getdata>232) speaker=0;