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

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

?? serial.c

?? 強大的AVR串口通訊程序. 使用中斷,發送/接收緩沖區方式,速度快效率高
?? C
字號:
/************************************************************************ 
;*  公 司:  xx 
;*  模 塊:  serial.c 
;*  功 能:  串口中斷服務程序,僅需做簡單調用即可完成串口輸入輸出的處理; 
;*          出入均設有緩沖區,大小可任意設置 
;*  芯 片:  AMEGA16 
;*  說 明:  未利用串口發送硬件BUFF 
;*  設 計:  李耀峰 
;*  時 間:  2005-11-24 
;*  版 本:   V1.0 
;*  記 錄:   
;************************************************************************/ 


/************************************************************************ 
可供使用的函數名: 
extern void PutByte(byte c);                 //放入一個字節到發送緩沖區 
extern void PutString(byte  *puts);            //發送一個定義在程序存儲區的字符串到串口 
extern void PutBytes(byte *outplace,byte j);   //發送一串數據 
extern void PutHEX(byte c);                    //發送一個字節的hex碼,分成兩個字節發 
extern byte GetByte (void);                    //從接收緩沖區取一個byte 
extern void SerialInit (word baud);            //串口初始化 

extern byte inbufsign;                      //接收緩沖區數據,有數據=1。 

#define CR PutString("\r\n")               //發送一個回車換行 
#define NUL putstring("\0")                   //發送一個空格 
*************************************************************************/ 

#include <iom16V.h>  
#include <macros.h>  

#define byte unsigned char 
#define word unsigned int 

#define     OLEN 20             //串口發送緩沖大小 
#define     ILEN 20             //串口接收緩沖大小 

byte    outbuf[OLEN];           //發送緩沖 
byte    inbuf[ILEN];            //接收數據緩沖 
byte    *outlast=outbuf;        //最后由中斷傳輸出去的字節位置 
byte    *putlast=outbuf;        //最后放入發送緩沖區的字節位置 
byte    *inlast=inbuf;          //最后接收到接收緩沖區的字節位置 
byte    *getlast=inbuf;         //最后從發送緩沖區取走的字節位置 

struct data                     //位定義 
{     unsigned bit0:1; 
    unsigned bit1:1; 
    unsigned bit2:1; 
    unsigned bit3:1; 
    unsigned bit4:1; 
    unsigned bit5:1; 
    unsigned bit6:1; 
    unsigned bit7:1; 
}bit_flag; 
#define outbufsign0 bit_flag.bit0   //緩沖區數據發完標志   發完=0 
#define outbufsign bit_flag.bit1    //發送緩沖區非空標志   有=1 
#define inbufful bit_flag.bit2      //接收緩沖區滿標志     滿=1 

//#define inbufsign bit_flag.bit3   //接收緩沖區非空標志   有=1 
//byte outbufsign0;                //緩沖區數據發完標志   發完=0 
//byte outbufsign;                //發送緩沖區非空標志   有=1 
//byte inbufful;                  //接收緩沖區滿標志     滿=1 

byte inbufsign;                  //接收緩沖區非空標志   有=1 


#define CR PutString("\r\n")        //CR=回車換行 
#define SPACE PutByte(0x20)         //發送一個空格。 

#pragma interrupt_handler   SerialIncept_handler:12     //串口接收中斷函數 
#pragma interrupt_handler   SerialSend_handler:14       //串口發送中斷函數 
//********************************************************************** 
//函 數 名:   void PutByte(byte c) 
//功    能:   放入一個字節到發送緩沖區 
//說    明: 
//參    數: 
//返 回 值: 
//示    范:   PutByte(0x00); 
//*********************************************************************** 
    void PutByte(byte c) 
    { 
       CLI();              //暫停串行中斷,以免數據比較時出錯 
       while((((outlast-putlast)==2)&&(outlast > putlast ))||((outlast < putlast)&&(OLEN-(putlast-outlast)==2))) 
       { 
          SEI(); 
          c++;c--; 
          CLI(); 
       } 
       *putlast=c;         //放字節進入緩沖區 
       putlast++;          //發送緩沖區指針加1 
       if (putlast==outbuf+OLEN) putlast=outbuf;  //指針到了頂部換到底部 
       outbufsign=1; 
       if (!outbufsign0)                       //緩沖區無數據 
       { 
          outbufsign0=1; 

          UDR=*outlast;                        //未發送完繼續發送 
         outlast++;                          //最后傳出去的字節位置加1 
         if (outlast==outbuf+OLEN) outlast=outbuf;//地址到頂部回到底部 
         if (putlast==outlast) outbufsign=0;     //數據發送完置發送緩沖區空標志 
       }                                           //緩沖區開始為空置為有,啟動發送 
       SEI(); 
    } 

