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

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

?? 89c52電流采集.c

?? 使用51實現(xiàn)的高速電流下降沿記錄
?? C
字號:
_MDEL_=0;                              //small編譯模式

/*****************文件包括******************/
#include<reg52.h>
#include<absacc.h>
#include <intrins.h>

/*****************宏定義******************/
#define uchar unsigned char
#define uint  unsigned int
#define tranad    0X7000                                //傳輸數(shù)據(jù)存放在ram中的首地址
#define r6264     0X8000                                //6264首地址
#define fifo1     XBYTE[0XC000]                         //fifo1 地址
#define fifo2     XBYTE[0XE000]                         //fifo2 地址

/*****************函數(shù)說明******************/

/*****************intrins.h內(nèi)包括的函數(shù)******************/
void _nop_(void);                                       //空操作函數(shù)
unsigned char _cror_(unsigned char val,unsigned char n);//右移函數(shù)

/*****************自定義函數(shù)******************/
void delay(uint time);                                  //延時時間為(time*2+2)
void initsys(void);                                     //系統(tǒng)初始化
void resetfifo(void);                                   //復位FIFO
void resetram(void);                                    //ram初始化
void writeram(uchar ctime,uint dnumw);                             //把從FIFO讀的數(shù)據(jù)寫到RAM
void startad(void);                                     //跟下降沿取得同步就啟動采集
void averdata(uchar avertime,uint dnuma);               //疊加后取平均
void mazhizhuanhuan(uint dnum,uint datanum);            //把從000-fff編碼的數(shù)據(jù)轉換成從800-7ff的編碼
void readram(uint qsaddr);                //把從RAM的數(shù)據(jù)傳送給PC機
void transmitdata(void);                                //傳送ASCII緩沖區(qū)的內(nèi)容給PC機
void startadt(void);                                    //采集電流下降沿,計算下降時間
void mazhinihuan(uint dnumn,uint datanumn);             //碼制逆轉換
void avcurret(void);                                    //取平均電流并傳數(shù)
void timecm(void);                                      //關斷時間計算程序


/*****************管腳定義*******************/
sbit AD_START=P1^0;                                     //ad采集信號
sbit FIFO_RS=P1^1;                                      //FIFO 復位信號
sbit LEDRED=P1^2;                                       //紅燈顯示
sbit LEDGREED=P1^3;                                     //綠燈顯示
sbit PC_TEM=P1^4;                                       //通信選擇信號
sbit TBOUT=P1^5;                                        //同步信號
sbit ASRESET=P1^6;                                      //fifo輔助復位信號
sbit MODE=P1^7;                                         //模式選擇
sbit key=P3^3;                                          //按鍵信號
sbit elect_r=P3^4;                                      //反饋電阻的選擇(放大倍數(shù)選擇)

/*****************變量定義***************************/
uchar data yxxhtime;                                    //采集次數(shù)

/*****************主函數(shù)***************************/
void main(void)
{
 mainstart:
     AD_START=1;
     SP=0x60;
     yxxhtime=0;
     initsys();
     resetfifo();                                   //FIFO復位
     startad();                                      //與tem_單片機通信
/*****************測量電流和關斷時間******************/
         for(yxxhtime=0;yxxhtime<14;yxxhtime++)          //直到有效的循環(huán)次數(shù)為14時才停止采集與疊加
         {
         resetfifo();                                   //FIFO復位
         startad();                                     //開始采集
         writeram(yxxhtime,200);                            //寫存儲器
         }//end for 14 times
         averdata(yxxhtime,100);                            //取平均值
         avcurret();
         mazhinihuan(1000,1);
         readram(1000);
/*****************測量關斷時間******************/
         for(yxxhtime=0;yxxhtime<14;yxxhtime++)
        {
         resetfifo();                                   //FIFO復位
         startadt();                                    //開始采集
         writeram(yxxhtime,1000);                                   //寫存儲器
        }// end for
         averdata(yxxhtime,500);
         timecm();
         transmitdata();
     goto mainstart;                                    //循環(huán)
}
/*****************主函數(shù)結束******************/

