#include <reg52.h> #include <intrins.h> #include <main.h> #include <absacc.h>
sbit ADIN = P1^0; sbit ADOUT = P1^1; sbit ADCLK = P1^2; sbit ADRST = P1^3;
sbit ADDRDY = P3^3; unsigned int okdata;
void delay(unsigned char t) { for(;t>0;t--); }
/*写一个字节*/ void Writebyte7705(unsigned int CMD) { unsigned char i; ADCLK=1; //1 for(i=0;i<8;i++) { ADCLK=0;//0 delay(1); ADIN=(bit)(CMD&0x80);//数据位输入 delay(1); ADCLK=1;//1 delay(1); CMD<<=1; } }
/* 读一个字 */ unsigned int Readword7705() { unsigned char i; unsigned int dataout; ADCLK = 1; for (i = 0,dataout=0 ; i < 16 ; i++) { ADCLK=0; delay(1); dataout=dataout<<1; delay(1);
ADCLK=1; delay(1);
if (ADOUT) dataout|=0x01; } return dataout; }
void Reset7705(void) { Writebyte7705(0xff); Writebyte7705(0xff); Writebyte7705(0xff); Writebyte7705(0xff); Writebyte7705(0xff);//防止接口迷失,使通信存器回到等待状态
}
/*7705初始化*/ void Init7705() { Reset7705(); Writebyte7705(0x20);//发送写命令 下一操作为clock register Writebyte7705(0x0c);//外接晶振,分频,2.4576M 分频,2M,20Hz更新速率 Writebyte7705(0x10);//下一操作为setup register Writebyte7705(0x6c);//自校准,32倍,单极性 }
Start_AD() { while(1) { while(!ADDRDY); Writebyte7705(0x38); okdata=Readword7705(); //displayad(); } }
main() { Init7705(); …… …… ……
}
|