本帖最后由 yiyetianfang 于 2012-8-30 16:17 编辑
程序如下,按12位DA计算0x349应该是1V的但实际输出1.9V了,REFIN是4.87V。就是实际输出电压比计算值大了很多。也提取到达最大值。
请各位高手指点一下
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
void read(uint date);
/****************
TLV5616的数据,时钟线
***************/
sbit DIN=P1^0;
sbit SCLK=P1^1;
sbit CS=P1^2;
sbit FS=P1^3;
//void delay(uchar z)
//{
// uchar i,j;
// for(i=0;i<z;i++)
// for(j=0;j<10;j++);
//
//}
void main()
{
while(1)
{
read(0x4349);
}
}
void read(uint date)
{
uchar k;
CS=0;
SCLK=1;
FS=0;
for(k=0;k<16;k++)
{
_nop_();
_nop_();
DIN=(bit)(date&0x8000); //Bit称为位数据类型,其数据有两种取值:0和1,长度为1字节。
SCLK=0;
_nop_();
_nop_();
date<<=1;
SCLK=1;
_nop_();
_nop_();
}
CS=1;
FS=1;
SCLK=0;
} |