#include<math.h>
#include<INTRINS.h>
#define uchar unsigned char
#define uint unsigned int
sbit AD7707_DRDY=P3^3
sbit AD7707_DIN=P1^5
sbit AD7707_DOUT=P1^6
sbit AD7707_SCLK=P1^7
bdata uchar WtrByte
sbit WtrBit=WtrByte^7
void Init_AD7707(void) /*初始化AD7707*/
{
uchar i
AD7707_SCLK=1
AD7707_DIN=1
for(i=0i<100i++) /*防止接口迷失*/
{
AD7707_SCLK=0
AD7707_SCLK=1
}
}
void WriteToReg_AD7707(uchar RegByte) /*写AD7707寄存器*/
{
uchar i
WtrByte=RegByte
for(i=0i<8i++)
{
AD7707_SCLK=0
AD7707_DIN=WtrBit
AD7707_SCLK=1
WtrByte=WtrByte<<1
}
}
void AD_AINT1(void) //通道1初始化
{
WriteToReg_AD7707(0x20) /*激活通道 AIN1/LOCOM, 下一步 *** 作为写 Clock Register*/
WriteToReg_AD7707(0x18) /*启用 Master Clock, 2.4576MHz Clock, 设置 Output Rate 为 50Hz*/
WriteToReg_AD7707(0x10) /*激活通道 AIN1/LOCOM, 下一步 *** 作为写 Setup Register*/
WriteToReg_AD7707(0x44) /*Gain = 1, Unipolar 模式, Buffer 关闭, 清 FSYNC 并执行 Self Calibration*/
}
void AD_AINT2(void) //通道2初始化
{
WriteToReg_AD7707(0x21) //*激活通道 AIN2/LOCOM, 下一步 *** 作为写 Clock Register*/
WriteToReg_AD7707(0x18) /*启用 Master Clock, 2.4576MHz Clock, 设置 Output Rate 为 50Hz*/
WriteToReg_AD7707(0x11) /*激活通道 AIN2/LOCOM, 下一步 *** 作为写 Setup Register*/
WriteToReg_AD7707(0x44) /*Gain = 1, Unipolar 模式, Buffer 关闭, 清 FSYNC 并执行 Self Calibration*/
}
void AD_AINT3(void) //通道3初始化
{ WriteToReg_AD7707(0x23) /*激活通道 AIN3/HICOM, 下一步 *** 作为写 Clock Register*/
WriteToReg_AD7707(0x18) /*启用 Master Clock, 2.4576MHz Clock, 设置 Output Rate 为 50Hz*/
WriteToReg_AD7707(0x13) /*激活通道 AIN3/HICOM, 下一步 *** 作为写 Setup Register*/
WriteToReg_AD7707(0x44) /*Gain = 1, Unipolar 模式, Buffer 关闭, 清 FSYNC 并执行 Self Calibration*/
}
uint Read_AD7707(void) /*读取AD7707数据*/
{
uchar i
uint Data=0
while(AD7707_DRDY==1)
for(i=0i<16i++)
{
Data=Data<<1
AD7707_SCLK=0
Data=Data|AD7707_DOUT
AD7707_SCLK=1
}
return Data
}
供供参考:http://www.zhixinrui.com/forum.php?gid=1
这个是使用外部RAM总线形式来通讯的(最好把电路图贴上来)CTRL _at_ 0x2FFF//这个代表对外部0x2FFF地址进行 *** 作
ADSEL _at_ 0x4FFF//这个代表对外部0x4FFF地址进行 *** 作
通过硬件的总线协议 提高通讯速度
可以发送16进制数或ASCII码格式的数据发送16进制的数据,例如:
SBUF=ADC1//ADC1是AD转换的结果,16进制数据
发送ASC码的格式数据,例如:
SBUF=0X30+ADC1/100//发送百位数字
SBUF=0X30+(ADC1%100)/10//发送十位数字
SBUF=0X30+(ADC1%100)%10//发送个位数字
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)