msp430和att7022b的数据采集程序
时间:10-02
整理:3721RD
点击:
/**************宏定义***************/
#define CLR_SCLK P5OUT&=~BIT3 //SCLK = P5.3
#define SET_SCLK P5OUT|=BIT3
#define CLR_DIN P5OUT&=~BIT1 //DIN = P5.1
#define SET_DIN P5OUT|=BIT1
#define CLR_CS P5OUT&=~BIT0 //CS = P5.0
#define SET_CS P5OUT|=BIT0
#define DOUT_vsl P5IN&BIT2 //DOUT=P5.2
ulong Respons_Dat=0; //应答数据
float VRmsa=0; //电压均方根
uint One_Sec_Time=0;
uint Tempreture=0; //温度
uchar Receive_Dat[3]={0},Tx_Send[5]={0};//接收时间,发送时间
uchar Allow_Send_flag=0,Caculate_Use=0;
void InitUART(void)
{
P3SEL |= 0x30; // P3.4,5 = USART0 option select
ME1 |= UTXE0; // Enable USART0 TXD/RXD
UCTL0 |= CHAR; // 8-bit character
UTCTL0 |= SSEL1; // UCLK = SMCLK
UBR00 = 0x68; // 1Mhz/9600 -
UBR10 = 0x00; //
UMCTL0 = 0x40; // modulation
UCTL0 &= ~SWRST; // Initialize USART state machine
}
/*******************************************
函数名称:Delay5ms
功 能:延时约5ms
参 数:无
返回值 :无
********************************************/
void Delay5ms(void)
{
uint i=40000;
while (i != 0)
{
i--;
}
}
//////////////////////////////////////////////
/////////// 延时函数 ////////////////
////////////////////////////////////////////
void delay(uint m)
{
uint i,j;
for(i=0;i<m;i++)
{
for(j=0;j<121;j++)
{
;
}
}
}
void Delay10us() //@16MHz
{
unsigned char i;
i = 37;
while (--i);
}
void ReadSpi(uchar com_data)
{
uchar i,j;
SET_CS;
CLR_SCLK;
CLR_CS;
Delay10us();
for(i=8;i>=1;i--)
{
com_data<<=1;
SET_SCLK;
if(com_data&0x80)
SET_DIN;
else CLR_DIN;
CLR_SCLK;
}
Delay10us();
for(i=3;i>=1;i--)
{
for(j=0;j<8;j++)
{
com_data<<=1;
SET_SCLK;
if(DOUT_vsl)
com_data|=0x01;
CLR_SCLK;
}
Receive_Dat[i-1]=com_data;
}
SET_CS;
}
void WriteSpi(uchar com_data)
{
uchar i=0,j=0;
SET_CS;
CLR_SCLK;
CLR_CS;
Delay10us();
for(i=8;i>=1;i--)
{
SET_SCLK;
com_data<<=1;
if(com_data&0x80)
SET_DIN;
else CLR_DIN;
Delay10us();
CLR_SCLK;
Delay10us();
}
for(i=3;i>=1;i--)
{
com_data=Receive_Dat[i-1];
for(j=0;j<8;j++)
{
com_data<<=1;
SET_SCLK;
if(com_data&0x80)
SET_DIN;
else CLR_DIN;
Delay10us();
CLR_SCLK;
Delay10us();
}
}
SET_CS;
}