TLV5616驱动程序如下: 上电给芯片,refin输入2v ,按道理说应该输出 2*refin*4000/4096=4v 左右,怎么输出总是零
#include <mega16.h>
#include "delay.h"
#define uchar unsigned char
#define uint unsigned int
#define TLV5616_fs PORTC.7
#define TLV5616_dat PORTC.6
#define TLV5616_clk PORTC.5
void TLV5616_DA(uint da);//声明函数
void send_TLV5616(int in_data);
void main(void)
{
PORTC=0xff;
DDRC=0xff;
while (1)
{
send_TLV5616(4000);
};
}
void send_TLV5616(int in_data)
{
int send_data=0xfff&in_data+0x4000;//数据寄存器,前四位,0100(X,快速模式,正常工作,X),后12bits,data
unsigned char i;
TLV5616_fs=1;
delay_us(10);
TLV5616_fs=0;
for( i=0;i<16;i++) //12bit 数据输入
{
TLV5616_clk=1;
if(0x8000&send_data)
TLV5616_dat=1;
else
TLV5616_dat=0;
delay_us(10);
TLV5616_clk=0;
send_data=send_data<<1;
}
TLV5616_fs=1;
} |