/*****************子函數(shù)定義******************/
 void delay(uint time)                                  //延時時間為(time*2+2)
 {
  uint data s;
  for(s=0;s<time;s++)
  _nop_();
 }

 void initsys(void)                                     //系統(tǒng)初始化
 {
  P0=0xff;                                              ////////
  P1=0xff;                                              //可有//
  P2=0xff;                                              //可無//
  P3=0xff;                                              ////////
  PC_TEM=0;
  AD_START=1;
  TR0=TR1=0;
  TF0=TF1=0;
  PC_TEM=0;                                             //選擇和tem控制板通訊
  TMOD=0x21;                                            //定時器0方式1,定時20ms左右
  TH0=0xdd;                                             //定時20ms
  TL0=0x00;
  PCON=0x00;
  TH1=0xf4;//fd;//fa;                                   //波特率為2400//9600//4800
  TL1=0xf4;
  TR1=1;                                                //啟動定時器1
  SCON=0x40;                                            //設置串行口為10位異步收發(fā),不允許接收
  TI=0;
  }

 void resetfifo(void)                                   //復位FIFO
 {
     FIFO_RS=1;
     delay(5);
     ASRESET=0;
     delay(5);                                          //復位fifo
     AD_START=1;
     delay(5);                                          //fifo復位的時候,R,W都要是高電平
     FIFO_RS=0;
     delay(5);
     delay(5);
     delay(5);
     FIFO_RS=1;
     delay(5);
     delay(5);
     ASRESET=1;
     delay(5);
     delay(5);
  }
/*****************采集程序定義******************/

/*****************采集程序1******************/
  void startad(void)
  {
     TBOUT=1;                                           //檢測同步信號
     do{_nop_();}while(TBOUT==0); //0
     //TBOUT=1;
     do{_nop_();}while(TBOUT==1); //1  //上升沿采集
     delay(150); //150              //38ms
     AD_START=0;                  //開始采集
     delay(3200);
     AD_START=1;                  //采集結束
  }



/*****************采集程序2******************/
  void startadt(void)              //用于采集下降沿時間
  {
     TBOUT=1;                      //檢測同步信號
     do{;}while(TBOUT==1);   //1
     //TBOUT=1;
     do{;}while(TBOUT==0);   //0     //下降沿開始采集
     AD_START=0;                  //開始采集
     delay(3200);
     AD_START=1;                  //采集結束
  }


/*****************寫ram程序******************/
 void writeram(uchar ctime,uint dnumw)        //把從FIFO讀的數(shù)據(jù)寫到RAM (讀了500個數(shù)據(jù))
 {
     uint data i;
     uchar data databuf;
     _nop_();
     databuf=fifo1;
     databuf=fifo2;                             //把fifo中前2個無效數(shù)據(jù)丟棄
     databuf=fifo1;
     databuf=fifo2;
     if(ctime==0)
   {
     for(i=0;i<dnumw;i++)
     {
     databuf=fifo2;
     XBYTE[i]=databuf;
     i++;
     databuf=fifo1;
     _nop_();
     XBYTE[i]=databuf;
     _nop_();
     }//end for

     mazhizhuanhuan(0,dnumw/2);  //轉換

   }//end if

   else
   {
    for(i=0;i<dnumw;i++)//for 2
      {
     databuf=fifo2;
     _nop_();
     XBYTE[i+1000]=databuf;
     i++;
     databuf=fifo1;
     _nop_();
     XBYTE[i+1000]=databuf;
     _nop_();

      }//end for2

       mazhizhuanhuan(500,dnumw/2); //轉換

       for(i=0;i<dnumw/2;i++) //for 3 //疊加
       {
        int  data number1,number2;
        number1=XWORD[i];
        number2=XWORD[i+500];
        number1=number1+number2;
        XWORD[i]=number1;
        _nop_();

       }//end for3
   }//end else

 }

