?? tlv5638.c
字號:
//#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define fastsp 1
#define slowsp 0
#define pwr_down 1
#define pwr_on 0
#define dac_buffer 0
#define buffer 1
#define daca 2
#define control 3
#define external 0
#define in_1024 1
#define in_2048 2
#define setcs(x) (pincs=(x)?1:0)
#define setsclk(x) (pinsclk=(x)?1:0)
sbit pindin=P2^5;
sbit pinsclk=P2^6;
sbit pincs=P2^7;
void nnop(uchar i)
{for(;i>0;i--);}
void longdelay(uint i)
{
uint j;
for(;i>0;i--)
{for(j=1000;j>0;j--);}
}
void spiwrite(int temp)
{
uint i;
setcs(0);
for(i=0;i<16;i++)
{
pindin=(bit)(temp&0x8000);
setsclk(1);
temp<<=1;
nnop(1);
setsclk(0);
nnop(1);
}
setcs(1);
}
int volttodata(uint ref,uint ex_ref,float out_volt)
{
int temp;
switch(ref)
{
case external :temp=(int)((out_volt*4096)/(2*ex_ref));break;
case in_1024 :temp=(int)((out_volt*4096)/(2*1));break;
case in_2048 :temp=(int)((out_volt*4096)/(2*2));break;
default :break;
}
return(temp&0xfff);
}
void seta(uint speed,uint ref,uint ex_ref,float temp)
{
int modcmd;
int data1;
modcmd=0x9000|(speed<<14)|(ref);
data1=volttodata(ref,ex_ref,temp);
spiwrite(modcmd);
nnop(10);
spiwrite(data1);
}
/*void main()
{
pindin=0;
pincs=0;
pinsclk=0;
while(1)
{
seta(fastsp,external,12,6.51);
longdelay(10);
}
} */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -