亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tdc_gp2.c

?? msp430與TDC-GP2的Spi口通信程序
?? C
字號:

#include<msp430x13x.h>
#include"Global.h"




/*-----------定義TDC-GP2端口-----------*/

//SPI通訊端口定義
#define SPI_SSN_SET   P3OUT|=BIT0;
#define SPI_SSN_CLR   P3OUT&=~(BIT0);
#define SPI_SI_SET    P3OUT|=BIT2;
#define SPI_SI_CLR    P3OUT&=~(BIT2);
#define SPI_SCK_SET   P3OUT|=BIT3;
#define SPI_SCK_CLR   P3OUT&=~(BIT3);
//#define SPI_SO        ((P3IN&BIT1)==0x02); 
//P3.1為TDC的SPI數據輸出
//P1.4為TDC的中斷信號輸出位

//TDC_GP2復位
#define TDC_RSTN_SET      P2OUT|=BIT7;
#define TDC_RSTN_CLR      P2OUT&=~(BIT7);


/*

//以下端口定義用于測試
#define SPI_SSN_SET   P3OUT|=BIT7;
#define SPI_SSN_CLR   P3OUT&=~(BIT7);
#define SPI_SI_SET    P3OUT|=BIT5;
#define SPI_SI_CLR    P3OUT&=~(BIT5);
#define SPI_SCK_SET   P3OUT|=BIT4;
#define SPI_SCK_CLR   P3OUT&=~(BIT4);

#define TDC_RSTN_SET      P4OUT|=BIT0;
#define TDC_RSTN_CLR      P4OUT&=~(BIT0);



*/





//TDC控制端口定義
#define TDC_START_SET P6OUT|=BIT3;
#define TDC_START_CLR P6OUT&=~(BIT3);

#define TDC_STOP_SET P6OUT|=BIT4;//STOP1
#define TDC_STOP_CLR P6OUT&=~(BIT4);

//START使能,高電平有效
#define TDC_ENSTART_SET P6OUT|=BIT5;
#define TDC_ENSTART_CLR P6OUT&=~(BIT5);
//STOP1使能,高電平有效
#define TDC_ENSTOP1_SET P6OUT|=BIT6;
#define TDC_ENSTOP1_CLR P6OUT&=~(BIT6);
//STOP2使能,高電平有效
#define TDC_ENSTOP2_SET P6OUT|=BIT7;
#define TDC_ENSTOP2_CLR P6OUT&=~(BIT7);
/*-------------------------------------*/




/*--------------TDC_GP2端口初始化--------------*/
void GP2_port_init(void) //端口初始化
{
  
  P6DIR|=BIT3;          //START  輸出方向
      P6OUT&=~(BIT3);   //上電輸出為低
  P6DIR|=BIT4;          //STOP1  輸出,測試用
      P6OUT&=~(BIT4);   //上電輸出為低
       
  
  P6DIR|=BIT5;         //EN_START  輸出方向
      P6OUT&=~(BIT5);
  P6DIR|=BIT6;         //EN_STOP1  輸出方向
      P6OUT&=~(BIT6);
  P6DIR|=BIT7;         //EN_STOP2  輸出方向
      P6OUT&=~(BIT7);
  
  P2DIR|=BIT7;         //RSTN 輸出方向
  
  P3DIR|=BIT0;         //SSN-輸出方向
  P3DIR|=BIT2;         //GP2_SI口     輸出方向
  P3DIR&=~(BIT1);      //GP2_SO口     輸入方向
  P1DIR&=~(BIT4);      //GP2中斷信號    輸入方向
  P3DIR|=BIT3;         //SCK-輸出方向
  
  
  
  P3DIR|=BIT4;
 // P3OUT&=~(BIT3);
  
  
  //P6DIR|=BIT4;    //測試口
 /* 
  P3DIR|=BIT4;
  P3DIR|=BIT5;

  P3DIR|=BIT7;
  */
  
  SPI_SCK_CLR;//SCK---空閑時低平,spi 時鐘極性為0。
  SPI_SSN_SET;//SSN---片選在沒有通信情況下置高
  TDC_RSTN_CLR;
}


/*------------------SPI寫數據-------------------*/


void spi_write8(unsigned char data_buf_8) // spi 寫入8 位數據
{
  unsigned char cnt;
  //unsigned char tmp=0x80;
  SPI_SSN_CLR;
  
  for(cnt=8;cnt>0;cnt--)
    {
      SPI_SCK_SET; 
      if((data_buf_8&0x80)==0)
      {//發送0    
        SPI_SI_CLR;           
      }
      else
      {//發送1 
        SPI_SI_SET;          
      }
      SPI_SCK_CLR;
      //tmp>>1; //tmp 右移一位
      data_buf_8=(data_buf_8<<1);
    }   
  
   SPI_SSN_SET;  
   return;
}