/*****************碼制轉換程序******************/
void mazhizhuanhuan(uint dnum,uint datanum)
  {
      uint data i=0;
      uint data datatemp;
      datatemp=((XWORD[2+dnum]+XWORD[4+dnum]+XWORD[6+dnum]+XWORD[8+dnum])/4);
      if((datatemp&0x0fff)>0x0800)                                       //整體是負值
        {  for(i=0;i<datanum;i++)
          {
          datatemp=XWORD[i+dnum];
          datatemp=(0x1000-datatemp);

           if((datatemp&0x0fff)<0x0800)
          {
              datatemp=datatemp|0x0800;
              XWORD[i+dnum]=datatemp&0x0fff;
          }//end if
          else
          {
              datatemp=datatemp&0x07ff;
              XWORD[i+dnum]=datatemp&0x0fff;
          }//end else


          }//end for
        }//end if

     else                                       //整體是正值
     {
       for(i=0;i<datanum;i++)
        {
          datatemp=XWORD[i+dnum];
       if((datatemp&0x0fff)<0x0800)
          {
              datatemp=datatemp|0x0800;
              XWORD[i+dnum]=datatemp&0x0fff;
          }//end if
          else
          {
              datatemp=datatemp&0x07ff;
              XWORD[i+dnum]=datatemp&0x0fff;
          }// end else
        }//end for
     }//end else

        delay(2);
  }


/*****************電壓計算程序******************/
void readram(uint qsaddr)                 //把從RAM的數(shù)據(jù)計算并存入到指定空間
 {
     uint data temp1;
     uint data templong;
//     uint data i;
     float data fdata;

     _nop_();
//     for(i=0;i<datalong;i++)
//     {
       temp1=XWORD[qsaddr];
       if(temp1>=0x0800)                 //判斷正負號
           {
              XBYTE[tranad+0]='-';
               temp1=0x1000-temp1;
          }
       else
           XBYTE[tranad+0]=' ';                  //dd.d
           fdata=temp1;                      //把十六進制數(shù)變換成實際電壓值
           fdata=fdata*100*140/4096; //1000*10/4096;//100*125/4096; //19 1000*10/4096;//    //10
           XBYTE[tranad+8]='.';
           templong=fdata;
           XBYTE[tranad+6]=templong/1000+0x30;
           if(XBYTE[tranad+6]==0x30)
           XBYTE[tranad+6]=' ';
           templong=templong%1000;
           XBYTE[tranad+7]=templong/100+0x30;
           templong=templong%100;
           XBYTE[tranad+9]=templong/10+0x30;
           templong=templong%10;
           XBYTE[tranad+10]=templong+0x30;
//     }
   }

/*****************數(shù)據(jù)傳輸程序******************/
void transmitdata(void)               //傳送ASCII緩沖區(qū)的內(nèi)容給tem控制板
{      uchar data bufs;
       uchar data i=0;
       SBUF=0x0f;
       _nop_();
       while(TI==0);TI=0;
       SBUF=0x00;
       _nop_();
       while(TI==0);TI=0;

       for(i=1;i<11;i++)
       {  _nop_();
          bufs=XBYTE[tranad+i];
          bufs=bufs&0xf0;
          bufs=_cror_(bufs,4);
          SBUF=bufs;
          _nop_();
          while(TI==0);TI=0;
          bufs=XBYTE[tranad+i];
          SBUF=bufs&0x0f;
          _nop_();
          while(TI==0);TI=0;
       }
    }

/*****************數(shù)據(jù)平均程序******************/
void averdata(uchar avertime,uint dnuma)
  {
      uint data i=0;
      uint data k=0;
//      uchar data j=avertime;
//      delay(2);
      for(i=0;i<dnuma;i++)
      {  k=XWORD[i];
         XWORD[i]=(k/avertime)&0x0fff;
      }

  }
/*****************碼制逆轉換程序******************/
 void mazhinihuan(uint dnumn,uint datanumn)
 {  uint data i,dtemp;
   for(i=0;i<datanumn;i++)
   {
   dtemp=XWORD[i+dnumn];
      if(dtemp>=0x0800)
        {
         XWORD[i+dnumn]=(dtemp&0X07ff);
        }//end if
      else
        {
         XWORD[i+dnumn]=(dtemp|0x0800)&0x0fff;
        }//end else
   }//end for
}//end mazhinihuan