//********************************************************************** 
//函 數 名:     void PutString(byte  *puts) 
//功    能:   發送字符串到串口 
//說    明:      
//參    數:     發送的字符串 
//返 回 值: 
//示    范:   putstring("\r\n") 
//*********************************************************************** 
    void PutString(byte  *puts) 
   { 
       for(;*puts!=0;puts++)   //遇到停止符0結束 
      PutByte(*puts); 
   } 

//********************************************************************** 
//函 數 名:     void PutBytes(byte *outplace,byte j) 
//功    能:   放一串數據到發送緩沖區,需要定義發送的字節數 
//說    明:      
//參    數:     *outplace:發送的字節數據首地址指針 j:發送的字節數量 
//返 回 值: 
//*********************************************************************** 
    void PutBytes(byte *outplace,byte j) 
    {    int i; 
       for(i=0;i<j;i++) 
       { 
          PutByte(*outplace); 
          outplace++; 
       } 
    } 

//********************************************************************** 
//函 數 名:   PutHEX(unsigned char c) 
//功    能:   發送一個字節的hex碼,分成兩個字節發。 
//說    明:   發送ASSIC碼 
//參    數:   發送的數據 
//返 回 值:   無 
//示    范:   PutHEX(i); 
//*********************************************************************** 
   const byte hex_[]={"0123456789ABCDEF"}; 
    void PutHEX(byte c) 
    { 
       word ch; 
       ch=(c>>4)&0x0f; 
       PutByte(hex_[ch]); 
       ch=c&0x0f; 
       PutByte(hex_[ch]); 
        SPACE; 
    } 

//********************************************************************** 
//函 數 名:   byte GetByte (void) 
//功    能:   從接收緩沖區取一個byte 
//說    明:   如不想等待則在調用前檢測inbufsign是否為1 
//參    數:   無 
//返 回 值:   接收到的數據 
//示    范:   i=GetByte(); 
//*********************************************************************** 
    byte GetByte (void) 
    { 
       char c ; 
       while (!inbufsign);    //緩沖區空等待 
      CLI(); 
       c=*getlast;            //取數據 
       getlast++;             //最后取走的數據位置加1 
       inbufful=0;            //輸入緩沖區的滿標志清零 
       if (getlast==inbuf+ILEN) getlast=inbuf; //地址到頂部回到底部 
       if (getlast==inlast) inbufsign=0;       //地址相等置接收緩沖區空空標志,再取數前要檢該標志 
       SEI(); 
       return (c);        //取回數據 
    } 

//********************************************************************** 
//函 數 名:   void SerialSend_handler (void) 
//功    能:   串口發送中斷處理 
//說    明: 
//參    數: 
//返 回 值: 
//*********************************************************************** 
    void SerialSend_handler (void) 
    { 
       UCSRA|=(1<<TXC);                       //清發送中斷標志 
        if (outbufsign) 
      { 
          UDR=*outlast;                        //未發送完繼續發送 
         outlast++;                          //最后傳出去的字節位置加1 
         if (outlast==outbuf+OLEN) outlast=outbuf;//地址到頂部回到底部 
         if (putlast==outlast) outbufsign=0;     //數據發送完置發送緩沖區空標志 
        } 
      else 
      { 
          outbufsign0=0; 
      } 
   } 