void spi_write32(unsigned long  data_buf_32) // spi 寫32 位數據
{
  unsigned char cnt;
  //unsigned long tmp=0x80000000;
  SPI_SSN_CLR;  
  
  for(cnt=32;cnt>0;cnt--)
    {
      SPI_SCK_SET;
      if((data_buf_32&0x80000000)==0)
      {//發送0        
        SPI_SI_CLR;
      }
      else
      {//發送1
        SPI_SI_SET;
      }
      SPI_SCK_CLR;
     // tmp>>1; //tmp 右移一位
      data_buf_32=(data_buf_32<<1);
    }
  
   SPI_SSN_SET;
   return;
}
//============================================//



//=====================SPI 讀數據=====================//
void spi_write_com(unsigned char temp)
{
  unsigned char cnt;  
  for(cnt=8;cnt>0;cnt--)
    {
      SPI_SCK_SET;
      if((temp&0x80)==0)
      {//發送0       
        SPI_SI_CLR;             
      }
      else
      {//發送1      
        SPI_SI_SET;               
      }
      SPI_SCK_CLR;
     // tmp>>1; //tmp 右移一位
      temp=(temp<<1);
    }      
   return;
}


//------讀取16位數據
unsigned int spi_read16(void)
{

  unsigned char cnt;
  unsigned int tmp=0x8000;
  unsigned int Data_16_tmp=0x0000;
  
    for(cnt=16;cnt>0;cnt--)
    {
      SPI_SCK_SET;
      _NOP();
      if((P3IN&BIT1)>0x00)
        data_0|=tmp;
      
      tmp=(tmp>>1);//tmp 右移一位
      SPI_SCK_CLR;
      _NOP();
    }
  
  return(Data_16_tmp);
}

//------讀取32位數據
unsigned long spi_read32(unsigned char addr)
{

  unsigned char cnt;
  unsigned long tmp=0x80000000; 
  unsigned long Data_32_tmp=0x00000000;
   
  spi_write_com(addr);
    for(cnt=32;cnt>0;cnt--)
    {
      SPI_SCK_SET;
      _NOP();
      if((P3IN&BIT1)>0x00)
        data_0|=tmp;
      
      tmp=(tmp>>1);//tmp 右移一位
      SPI_SCK_CLR;
      _NOP();
    }
   
  
  return(Data_32_tmp);
}
//============================================//


void read_result(char addr)
{
  /*------------------------------------------------
    addr為0xb0   測量結果寄存器1
    addr為0xb1   測量結果寄存器2
    addr為0xb2   測量結果寄存器3
    addr為0xb3   測量結果寄存器4
    Data_buffer_H 數據輸出高十六位 在全局變量中定義
    Data_buffer_l 數據輸出低十六位 在全局變量中定義
  -------------------------------------------------*/
  
  SPI_SSN_CLR;   
  spi_write_com(addr); 
  Data_buffer_H=spi_read16();
  Data_buffer_l=spi_read16();  
  SPI_SSN_SET;

}



//===========GP2 上電復位程序==================//
void GP2_RESET(void)
{
  TDC_RSTN_SET;
  _NOP();
  TDC_RSTN_CLR;
  _NOP();
  _NOP();
  _NOP();
  TDC_RSTN_SET;
}//給TDC_GP2 RSTN管腳一個Reset的方波
//=============================================//





//===========GP2寄存器配置程序====================//
void GP2_init(void)
{
  unsigned long REG0,REG1,REG2, REG3, REG4,REG5;
 
  //unsigned char init=0x70;
  REG0=0x80002426;
  REG1=0x81194900;
  REG2=0x82800000;
  REG3=0x83180000;
  REG4=0x84200000;
  REG5=0x85080000;
  
  spi_write8(0x50);//上電復位
  SPI_SSN_CLR;
  _NOP();
  spi_write32(REG0);
  _NOP();
  spi_write32(REG1);
  _NOP();
  spi_write32(REG2);
  _NOP();
  spi_write32(REG3);
  _NOP();
  spi_write32(REG4);
  _NOP();
  spi_write32(REG5);
  _NOP();
  spi_write8(0x70);
  SPI_SSN_SET;
  return;
}
//===============================================//



//===============GP2 時鐘校準程序================//
unsigned long GP2_cal(void)
{
  unsigned char cal_start=0x03;
  unsigned char read_reg0=0xb0;
  unsigned long CAL=0X00000000;
  //float CAL_f;
  TDC_ENSTART_SET;//EN_START
  spi_write8(cal_start);//啟動校準
  _NOP();
  SPI_SSN_CLR;
  
  while((P1IN&0x10)==0x10)//判斷中斷置位否
    _NOP();
  CAL=spi_read32(read_reg0);
    _NOP();
  SPI_SSN_SET; 
  return(CAL);
}
//===============================================//


//==========時間測量狀態寄存器判斷程序===========//
unsigned char GP2_TMSTAT()
{

  if((P1IN&0x10)==0x10)//判斷中斷置位否
    _NOP();
  else
  {
    SPI_SSN_CLR;
    spi_write_com(0xb4);
    STAT=spi_read16();
    SPI_SSN_SET;
  }
}


//-----------------------------------------------//


//------------用單片機口產生START 信號-----------//
void GP2_START(void)
{
 // TDC_ENSTART_SET;//START
  TDC_START_CLR;
  _NOP();
  TDC_START_SET;
  _NOP();
  TDC_START_CLR;
  //TDC_ENSTART_CLR;//START
  return;
}
//---------------------------------//


//------------通訊測試-------------//  
unsigned char testcomunication(void)
{
  unsigned long int REG1;
  unsigned char cnt;
  unsigned char tmp=0x80;
  //unsigned char test_reg=0xb5; //讀結果寄存器5,反映寄存器1 的高8 位
  unsigned char test_reg0=0x00;
  
  TDC_ENSTART_SET;
  _NOP();
 
  SPI_SSN_CLR;
  REG1=0x81f10100; //寫寄存器1,隨便輸入,然后從結果寄存器5 讀高8 位
  spi_write32(REG1) ;
  SPI_SSN_SET;
  
  
  SPI_SSN_CLR;
  spi_write_com(0xb5);
  for(cnt=8;cnt>0;cnt--)
  {
    SPI_SCK_SET;
    _NOP();
    if((P3IN&BIT1)>0x00)
      test_reg0|=tmp;
    
    tmp=(tmp>>1);
    SPI_SCK_CLR;
    _NOP();
   } 
  SPI_SSN_SET;
  
  if(test_reg0==0xf1)
    return(1);
  else
    return(0);
}
//===================================//



//======時間測量測試=========//
void timemeasurement(void)
{
  TDC_ENSTART_SET;//EN_START
  TDC_ENSTOP1_SET;//EN_STOP1
  TDC_ENSTOP2_SET;//EN_STOP2
    _NOP();
    _NOP();
    _NOP();
    _NOP(); 
   P6OUT|=BIT3;
   P6OUT&=~(BIT3);//向TDC發送開始信號 
   //P6OUT|=BIT4;
   //P6OUT&=~(BIT4); //截止信號
    
  if((P1IN&0x10)==0x10)//判斷TDC中斷
    {
      _NOP();
    }
   
   TDC_ENSTART_CLR;//EN_START
   TDC_ENSTOP1_CLR;//EN_STOP1
   TDC_ENSTOP2_CLR;//EN_STOP2
  
}
//===========================================//




