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

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

?? c51.txt

?? C51單片機串行口中斷服務程序,good
?? TXT
字號:
C51單片機串行口中斷服務程序單片機


      //串口中斷服務程序,僅需做簡單調用即可完成串口輸入輸出的處理 
      //編程:聶小猛。該資料來自“51單片機世界”http://go.163.com/~dz2000,歡迎訪問。  
      //出入均設有緩沖區,大小可任意設置。 
      //可供使用的函數名: 
      //char getbyte(void);  從接收緩沖區取一個byte,如不想等待則在調用前檢測inbufsign是否為1。  
      //getline(char idata *line, unsigned char n); 獲取一行數據回車結束,已處理backspce和delete,必須定義最大輸入字符數  
      //putinbuf(uchar c);模擬接收到一個數據 
      //putbyte(char c); 放入一個字節到發送緩沖區 
      //putbytes(unsigned char *outplace,j);放一串數據到發送緩沖區,自定義長度 
      //putstring(unsigned char code *puts);發送一個字符串到串口  
      //puthex(unsigned char c);發送一個字節的hex碼,分成兩個字節發。 
      //putchar(uchar c,uchar j);發送一個字節數據的asc碼表達方式,需要定義小數點的位置  
      //putint(uint ui,uchar j);發送一個整型數據的asc碼表達方式,需要定義小數點的位置 
      //CR;發送一個回車換行 
      //************************************************************************* 
       
      #include <w77e58.h> //該頭文件包括了51,52,80320的特殊寄存器,用在51,52上也可 
      #define uchar unsigned  
      char #define uint unsigned int #define OLEN 64 
      /* size of serial transmission buffer */ 
      idata unsigned char outbuf[OLEN]; 
      /* storage for transmission buffer */ 
      unsigned char idata *outlast=outbuf; //最后由中斷傳輸出去的字節位置 
      unsigned char idata *putlast=outbuf;  
      //最后放入發送緩沖區的字節位置 
      #define ILEN 2 /* size of serial receiving buffer */ 
      idata unsigned  char inbuf[ILEN]; 
      unsigned char idata *inlast=inbuf; //最后由中斷進入接收緩沖區的字節位置 unsigned  
      char idata *getlast=inbuf; //最后取走的字節位置 bit outbufsign; //輸出緩沖區非空標志 有=1 bit 
      inbufsign;  
      //接收緩沖區非空標志 有=1 
      bit inbufful; 
      //輸入緩沖區滿標志 滿=1 
      #define CR putstring("\r\n") //CR=回車換行  
      //***************************** 
      //放入一個字節到發送緩沖區 
      putbyte(char c) {uchar i,j; ES=0;  
      /*暫停串行中斷,以免數據比較時出錯? */ 
      if (outlast==putlast ) 
      { i=(0-TH1); 
      do{i--;j=36; 
      do {j--;}while(j!=0);  
      }while(i!=0); 
      //延時一個字節發送時間 
      } 
      *putlast=c; //放字節進入緩沖區 
      putlast++; //發送緩沖區指針加一 if  
      (putlast==outbuf+OLEN) putlast=outbuf; //指針到了頂部換到底部 
      if (!outbufsign) 
      {outbufsign=1;
      TI=1;  
      } //緩沖區開始為空置為有,啟動發送 
      ES=1; } 
      //****************************** //放一串數據到發送緩沖區 
      putbytes(unsigned  char *outplace,unsigned char j)
       { int i; for(i=0;i<j;i++) 
      {putbyte(*outplace);
       outplace++;
      }
      }
      //******************************
      //putchar(uchar c,uchar j);發送一個字節數據的asc碼表達方式,需要定義小數點的位置
      putchar(uchar c,uchar j)
      {uchar  idata free[4];uchar data i; 
      i=0;  
      free[i++]=(c/100+0x30);
      if (j==3) free[i++]='.'; 
      free[i++]=(c%100)/10+0x30;
      if (j==2) free[i++]='.';
      if (j==2 && free[i-3]==0x30) free[i-3]=0x20;
      free[i++]=(c%10)+0x30;
      if (j==1 && free[i-3]==0x30) free[i-3]=0x20;
      if (j==1 && free[i-3]==0x20 && free[i-2]==0x30) free[i-2]=0x20; 
      putbytes(free,i);
      }

      //******************************
      //putint(uint ui,uchar j);發送一個整型數據的asc碼表達方式,需要定義小數點的位置
      putint(uint ui,uchar j)
      {uchar idata free[6];
       uchar data i;
      //i=0;
      free[i++]=(ui/10000+0x30);
      if (j==5) free[i++]='.';
      free[i++]=((ui%10000)/1000+0x30);
      if (j==4) free[i++]='.';
      if (j==4 && free[i-3]==0x30) free[i-3]=0x20;
      free[i++]=((ui%1000)/100+0x30);
      if (j==3) free[i++]='.';
      if (j==3 && free[i-4]==0x30) free[i-4]=0x20;
      if (j==3 && free[i-4]==0x20 && free[i-3]==0x30) free[i-3]=0x20;
      free[i++]=((ui%100)/10+0x30);
      if (j==2) free[i++]='.';
      if (j==2 && free[i-5]==0x30) free[i-5]=0x20;
      if (j==2 && free[i-5]==0x20 &&  free[i-4]==0x30) free[i-4]=0x20;
      if (j==2 && free[i-5]==0x20 &&  free[i-4]==0x20 && free[i-3]==0x30) 
      free[i-3]=0x20;
      free[i++]=(ui%10+0x30);
      if (j==1 && free[i-5]==0x30) free[i-5]=0x20;
      if (j==1 && free[i-5]==0x20 &&  free[i-4]==0x30) free[i-4]=0x20;
      if (j==1 && free[i-5]==0x20 &&  free[i-4]==0x20 && free[i-3]==0x30) 
      free[i-3]=0x20;
      if (j==1 && free[i-5]==0x20 &&  free[i-4]==0x20 && free[i-3]==0x20 && 
      free[i-2]==0x30) free[i-2]=0x20;
      putbytes(free,i);
      }
      //***************************************
      //發送一個字符串到串口
      putstring(unsigned char  *puts)
      {for (;*puts!=0;puts++)   //遇到停止符0結束
      putbyte(*puts);
      }
      //*************************************
      //發送一個字節的hex碼,分成兩個字節發。
      unsigned char code hex_[]={"0123456789ABCDEF"}; 
      puthex(unsigned char c)
      {int ch;
      ch=(c>>4)&0x0f; putbyte(hex_[ch]); ch=c&0x0f; putbyte(hex_[ch]); } 
      //*************************************  
      //從接收緩沖區取一個byte,如不想等待則在調用前檢測inbufsign是否為1。 
      uchar getbyte (void) 
      { char idata c  
      ; while (!inbufsign); //緩沖區空等待 
      ES=0; c= *getlast; //取數據 
      getlast++; //最后取走的數據位置加一  
      inbufful=0; //輸入緩沖區的滿標志清零 
      if (getlast==inbuf+ILEN) getlast=inbuf; //地址到頂部回到底部  
      if (getlast==inlast) inbufsign=0; //地址相等置接收緩沖區空空標志,再取數前要檢該標志 
      ES=1; return (c);  
      //取回數據 } 
      //***************************************** //接收一行數據,必須定義放數據串的指針位置和大小  
      del=0x7f,backspace=0x08,cr=0x0d,lf=0x0a 
      void getline (uchar idata *line, unsigned  char n) 
      { unsigned char cnt = 0; //定義已接收的長度 
      char c; 
      do 
      { if ((c = getbyte ())  == 0x0d) 
      c = 0x00; //讀一個字節,如果是回車換成結束符 
      if (c == 0x08 || c == 0x7f) //BACKSPACE  和 DEL 的處理 
      { 
      if (cnt != 0) //已經輸入退掉一個字符 
      {cnt--; //總數目減一 
      line--; //指針減一 
      putbyte  (0x08); //屏幕回顯的處理 
      putbyte (' '); 
      putbyte (0x08); 
      } 
      } 
      else 
      { putbyte (*line = c);  
      //其他字符取入,回顯 
      line++; //指針加一 
      cnt++; //總數目加一 
      } 
      } while (cnt < n - 1 && c != 0x00  && c!=0x1b); //數目到了,回車或ESC停止 
      *line = 0; //再加上停止符0 } 
      //****************************  
      //模擬接收到一個數據 
      putinbuf(uchar c) 
      {ES=0; if(!inbufful) 
      {*inlast= c; //放入數據 inlast++;  
      //最后放入的位置加一 
      if (inlast==inbuf+ILEN) 
      inlast=inbuf;//地址到頂部回到底部 
      if (inlast==getlast)  
      inbufful=1; //接收緩沖區滿置滿標志 
      inbufsign=1; 
      }
      ES=1; 
      }
      //*****************************************  
      //串口中斷處理 
      serial () interrupt 4 

      { if (TI ) 
          { 
           TI = 0; 
           if (outbufsign) //
           if (putlast==outlast)  
           outbufsign=0; //
        else {SBUF=*outlast; //未發送完繼續發送 
              outlast++; //最后傳出去的字節位置加一 
                  if (outlast==outbuf+OLEN)  
                      outlast=outbuf;//地址到頂部回到底部 
                             if (putlast==outlast) 
                             outbufsign=0; //數據發送完置發送緩沖區空標志  
             } 
           } 
      if (RI) 
         { 
            RI = 0; if(!inbufful) 
               { *inlast= SBUF; //放入數據 
                 inlast++; //最后放入的位置加一  
                 inbufsign=1; 
                     if (inlast==inbuf+ILEN) 
                         inlast=inbuf;//地址到頂部回到底部 
                              if (inlast==getlast)  
                              inbufful=1; //接收緩沖區滿置滿標志 
                        } 
                 }
          } 
      //***************************** 
      //串口初始化 0xfd=19200,0xfa=9600,0xf4=4800,0xe8=2400,0xd0=1200  
      serial_init ()
       { 
      SCON = 0x50; /* mode 1: 8-bit UART, enable receiver */ 
      TMOD |=  0x20; /* timer 1 mode 2: 8-Bit reload */ 
      PCON |= 0x80; 
      TH1 = 0xfd;//fa, //baud*2  
      /* reload value 19200 baud */ 
      TR1 = 1; /* timer 1 run */ 
      ES = 1; 
      REN=1; 
      EA=1;  
      SM2=1; //SM2=1時收到的第9位為1才置位RI標志 
      //TMOD |=0x01; //th1 auto load 2X8,th0 1X16 //TH0=31;  
      TL0=0; //X 32 =1S //TR0=1; ET0=1; }  
       

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩影院免费视频| 亚洲在线视频网站| 91精品国产综合久久香蕉的特点| 99re成人精品视频| www.亚洲免费av| 97超碰欧美中文字幕| 色综合中文字幕国产 | 欧美狂野另类xxxxoooo| 色琪琪一区二区三区亚洲区| 91免费看视频| 日本久久一区二区| 欧美日韩成人综合在线一区二区| 欧美精品第一页| 日韩欧美一区二区不卡| 久久美女艺术照精彩视频福利播放| xvideos.蜜桃一区二区| 欧美经典一区二区| 亚洲精品久久久久久国产精华液| 亚洲在线观看免费视频| 日本成人在线一区| 国产一区不卡精品| 91美女精品福利| 91精品国产综合久久久久久漫画 | 久久久综合精品| 国产精品每日更新在线播放网址| 亚洲日本韩国一区| 日韩电影在线一区二区| 国产裸体歌舞团一区二区| 成人国产一区二区三区精品| 欧美午夜精品一区二区三区| 日韩精品一区二区在线观看| 中文无字幕一区二区三区| 亚洲成人先锋电影| 国产乱码一区二区三区| 色久综合一二码| 久久综合久久久久88| 亚洲欧洲日本在线| 欧美a一区二区| 91在线小视频| 日韩免费观看高清完整版| 中文字幕一区二区三区精华液| 午夜欧美大尺度福利影院在线看| 国产精品一区在线| 欧美日韩一二三| 欧美国产日本视频| 日韩不卡一二三区| 日本精品一级二级| 国产欧美日韩三级| 麻豆国产欧美一区二区三区| 一本大道久久a久久综合| 久久久一区二区三区捆绑**| 丝袜脚交一区二区| 91行情网站电视在线观看高清版| 久久精品一区二区| 日本欧美肥老太交大片| 欧美午夜宅男影院| 中文字幕制服丝袜成人av| 精品一区在线看| 欧美高清精品3d| 一区二区三区免费看视频| 成人午夜免费av| 久久久久久一二三区| 久久不见久久见免费视频7| 精品视频999| 亚洲午夜久久久久久久久久久| 成人av在线播放网站| 国产欧美一区二区在线| 国产真实乱偷精品视频免| 欧美一区二区二区| 免费观看日韩av| 4hu四虎永久在线影院成人| 亚洲无线码一区二区三区| 91国偷自产一区二区三区观看 | 亚洲一区在线观看网站| 99久久er热在这里只有精品15| 国产欧美一区二区三区鸳鸯浴| 久久9热精品视频| wwwwww.欧美系列| 狠狠色狠狠色综合日日91app| 日韩视频中午一区| 国内成人免费视频| 久久久夜色精品亚洲| 国产精品99久久久久久宅男| 国产欧美一区二区精品忘忧草| 国模大尺度一区二区三区| 26uuu久久天堂性欧美| 国产福利一区二区三区| ...中文天堂在线一区| 一本到不卡免费一区二区| 亚洲午夜久久久久久久久电影网| 欧美亚洲一区三区| 男人的天堂久久精品| 久久一区二区三区四区| 国产精品1024| 亚洲另类在线视频| 欧美精品自拍偷拍| 精品亚洲国内自在自线福利| 国产日韩欧美麻豆| 色综合欧美在线视频区| 亚洲成人一区二区| 久久久噜噜噜久噜久久综合| 成人av在线资源网站| 一区二区三区在线视频播放| 91精品婷婷国产综合久久竹菊| 国产一区二区不卡| 亚洲黄色尤物视频| 日韩女优电影在线观看| 99久久婷婷国产综合精品电影| 亚洲成人av一区二区| 久久久久久麻豆| 欧美中文字幕不卡| 国产一区二区调教| 亚洲国产日韩av| 国产日本欧洲亚洲| 欧美日韩一区视频| 成人综合在线视频| 日韩不卡一二三区| 亚洲日本护士毛茸茸| 欧美不卡123| 欧美午夜在线观看| 懂色中文一区二区在线播放| 丝袜美腿高跟呻吟高潮一区| 国产女人18水真多18精品一级做| 欧美日本不卡视频| 99视频超级精品| 国产一区二区中文字幕| 午夜欧美视频在线观看 | 欧美日韩亚洲综合在线| 国产一本一道久久香蕉| 亚洲高清视频在线| 中文字幕不卡在线| 日韩欧美国产一区在线观看| 欧美伊人久久久久久午夜久久久久| 国内精品免费**视频| 天天亚洲美女在线视频| 亚洲激情网站免费观看| 97久久人人超碰| 欧美mv日韩mv国产网站app| 成人美女在线观看| 美脚の诱脚舐め脚责91| 亚洲成人午夜电影| 亚洲色图视频网| 国产精品嫩草影院av蜜臀| 欧美精品一区二区三区高清aⅴ| 在线亚洲一区二区| 91原创在线视频| www.亚洲人| 成人深夜在线观看| 国产成人激情av| 国产乱码字幕精品高清av| 国产一区二区女| 极品少妇xxxx精品少妇偷拍 | 精品国产乱码久久久久久免费| 欧美专区日韩专区| 在线观看www91| 色综合天天综合在线视频| 成人美女视频在线观看18| 成人在线综合网站| 丰满放荡岳乱妇91ww| av午夜精品一区二区三区| 不卡一区中文字幕| 色婷婷精品久久二区二区蜜臀av | 日韩精品每日更新| 日韩有码一区二区三区| 麻豆成人av在线| 黄色成人免费在线| 丁香婷婷深情五月亚洲| 99精品1区2区| 欧美色网站导航| 欧美一级二级三级蜜桃| 久久嫩草精品久久久精品 | 91色视频在线| 欧美日韩一区二区欧美激情| 正在播放一区二区| 精品噜噜噜噜久久久久久久久试看 | 中文成人av在线| 综合激情成人伊人| 亚洲aaa精品| 久久精工是国产品牌吗| 成人做爰69片免费看网站| 色香蕉成人二区免费| 欧美日本一区二区| 久久久国产综合精品女国产盗摄| 中文字幕一区在线观看视频| 亚洲一区二区三区精品在线| 九九精品视频在线看| 成人黄色av电影| 56国语精品自产拍在线观看| 欧美精品一区二区精品网| 国产精品久久久久一区| 视频一区欧美精品| 国产精品99久久久久久久vr| 日本道精品一区二区三区| 91精品国产丝袜白色高跟鞋| 国产欧美日韩在线看| 五月激情综合色| 成人免费视频视频在线观看免费| 欧美日韩成人综合| 中文字幕五月欧美| 久久狠狠亚洲综合|