?? 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 + -