微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > 硬件电路设计讨论 > msp430和att7022b的数据采集程序

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;                                                          
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top