/*****************電流平均程序******************/
void avcurret(void)
{
      //uint data cucount=0;
      //uint data cucount1=0;
      float data avdata=0;
      uchar data cutime;
      _nop_();
      //mazhizhuanhuan(0,14);
     for(cutime=0;cutime<100;cutime++)
     {
         avdata=avdata+XWORD[cutime];
      }
     XWORD[1000]=avdata/100;
} //end avcurrent

/*****************關斷時間計算程序******************/
void timecm(void)
{
// char data temp3;
 uint data i,timedata;
 i=0;
while((XWORD[i]>0x0808)&&(i<500))
{
   i++;
 }//end while

 if((i>499)||(XBYTE[tranad+6]==' '&&XBYTE[tranad+7]==0x30&&XBYTE[tranad+9]<0x32))
 {
  //overtime=0x0f0f;
  timedata=0x0000;
  }//end if i>499
  else
  {
    //overtime=0x0505;
    timedata=i;
   }//end else
   XBYTE[tranad+1]=timedata/100+0x30;
   //temp3=XBYTE[tranad+1];
   if(XBYTE[tranad+1]==0x30)
   XBYTE[tranad+1]=' ';
   timedata=timedata%100;
   XBYTE[tranad+2]=timedata/10+0x30;
   if((XBYTE[tranad+1]==' ')&&(XBYTE[tranad+2]==0x30))
   XBYTE[tranad+2]=' ';
   timedata=timedata%10;
   XBYTE[tranad+3]=timedata+0x30;
   XBYTE[tranad+4]='.';
   XBYTE[tranad+5]=0x30;
 }





?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费不卡视频| 在线免费观看日本一区| 国产精品乡下勾搭老头1| 久久精品免费观看| 成人听书哪个软件好| 在线观看亚洲一区| 欧美精品日日鲁夜夜添| 日韩一卡二卡三卡国产欧美| 亚洲精品一区二区三区影院 | 日韩女优av电影| 亚洲国产成人午夜在线一区| 亚洲欧美日韩国产手机在线| 天天操天天干天天综合网| 国产制服丝袜一区| 欧美精选在线播放| 国产日韩欧美一区二区三区乱码| 亚洲国产精品传媒在线观看| 日韩av不卡在线观看| 91小宝寻花一区二区三区| 欧美一区二区二区| 亚洲精品免费在线播放| 国产美女视频一区| 欧美男同性恋视频网站| 亚洲欧洲日韩av| 国产伦精品一区二区三区在线观看| 91亚洲精品乱码久久久久久蜜桃| 欧美一区二区性放荡片| 亚洲小说春色综合另类电影| 国产很黄免费观看久久| 久久综合狠狠综合久久综合88 | 国产成人精品免费在线| 精品盗摄一区二区三区| 日韩二区三区四区| 欧美男同性恋视频网站| 亚洲成人7777| 3d成人h动漫网站入口| 亚洲图片自拍偷拍| 欧美日韩在线亚洲一区蜜芽| 亚洲精品v日韩精品| 欧美日韩一二区| 日韩精品视频网| 精品成人私密视频| 国产aⅴ综合色| 一区二区三区四区国产精品| 在线看日本不卡| 日本最新不卡在线| 亚洲一二三区视频在线观看| 91精品国产综合久久婷婷香蕉| 免费av成人在线| 亚洲欧洲国产专区| 欧美三级电影在线看| 国产制服丝袜一区| 亚洲欧洲色图综合| 日韩一级二级三级| 成人激情视频网站| 日韩不卡一区二区| 国产精品久久久久影院| 欧美高清激情brazzers| 风流少妇一区二区| 国内外成人在线| 亚洲亚洲人成综合网络| 中文字幕免费一区| 日韩视频在线观看一区二区| 成人精品国产一区二区4080| 日韩国产欧美三级| 亚洲va国产天堂va久久en| 国产日产欧美一区二区视频| 制服丝袜亚洲网站| 欧美精品在欧美一区二区少妇| 欧美图片一区二区三区| 91在线视频网址| 成人中文字幕合集| 国产曰批免费观看久久久| 婷婷久久综合九色综合绿巨人| 亚洲欧美日韩国产综合| 国产精品国产自产拍高清av| 精品国产电影一区二区| 91精品国产综合久久婷婷香蕉| 欧美日韩你懂的| 69av一区二区三区| 7777精品伊人久久久大香线蕉完整版 | 成人中文字幕电影| 国产精品影视在线观看| 国内精品在线播放| 韩国女主播一区| 国产丶欧美丶日本不卡视频| 成人伦理片在线| 色噜噜夜夜夜综合网| 欧美日韩久久一区| 69堂精品视频| 久久精品亚洲乱码伦伦中文| 国产精品第13页| 亚洲自拍偷拍麻豆| 日本亚洲最大的色成网站www| 麻豆国产精品官网| 国产高清在线精品| 一本大道久久a久久综合| 日韩一区二区影院| 国产精品久久久久一区二区三区| 一区二区激情小说| 国产一区二区精品久久91| 97精品国产露脸对白| 欧美一级高清片| 一区二区国产盗摄色噜噜| 亚洲成人www| 成人视屏免费看| 精品国产乱子伦一区| 亚洲一区二区三区四区在线观看 | 欧美日韩午夜精品| 国产精品久久久久永久免费观看| 午夜精品一区在线观看| 粉嫩蜜臀av国产精品网站| 欧美日韩1区2区| 亚洲人成人一区二区在线观看| 秋霞国产午夜精品免费视频| 不卡视频一二三| 中文字幕高清不卡| 国产一区二区三区黄视频 | 成人激情动漫在线观看| 久久久噜噜噜久久中文字幕色伊伊| 亚洲一区二区三区四区的| 91视频免费播放| 国产精品免费久久久久| 国产成a人无v码亚洲福利| 久久先锋影音av| 粉嫩欧美一区二区三区高清影视| 日韩精品一区二| 国产精品一区二区免费不卡| 精品国一区二区三区| 国产一区二区在线观看免费| 久久综合久久综合九色| 国产精品一区二区免费不卡 | 丰满少妇在线播放bd日韩电影| 久久精品网站免费观看| 成人性色生活片免费看爆迷你毛片| 26uuu国产日韩综合| 国产一区亚洲一区| 欧美国产日本视频| 91黄色免费观看| 精品在线免费观看| 国产精品无码永久免费888| 色综合久久久久综合99| 亚洲va国产va欧美va观看| 精品国产一区二区亚洲人成毛片| 成人福利视频网站| 午夜日韩在线电影| 久久久久久久久久电影| 欧美性色综合网| 国产一区二区三区电影在线观看 | 欧美日韩在线精品一区二区三区激情| 日韩**一区毛片| 亚洲精品精品亚洲| 中文字幕欧美日本乱码一线二线| 在线观看国产日韩| 国产乱人伦偷精品视频不卡| 亚洲成人动漫一区| 亚洲精品国产a久久久久久| 日韩一区二区精品| 欧美综合一区二区三区| 成人午夜视频网站| 日韩精品电影一区亚洲| 亚洲人成人一区二区在线观看 | 韩国欧美一区二区| 久久丁香综合五月国产三级网站| 亚洲激情在线播放| 国产精品久久久久久久久果冻传媒 | 精品国产一区二区三区不卡| 91精品黄色片免费大全| 欧美四级电影网| 在线播放/欧美激情| 欧美午夜一区二区三区免费大片| 99国产精品久久久久久久久久久| 国产麻豆91精品| av一区二区不卡| 在线中文字幕一区| 欧美日韩精品欧美日韩精品一 | 国产美女视频91| www.久久精品| 色婷婷国产精品| 8v天堂国产在线一区二区| 日韩欧美成人一区| 久久久精品蜜桃| 亚洲欧洲日韩女同| 亚洲综合免费观看高清完整版| 日韩影视精彩在线| 日韩在线观看一区二区| 久久99国内精品| 久久se精品一区精品二区| 国产酒店精品激情| 成人性生交大片免费看视频在线 | 日韩精品一区二区三区四区| 欧美一级在线观看| 久久久久久亚洲综合影院红桃| 欧美国产精品v| 亚洲另类春色国产| 日韩成人免费电影| 国产精品原创巨作av| 99久久精品情趣| 91麻豆精品国产91久久久 | 99久精品国产|