📄 ad974_main.c
字号:
#include <MSP430x16x.h>
#define DATA (P3IN & BIT5) //DATA
#define CLK_H (P3OUT|=BIT4) //DATACLK
#define CLK_L (P3OUT&=~BIT4)
#define R_C_H (P3OUT|=BIT2)
#define R_C_L (P3OUT&=~BIT2)
#define BUSY_974 (P3IN & BIT3)
#define A0_H (P3OUT|=BIT0)
#define A0_L (P3OUT&=~BIT0)
#define A1_H (P3OUT|=BIT1)
#define A1_L (P3OUT&=~BIT1)
unsigned int AD974_DataReg=0;
void delay1(int m)
{
int i;
for(i=0;i<m;i++);
}
void AD974_PORT_INIT()
{
//P3DIR =0x00;
P3OUT =0x00;
P3DIR|=BIT2+BIT4+BIT0+BIT1;
P3DIR &=~BIT3;
//P4DIR&=~BIT7;
R_C_H;
CLK_L;
//CLK_H;
}
unsigned int AD974_ReceiveWord(unsigned char channel)
{
//unsigned int AD977_DataReg=0;//ReceiveWord
unsigned char AD974_Loop;
if (channel==0)
{
A1_L;
A0_L;
}
else if (channel==1)
{
A1_L;
A0_H;
}
else if (channel==2)
{
A1_H;
A0_L;
}
else if (channel==3)
{
A1_H;
A0_H;
}
delay1(1);
//CLK_H;
R_C_L;
_NOP(); //t1:125ns
while (BUSY_974!=BIT3);
R_C_H;
P3DIR &=~BIT5;
for (AD974_Loop=0;AD974_Loop<15;AD974_Loop++)
{
CLK_H;
CLK_L;
if (DATA==BIT5)
{
AD974_DataReg|=BIT0;
}
AD974_DataReg<<=1;
}
CLK_H;
CLK_L;
if (DATA==BIT5)
{
AD974_DataReg|=BIT0;
}
//CLK_H;
//CLK_L;
return (AD974_DataReg);
}
void Init_Clk()
{
unsigned int iq0;
//使用XT2振荡器
BCSCTL1 &=~XT2OFF; //打开XT2振荡器,ACLK 为XT1
do
{
IFG1 &= ~OFIFG; //清除振荡器失效标志
for(iq0=0xFF;iq0>0;iq0--);
}
while((IFG1 & OFIFG)==0); //判断Xt2是否起振
BCSCTL2=SELM_2+SELS; //选择MCLK,SMCLK为XT2时钟
_EINT(); //打开全局中断
}
unsigned int fsd;
float Vin;
float Vout;
int main( void )
{
WDTCTL = WDTPW + WDTHOLD;
Init_Clk();
while(1)
{
AD974_DataReg=0;
AD974_PORT_INIT();
fsd=AD974_ReceiveWord(1);
Vin=(float)(fsd*4.0)/13107.0;
Vin=Vin-10.0;
_NOP();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -