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

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

?? scanner.c

?? msp430例程
?? C
字號:
//********************采集機程序**************************************
//name:  scanner.c    
//******************************************************************************
//輸出管腳說明:
// P3.6 tx_en 當開始發(fā)送一幀時使能,當一幀發(fā)送完畢后禁止。軟件上,在SendByte子函使能,在發(fā)送中斷$的處理部分進行
//******************************************************************************

#include  <msp430x13x.h>
#include  "scanner.h"
         
void main(void)
{ 
  unsigned int k=0;
  unsigned int i=0;
  
  unsigned char tmp,tmp1;
  P4OUT = 0X00;
  P4DIR = 0XFF;   //強制輸出低電平,防止繼電器閉合
  P5OUT = 0X00;
  P5DIR = 0XFF;  

  //上電后給運放一個輸入,防止輸出過高。
  P1DIR = 0XFF;                        
  P2DIR = 0X0F;   
  P3DIR = 0xDB;                        // P3.5,P3.2為輸入  
  
  P1OUT = 0X00;
  P2OUT = 0X00; 
  P3OUT = 0X18;         //同時禁止發(fā)送,防止個別沒有復位的單板拉死總線,防止繼電器閉合,點燈

  WDTCTL = WDTPW + WDTCNTCL;    //clear wdt       WDTCTL = WDTPW + WDTHOLD;     // Stop watchdog timer  
  
  for(i=0;i<10;i++)
  {
    P3OUT ^= 0x02;                
    DelayAMoment();
  }  
  
   //-----系統(tǒng)基礎時鐘初始化--------  
   //從內部振蕩器切換到外部8M的晶振,切換不成功時靠硬件狗復位
  BCSCTL1 &= ~XT2OFF;
  do 
  {
    IFG1 &= ~OFIFG;                       // Clear OSCFault flag
    for (i = 0xFF; i > 0; i--);           // Time for flag to set
  } while ((IFG1 & OFIFG) == OFIFG);      // OSCFault flag still set?         
  BCSCTL2|= SELM1 + SELS;                 //選擇外部晶振,MCLK=8Mhz SMCLK=8Mh
  
  //------初始化TimerA--------------
  //該定時器用于在自檢中的超時定時,保證自檢中某些操作在硬件不正常時能夠超時返回
  TACTL = TASSEL1 + TACLR +ID0+ID1;     // SMCLK, 8DIV =1M;clear TAR, UP TO CCR0 MODE
                                        // 
  CCTL0 = CCIE;                         // CCR0 interrupt enabled
  CCR0 = 50000;                         // 50ms 中斷一次
  TACTL |= MC0;                         // Start Timer_A in up mode  
                           

  //-----系統(tǒng)自檢,覆蓋到大部分硬件的可用性-------------
//  if(SelfTest()== 0)                   //系統(tǒng)自檢測試
//  SelfTest();
  
  //------系統(tǒng)軟硬件資源初始化---------------
  InitSys();                    //初始化系統(tǒng)硬件資源和軟件資源
  
  //------讀取本板ID號,若沒有則置為00------
  ptrFlashData = (char *)IDADDRESS;   
  
  if((*ptrFlashData) == 0x55)
  {
    ptrFlashData--;
    m_IDL = *ptrFlashData;
    ptrFlashData--;
    m_IDH = *ptrFlashData;
  }
  else
  { 
    m_IDH = 00;
    m_IDL =0x0;
  }
  
  //  
  WDTCTL = WDTPW + WDTCNTCL;    //clear wdt    
  
  //------主循環(huán)----------
  for (;;)                      //主循環(huán)        
  {  
    //這部分代碼的作用是,對18路電池電壓分別采集1024次,取均值,
    //假設一次AD轉換需要15us,則大約需要15*18*1024=276ms完成一次掃描。計工頻周期,干擾很小  
    //*****************************************************************
    if(ScanInitRes)
    {                   
        ScanInitRes = FALSE;      //清楚初始化采集請求
        
        //bypass 發(fā)送的命令采集:m_ResID = 0x99;
        //bypass 處于bypass采集狀態(tài):scanres = 1, m_resid =0, m_residbuf = 0x99;
        //其他發(fā)送的采集命令:m_ResID!=0x99
        //處于其他發(fā)送的采集狀態(tài):scanres =1,m_resid=0,m_residbuf!=0x99
        //現(xiàn)在暫時不區(qū)分采集狀態(tài),僅判斷采集命令的發(fā)出者和目的,設定一個低優(yōu)先級,m_ResID=0x99,其他
        //  優(yōu)先級的采集命令都可以中斷當前的采集任務,處于主動采集的查詢狀態(tài)時,m_residBuf = 0x88,這一點暫僅用于上傳數(shù)據響應中。
        
        if(ScanRes&&(m_ResID==0x99))   //當bypass功能發(fā)送采集請求,但已經處于采集狀態(tài)時
        {
               //已經清除采集請求,直接退出
        }
        else if(OwnScanReady)    //若有主動采集的數(shù)據時,等待一秒再開始下一次采集
        {          
            if(OwnScanReady == 0x55)
            {            
              OwnScanReady = FALSE;
            }
            else
            {
              OwnScanReady = 0x55;
            }
        }              
        else 
        {
            if(ScanRes&&(m_ResID!=0x99)) //當是其他模塊發(fā)送的采集請求,但此時已經采集狀態(tài)時
            {                
                while(!(ADC12IFG & ADC12BUSY)); //等待轉換完成后,不理睬數(shù)據,直接重新置變量
                
//                ADC12CTL0 &= &ENC;      //停止當前的采集,丟棄數(shù)據
            }
            
            //上述語句中不甚嚴謹,應再判斷是否是bypass的狀態(tài),若不是則不應中斷,但當前考慮不會有此情況,故以下語句也先省略
            
//            if(m_ResID==0x99)
  //          {
    //           m_ResIDbuf = 0x99;    //當是bypass發(fā)送的采集請求時,將Buf也置為99,標志進入bypas采集狀態(tài)
      //      }
            m_ResID = 0x00;         //將m_ResID置0            
            
//            ta =0;          //使時鐘同步,這樣單板看起來比較整齊,步調一致
            k = 0;
            ChAdder = 0;
//            m_TotalChannelCur = 0;   //通道電壓之和
            ChNum = 0;            
             
            ADC12CTL0 |= ENC;                     // Enable conversions        
    
            ScanRes = TRUE;           //要求進行一次電池電壓采集
            ptrFlashData = (char *)P1DATAADDRESS;  //存儲P1OUTDATA的地址
            P1OUT = *ptrFlashData;    //P1OUTDATA[0];                 //設置4051通道  
            ptrFlashData = (char *)P2DATAADDRESS+ChNum;  //存儲p2outdata的地址
            P2OUT = *ptrFlashData;          
                 
            //讀取CH1的采集增益
            ChTimes = DEFAULTTIMES;         //讀取設定的增益      
            if(ReadPara(2))
            {
                ChTimes = FlashPara;
            }
    
            ptrFlashData  +=35;   //指向本通道的零點存儲位置;
            tmp = *ptrFlashData;                            //times的值放在FLASH中,地址從TIMESADDRESS開始
            ptrFlashData++;
            tmp1 = *ptrFlashData;
            if((tmp == 0xff) &&(tmp1 == 0xff))              //當無效時
            {
                ChZero = 0x00;  //DEFAULTTIMES;                               //默認值
            }
            else
            {
                ChZero = (unsigned int)(tmp&0x0f)*100+tmp1;
                if(tmp&0xe0)                                  //若高位為1,則為負數(shù),這是自定義的負數(shù)格式,盡量遵守了常用方法
                {
                    ChZero = -ChZero;
                }
                ChZero = ChZero*100;  //對于2048次的和,此值需要放大100倍,否則沒有效果
            }                                   
    
            ADC12CTL0 |= ADC12SC;               // Start conversion            

            for(tmp=0;tmp<18;tmp++)             //保存上一次采集到的電壓值
            {
                m_ChannelHis2[tmp] = m_ChannelCur[tmp];
            }
            
        }           
        
    }
    //**************************
    if(k>4000)k = 1;      //此處限定K值不大于4000,大于4000可能造成異常。
    
    if(ScanRes == TRUE&&((ADC12IFG & ADC12BUSY)== 1)) //當使能了一次采集  且轉換已經完成后
    {
        if(k<= ChTimes)           //當尚未達到本通道采集數(shù)目時
        {
            ChAdder += ADC12MEM0;        //累加  CHNUM 從0~17對應第1~18通道
            ADC12CTL0 |= ADC12SC;               // Start conversion  ,同時啟動采樣,
            k++;
        }        
  
        else
        {
            ChAdder = ChAdder+ChZero;   //調整零點            
            ChAdder += 512;      //四舍五入    
            ChAdder = ChAdder/1024;          //為了僅使用兩字節(jié)通訊,犧牲了部分精度,最完美的做法是將1024次采集的結果全部讀出
            if(ChAdder>0xfe00){ChAdder = 0;};  //當無電壓輸入時,消除負零點電壓的影響

            m_ChannelCur[ChNum] = ChAdder;                       

//            m_TotalChannelCur += ChAdder;     //計算總電壓,當前僅有主動采集功能使用,但我認為會有其他功能使用,故放在此處
           
            ChNum++;      //采集下一個通道
            k = 0;
            
            if(ChNum < 18)
            {            
                ptrFlashData = (char *)P1DATAADDRESS+ChNum;  //存儲P1OUTDATA的地址
                P1OUT = *ptrFlashData;    //P1OUTDATA[0];                 //設置4051通道  
                ptrFlashData = (char *)P2DATAADDRESS+ChNum;  //存儲p2outdata的地址
                P2OUT = *ptrFlashData;          
            
                ChTimes = DEFAULTTIMES;         //讀取設定的增益      
                if(ReadPara(2*(ChNum+1)))
                {
                    ChTimes = FlashPara;
                }
                
                ptrFlashData  +=35;   //指向本通道的零點存儲位置;
                tmp = *ptrFlashData;                            //times的值放在FLASH中,地址從TIMESADDRESS開始
                ptrFlashData++;
                tmp1 = *ptrFlashData;
                if((tmp == 0xff) &&(tmp1 == 0xff))              //當無效時
                {
                  ChZero = 0x00;  //DEFAULTTIMES;                               //默認值
                }
                else
                {
                  ChZero = (unsigned int)(tmp&0x0f)*100+tmp1;
                  if(tmp&0xe0)                                  //若高位為1,則為負數(shù),這是自定義的負數(shù)格式,盡量遵守了常用方法
                  {
                      ChZero = -ChZero;
                  }
                  ChZero = ChZero*100;
                }                
                
                //debug03041    
                P3OUT ^= 0x02;          
                 
                Delay1ms();                         //用于避免通道間的干擾,使4051的輸出可靠建立

                ADC12CTL0 |= ADC12SC;               // Start conversion                    
            }
            else    //當完成全部18個通道的采集時
            {                                   
                ScanRes = FALSE;
                ADC12CTL0 &= ~ENC;                  // Disable conversions                   
                m_ResID = m_ResIDbuf;     //刷新命令ID,以使上位機確認是最新的數(shù)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区久久久| 国产精品国产三级国产普通话99 | 7777女厕盗摄久久久| 99re成人在线| 99久久婷婷国产综合精品| 国产精品456| 国产福利一区二区三区视频| 国产一区亚洲一区| 成人在线一区二区三区| 成人一道本在线| 成av人片一区二区| www.色精品| 99精品桃花视频在线观看| 日本韩国视频一区二区| 欧美午夜电影网| 91精品国产免费久久综合| 欧美成人精品福利| 久久久精品国产免大香伊| 国产精品美女www爽爽爽| ●精品国产综合乱码久久久久| 亚洲精品视频免费观看| 奇米影视一区二区三区| 国产精品996| 色综合久久久久综合| 欧美视频一区在线| 精品理论电影在线观看| 国产精品色噜噜| 亚洲一区二区美女| 韩国欧美国产1区| www.欧美亚洲| 6080午夜不卡| 国产精品久久久久aaaa樱花 | 日韩一区二区三区四区| 久久精品一区二区三区四区| |精品福利一区二区三区| 午夜电影一区二区| 国产成人精品三级麻豆| 91激情五月电影| 久久久九九九九| 五月婷婷色综合| 高清在线观看日韩| 在线电影欧美成精品| 国产精品免费aⅴ片在线观看| 日韩中文字幕不卡| 91免费国产在线观看| 久久影院视频免费| 亚洲激情六月丁香| 丰满少妇在线播放bd日韩电影| 色94色欧美sute亚洲线路一久| 2020国产成人综合网| 亚洲国产你懂的| 成人激情动漫在线观看| 日韩欧美一二三区| 亚洲国产wwwccc36天堂| 色悠久久久久综合欧美99| 精品久久久久久久人人人人传媒 | 亚洲精品免费看| 国产尤物一区二区| 欧美一区二区三区小说| 亚洲美女区一区| 粉嫩嫩av羞羞动漫久久久| 日韩女优制服丝袜电影| 五月天婷婷综合| 91国偷自产一区二区开放时间 | www.性欧美| 久久伊99综合婷婷久久伊| 日韩中文字幕1| 欧美日本韩国一区二区三区视频 | 欧美自拍偷拍午夜视频| 中文字幕一区二区三区在线观看| 国内外成人在线视频| 91精品国产综合久久久蜜臀粉嫩| 夜夜揉揉日日人人青青一国产精品| 99在线精品免费| 17c精品麻豆一区二区免费| 成人国产电影网| 中文字幕中文字幕一区二区| 99r国产精品| 亚洲色图视频网| 色婷婷av一区二区三区之一色屋| 亚洲日本在线a| 欧美午夜精品电影| 日韩精品一二三区| 日韩精品一区二区三区中文精品 | 国产精品自拍三区| 国产精品午夜免费| 菠萝蜜视频在线观看一区| 亚洲视频一区在线| 欧美亚洲一区三区| 免费看精品久久片| 26uuu久久综合| 99久久精品国产精品久久| 亚洲女人****多毛耸耸8| 欧美日韩黄色影视| 日欧美一区二区| 久久久www成人免费无遮挡大片 | 亚洲精品福利视频网站| 7777精品伊人久久久大香线蕉| 美女视频第一区二区三区免费观看网站| 欧美一级精品在线| 国产成人8x视频一区二区| 国产精品三级av| 欧美四级电影网| 激情综合网激情| 国产精品国产自产拍高清av| 欧美在线视频不卡| 蜜臀精品一区二区三区在线观看| 国产欧美日韩一区二区三区在线观看| 99久久久久久| 婷婷一区二区三区| 欧美一级二级三级乱码| 欧美日韩一区二区三区不卡| 精品少妇一区二区三区免费观看 | 久久亚洲精华国产精华液 | 色综合天天综合网天天狠天天| 亚洲一区二区三区三| 欧美成人a视频| 成人午夜免费视频| 日本不卡中文字幕| 中文在线一区二区| 欧美一区二区日韩一区二区| 99久久精品国产观看| 黄一区二区三区| 亚洲成人三级小说| 中文字幕在线观看不卡| 精品国产乱码久久久久久免费| 在线免费视频一区二区| 成人午夜av电影| 激情小说欧美图片| 午夜国产精品一区| 樱桃国产成人精品视频| 亚洲国产高清aⅴ视频| 日韩欧美中文字幕一区| 欧美日韩国产一级片| 91丨porny丨在线| 丰满岳乱妇一区二区三区| 九色|91porny| 天天影视色香欲综合网老头| 亚洲激情av在线| 亚洲女人小视频在线观看| 亚洲国产成人午夜在线一区| 精品少妇一区二区三区免费观看| 欧美日韩成人在线| 欧美日韩国产首页| 91成人看片片| 91视频在线看| 成人午夜短视频| 丰满少妇在线播放bd日韩电影| 韩国av一区二区| 国产麻豆午夜三级精品| 国产精一区二区三区| 蜜臀久久久99精品久久久久久| 青青青爽久久午夜综合久久午夜| 午夜久久福利影院| 亚洲成人av一区二区| 一区二区三区不卡视频在线观看| 综合激情成人伊人| 亚洲你懂的在线视频| 中文字幕在线观看一区| 亚洲欧美日韩综合aⅴ视频| 自拍偷拍欧美精品| 亚洲一区二区三区四区在线免费观看 | 亚洲电影中文字幕在线观看| 一区二区三区欧美视频| 亚洲午夜久久久久久久久电影院 | 2020日本不卡一区二区视频| 久久久精品国产99久久精品芒果 | 亚洲国产成人av网| 午夜一区二区三区在线观看| 免费亚洲电影在线| 韩国在线一区二区| 成人h版在线观看| 欧美性大战久久| 91精品黄色片免费大全| 久久久久久久免费视频了| 国产精品青草综合久久久久99| 亚洲欧洲精品一区二区三区 | 欧美高清在线视频| 亚洲另类中文字| 天天综合天天做天天综合| 国内精品伊人久久久久av一坑| 成人性生交大片| 欧美精品久久一区| 精品国产电影一区二区| 成人欧美一区二区三区1314| 亚洲国产欧美在线人成| 国产乱人伦偷精品视频免下载 | a4yy欧美一区二区三区| 欧美精品电影在线播放| 久久久久九九视频| 亚洲国产欧美另类丝袜| 国产激情偷乱视频一区二区三区| av中文字幕在线不卡| 日韩欧美在线观看一区二区三区| 国产午夜精品美女毛片视频| 亚洲午夜激情网站| 激情小说亚洲一区| 欧美精品乱码久久久久久| 国产精品美女一区二区在线观看| 日本午夜一区二区|