//********************************************************************** 
//函 數 名:   void SerialIncept_handler (void) 
//功    能:   串口接收中斷處理 
//說    明: 
//參    數: 
//返 回 值: 
//***********************************************************************       
    void SerialIncept_handler (void) 
    { 
        if(!inbufful)                          //接收緩沖區未滿 
        { 
            *inlast= UDR;                        //放入數據 
            inlast++;                             //最后放入的位置加1 
            inbufsign=1; 
            if (inlast==inbuf+ILEN) inlast=inbuf;   //地址到頂部回到底部 
            if (inlast==getlast)   inbufful=1;     //接收緩沖區滿置滿標志 
        } 
    } 

/********************************************************************** 
函 數 名:   void SerialInit (unsigned long) 
功    能:   串口初始化 
說    明:   串口初始化成指定波特率,開接收,發送并開相應中斷 
參    數:   需要初始化的波特率 
返 回 值:   無 
示    范:   SerialInit (38400); 
***********************************************************************/ 
    void SerialInit (word baud) 
    { 
       CLI(); 
       UCSRC&=(~(1<<URSEL)); 
        UBRRH=(byte)(baud>>8); 
      UBRRL=(byte)baud; 
       
      UCSRB=(1<<RXCIE)|(1<<TXCIE)|(1<<RXEN)|(1<<TXEN);              
                                     //接收中斷使能,發送中斷使能,接收器與發送器使能 
      UCSRC=(1<<URSEL)|(3<<UCSZ0);    //設置幀格式: 8 個數據位, 1 個停止位*/ 
      SEI();                     //開全局中斷 
    } 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产三级三级三级精品8ⅰ区| 欧美极品美女视频| 丰满放荡岳乱妇91ww| 自拍偷拍亚洲综合| 日韩欧美电影在线| 日本韩国欧美一区| 狠狠色丁香久久婷婷综| 国产精品色哟哟| 91精品国产色综合久久久蜜香臀| 国产大陆亚洲精品国产| 亚洲成人午夜电影| 亚洲国产高清aⅴ视频| 欧美精品亚洲一区二区在线播放| 成人黄色免费短视频| 麻豆久久一区二区| 亚洲国产中文字幕在线视频综合| 国产欧美日韩精品一区| 欧美一区二区成人6969| 99久久国产综合精品麻豆| 日韩专区中文字幕一区二区| 亚洲欧洲av色图| 欧美成人r级一区二区三区| 日本电影欧美片| 97久久精品人人做人人爽50路| 久久99日本精品| 奇米色一区二区| 亚洲成av人片一区二区梦乃| 亚洲日本va午夜在线电影| 国产日韩三级在线| 久久综合中文字幕| 久久这里只有精品6| 555www色欧美视频| 欧美日韩亚洲不卡| 欧美在线一区二区| 精品视频一区三区九区| 色哟哟一区二区在线观看| 91在线视频18| caoporm超碰国产精品| 岛国一区二区三区| 成人做爰69片免费看网站| 国产精品一级片在线观看| 国产精品一区一区| 粉嫩一区二区三区性色av| 国产成人无遮挡在线视频| 国产白丝网站精品污在线入口| 国产成人精品免费视频网站| 高清视频一区二区| 国产69精品久久久久毛片| heyzo一本久久综合| 91片在线免费观看| 欧美私模裸体表演在线观看| 欧美人狂配大交3d怪物一区| 91精品国产品国语在线不卡| 日韩精品在线一区二区| 精品久久久久久久久久久久久久久 | 国产欧美一区二区精品秋霞影院 | 亚洲一线二线三线久久久| 一区二区三区电影在线播| 亚洲一区欧美一区| 天天爽夜夜爽夜夜爽精品视频| 午夜欧美视频在线观看| 日本中文字幕不卡| 国产精品综合av一区二区国产馆| 国产传媒日韩欧美成人| 91在线小视频| 欧美性受xxxx| 日韩欧美中文一区二区| 久久久久国产精品麻豆ai换脸| 久久久亚洲欧洲日产国码αv| 国产精品每日更新在线播放网址| 亚洲欧美成aⅴ人在线观看| 亚洲国产精品一区二区www在线| 男人的j进女人的j一区| 国产精品综合在线视频| 99精品久久久久久| 欧美理论片在线| 国产亚洲综合性久久久影院| 亚洲天堂免费看| 麻豆精品在线播放| av一二三不卡影片| 欧美精品1区2区| 欧美激情综合网| 日日骚欧美日韩| 国产成都精品91一区二区三| 欧美在线免费播放| 久久亚洲影视婷婷| 亚洲国产一区视频| 国产99久久久精品| 制服丝袜成人动漫| 国产精品国产三级国产有无不卡 | 日韩一级成人av| 国产精品每日更新| 男人的j进女人的j一区| 91亚洲精品乱码久久久久久蜜桃 | 久久国产精品免费| 91香蕉视频mp4| 欧美成人r级一区二区三区| 亚洲黄一区二区三区| 国精产品一区一区三区mba视频| 91免费在线视频观看| 日韩你懂的电影在线观看| 亚洲视频在线一区二区| 韩国女主播成人在线观看| 在线日韩国产精品| 国产精品丝袜黑色高跟| 日韩av电影天堂| 91免费视频网址| 国产午夜精品一区二区三区嫩草| 天天影视涩香欲综合网| 色综合网站在线| 中文字幕国产精品一区二区| 麻豆精品一二三| 欧美日韩专区在线| 中文字幕综合网| 懂色av一区二区三区免费看| 91精品国产入口| 香蕉久久夜色精品国产使用方法| 波多野结衣精品在线| 国产日本一区二区| 久久er精品视频| 精品少妇一区二区| 热久久久久久久| 91精品一区二区三区久久久久久| 亚洲一区二区三区四区在线 | 欧美三片在线视频观看| 国产精品久久久久久久久果冻传媒| 国产在线播精品第三| 日韩欧美国产一区二区三区| 亚洲123区在线观看| 欧美色图一区二区三区| 亚洲精品中文字幕乱码三区| 不卡的av电影在线观看| 国产精品视频免费| 国产成人午夜精品5599| 国产人久久人人人人爽| 成人免费视频国产在线观看| 久久久久久9999| 粉嫩嫩av羞羞动漫久久久| 国产亚洲成年网址在线观看| 国模冰冰炮一区二区| 国产亚洲综合在线| 国产凹凸在线观看一区二区| 国产色一区二区| 成人av动漫网站| 最新热久久免费视频| 色综合久久久网| 亚洲精品v日韩精品| 在线视频综合导航| 亚洲不卡在线观看| 日韩一区二区三区免费看| 精品一区二区在线看| 久久亚洲免费视频| 成人久久18免费网站麻豆| 最新国产成人在线观看| 欧美亚洲免费在线一区| 日韩电影在线一区二区三区| 欧美一区二区三区精品| 国产精一区二区三区| 亚洲色图19p| 欧美日韩不卡一区二区| 激情综合色综合久久| 欧美国产欧美综合| 91免费版在线看| 午夜电影网一区| 久久久久九九视频| 一本大道久久a久久精二百 | 成人av在线观| 一区二区三区四区五区视频在线观看| 欧美午夜电影网| 麻豆精品一区二区av白丝在线| 久久久亚洲精华液精华液精华液| 成年人网站91| 午夜国产精品影院在线观看| 久久久亚洲午夜电影| 色视频欧美一区二区三区| 日本免费在线视频不卡一不卡二| 26uuu欧美| 在线观看日韩高清av| 国产尤物一区二区| 亚洲激情男女视频| 精品国产髙清在线看国产毛片| jiyouzz国产精品久久| 免费日韩伦理电影| 国产精品国产三级国产普通话蜜臀| 在线看日韩精品电影| 国产伦精品一区二区三区视频青涩 | 欧美视频一二三区| 国产福利一区在线| 亚洲mv在线观看| 中文在线一区二区| 91精品免费在线| av午夜精品一区二区三区| 午夜影视日本亚洲欧洲精品| 欧美国产日产图区| 欧美一区二区三区电影| 91一区二区三区在线观看| 国产伦精品一区二区三区免费迷| 亚洲国产aⅴ天堂久久| 国产日韩精品久久久| 欧美一区二区三区四区五区|