?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区高清在线| 成人午夜电影久久影院| 国产伦精品一区二区三区免费迷| 国产精品成人一区二区艾草| 亚洲一二三专区| 国产盗摄女厕一区二区三区| 欧美日韩国产天堂| 国产欧美日产一区| 青青青伊人色综合久久| 色婷婷久久久久swag精品| 2023国产一二三区日本精品2022| 亚洲男同性恋视频| www.亚洲色图| 国产视频在线观看一区二区三区| 亚洲国产欧美在线| 色老头久久综合| 欧美国产禁国产网站cc| 国产一区二区三区四区在线观看| 欧美嫩在线观看| 亚洲免费观看高清完整版在线| 国产不卡一区视频| 久久天堂av综合合色蜜桃网| 日韩精品成人一区二区三区 | 成人午夜在线播放| 日韩欧美国产综合一区| 亚洲www啪成人一区二区麻豆| 91在线视频观看| 亚洲欧美视频在线观看| 成人h版在线观看| 国产日韩欧美精品一区| 国产激情一区二区三区四区| 精品欧美乱码久久久久久| 青青草精品视频| 欧美一级日韩免费不卡| 日本女人一区二区三区| 在线综合+亚洲+欧美中文字幕| 亚洲成人av一区二区三区| 欧美日韩高清在线播放| 午夜电影一区二区| 制服丝袜激情欧洲亚洲| 日本在线不卡视频| 日韩一区二区三区在线| 经典三级一区二区| 国产亚洲婷婷免费| www.性欧美| 一区二区三区四区在线免费观看| 欧美自拍偷拍一区| 天天综合日日夜夜精品| 精品久久五月天| 国产宾馆实践打屁股91| 国产不卡高清在线观看视频| 国产精品久久久一本精品| 日韩理论在线观看| 日本精品一区二区三区四区的功能| 欧美年轻男男videosbes| 精品一区二区在线视频| 国产成人啪午夜精品网站男同| 中文字幕一区二区三区不卡在线| 色婷婷av一区二区三区之一色屋| 国产精品1024| 亚洲美女精品一区| 91精品国产综合久久福利| 国产在线日韩欧美| 伊人婷婷欧美激情| 日韩午夜中文字幕| k8久久久一区二区三区| 午夜精品久久久久久久久久| 精品对白一区国产伦| 99国产精品视频免费观看| 午夜不卡av免费| 国产欧美va欧美不卡在线| 在线亚洲欧美专区二区| 麻豆国产一区二区| 亚洲精品国久久99热| 精品成人一区二区三区| 色哟哟欧美精品| 国产精品综合久久| 亚洲一区二区三区视频在线播放| www欧美成人18+| 亚洲小说欧美激情另类| 久久精品人人做人人综合| 色综合久久久久| 国产成人亚洲综合a∨婷婷| 亚洲电影你懂得| 中文在线一区二区| 久久99精品网久久| 亚洲成av人影院在线观看网| 国产拍欧美日韩视频二区| 欧美久久久久久蜜桃| 91麻豆产精品久久久久久| 久久精品国产精品亚洲红杏| 欧美视频中文字幕| 波多野结衣亚洲一区| 激情五月播播久久久精品| 亚洲午夜av在线| 亚洲欧美一区二区三区孕妇| 久久精品一区二区| 91精品国产综合久久久久| 亚洲男同1069视频| 国产欧美日韩综合精品一区二区| 91精品国产综合久久福利| 色久综合一二码| 不卡一区在线观看| 国产精品66部| 国内精品久久久久影院薰衣草| 三级久久三级久久久| 亚洲电影中文字幕在线观看| 亚洲精品中文字幕乱码三区| 国产精品国产a级| 欧美高清在线视频| 欧美激情综合五月色丁香小说| 精品粉嫩超白一线天av| 欧美精品一区二区三区很污很色的| 欧美二区乱c少妇| 欧美精品乱码久久久久久| 91精品在线免费| 91精品国产欧美一区二区18| 日韩av不卡一区二区| 免费亚洲电影在线| 蜜桃久久av一区| 久久国产尿小便嘘嘘尿| 激情六月婷婷久久| 国产美女主播视频一区| 成人在线一区二区三区| 成人av免费在线播放| 99国产精品久久久久久久久久久| 色哟哟欧美精品| 欧美福利一区二区| 欧美大片在线观看一区二区| www国产精品av| 欧美国产丝袜视频| 一区二区久久久久久| 午夜视频在线观看一区二区 | 欧美精品一区二区三区四区 | 国模大尺度一区二区三区| 国产真实精品久久二三区| 国产91色综合久久免费分享| 亚洲视频小说图片| 一区二区三区在线免费视频| 日韩av一区二区三区四区| 精品亚洲成av人在线观看| 成人小视频免费观看| 在线精品国精品国产尤物884a| 在线播放视频一区| 国产乱人伦偷精品视频免下载| 中文字幕欧美一| 亚洲成人精品影院| 国产日韩精品久久久| 一区二区在线看| 日本中文在线一区| 国产99久久久国产精品免费看| 97久久精品人人爽人人爽蜜臀| 欧美丝袜丝交足nylons图片| 国产一区二区三区久久久| 成人v精品蜜桃久久一区| 日日摸夜夜添夜夜添亚洲女人| 国产成人夜色高潮福利影视| 欧美日韩视频在线观看一区二区三区| 欧美一区二区三区白人| 国产精品每日更新| 奇米一区二区三区av| av一二三不卡影片| 日韩亚洲欧美一区| 亚洲六月丁香色婷婷综合久久 | 天天综合色天天综合| 从欧美一区二区三区| 51精品秘密在线观看| 中文字幕亚洲一区二区av在线| 久久99精品国产麻豆婷婷洗澡| 欧美性色aⅴ视频一区日韩精品| 国产一区二区三区国产| 欧美日韩大陆一区二区| 国产精品视频看| 麻豆国产精品777777在线| 91久久精品一区二区| 中文字幕欧美激情一区| 日韩精品一卡二卡三卡四卡无卡| 亚洲男帅同性gay1069| 国产91在线|亚洲| 日韩欧美视频在线| 亚洲综合偷拍欧美一区色| 国产精品美女久久久久久久 | 日韩欧美高清在线| 亚洲中国最大av网站| 北条麻妃国产九九精品视频| 久久婷婷综合激情| 免费成人小视频| 欧美日韩国产一级片| 亚洲午夜影视影院在线观看| 91小视频在线观看| 色香蕉久久蜜桃| 国产精品成人在线观看| 处破女av一区二区| 国产午夜三级一区二区三| 精品一区二区免费在线观看| 欧美videos大乳护士334| 日本不卡视频在线| 欧美一卡二卡三卡| 69久久99精品久久久久婷婷| 亚洲成人动漫一区|