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

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

?? uartcom.c

?? 51實戰工程級源碼
?? C
字號:
/*
*************************************************************************************************************
*                                                Kingst-51
*                                        Development board samples
*
*                                 (c) Copyright 2009-2012, Kingst Studio
*                                           All Rights Reserved
*
*                                          http://www.kingst.org
* 文件名:UartCom.c
* 描  述:串口通信驅動文件
* 版本號:1.0.0
* 備  注:本驅動提供可按數據塊操作的串口寫入和讀取功能函數,
*         并按照設定的超時時間,自動判斷是否接收完一幀數據,在接收完時設置狀態標志
*************************************************************************************************************
*/

#define _UART_COM_C
#include "config.h"
#include "main.h"
#include "UartCom.h"


/*
********************************************************************************
* ----------------------- Local defines  ---------------------------------------
********************************************************************************
*/
/* 接收、發送緩沖區容量設置(最大不能超過126) */
#define RX_BUFF_SIZE    50
#define TX_BUFF_SIZE    30


/* 幀間隔設定,即超過此時間時認定為一幀數據傳輸結束 */
#define FRAME_SPACE_TIME    50  //單位ms


/*
********************************************************************************
* ----------------------- Local variables  -------------------------------------
********************************************************************************
*/
/* 通信狀態控制 */
typedef struct {	 
    int8  rxbtm;
    int8  rxcnt;
    int8  txbtm;	   
    int8  txtop;
} sComSta;
static sComSta ComSta;
static uint8 xdata RxBuff[RX_BUFF_SIZE];
static uint8 xdata TxBuff[TX_BUFF_SIZE];


/*
********************************************************************************
* ----------------------- Globle variables  ------------------------------------
********************************************************************************
*/
eUartRxSta UartRxSta = RX_NONE; //串口接收狀態


/*
***************************************************************************************************
* ---------------------------------- Source codes  ------------------------------------------------
***************************************************************************************************
*/

/*
* 函數名:UartComInit
* 描  述:初始化串口通信配置
*/
void UartComInit(void)
{
	/* 配置T1為波特率發生器 */
    TMOD &= 0x0F;
    TMOD |= 0x20;
	TH1 = 244; //波特率2400,計算公式如下:
	TL1 = 244; //256 - 時鐘頻率/(12*32*波特率)
	ET1 = 0;
	
	/* 配置串口工作模式 */
	SCON = 0x50;
	TR1 = 1;
	ES = 1;
}


/*
* 函數名:UartWrite
* 描  述:UART發送函數,向緩沖區寫入指定長度的數據,并啟動發送
* 輸  入:buff - 待寫入數據塊的指針
*         len  - 待寫入數據塊的長度
* 輸  出:返回值 - 實際寫入的數據長度
*/
int8 UartWrite(const void *buff, int8 len)
{
    int8 i, end;
    const uint8 *src;

    /* 獲取實際可寫入長度 */
    EA = 0;
    i = ComSta.txtop - ComSta.txbtm;
    EA = 1;		   
    if (i < 0) {
        i += TX_BUFF_SIZE;
    }
    i = TX_BUFF_SIZE - i;
    if (len > i) {
        return 0;
    }

    /* 拷貝數據到緩沖區中 */
    src = (const uint8 *)buff;
    i = ComSta.txtop;
    end = i + len;
    if (end < TX_BUFF_SIZE) {
        for (; i<end; i++) {
            TxBuff[i] = *src++;
        }
    }
    else {
        for (; i<TX_BUFF_SIZE; i++) {
            TxBuff[i] = *src++;
        }
        end -= TX_BUFF_SIZE;
        for (i=0; i<end; i++) {
            TxBuff[i] = *src++;
        }
    }

    /* 修改緩沖區指向信息 */
    EA = 0;
    if (ComSta.txbtm == ComSta.txtop) {
        TI = 1;
    }
    ComSta.txtop = end;
    EA = 1;

    return len;
}

/*
* 函數名:UartRead
* 描  述:UART接收緩沖區讀取函數,讀取指定長度的數據
* 輸  出:在指針上輸出數據,返回實際讀到的數據長度,錯誤時返回-1
* 輸  入:buff - 數據讀取的接收指針
*         len  - 讀取的數據塊長度(-1為全部讀出)
* 輸  出:buff - 在此指針上輸出讀到的數據
*         返回值 - 實際讀到的數據長度
*/
int8 UartRead(void *buff, int8 len)
{
    int8 i, end;
    uint8 *dest;

    /* 獲取實際可讀取長度 */
    EA = 0;
    if ((len>ComSta.rxcnt) || (len<0)) {
        len = ComSta.rxcnt;
    }
    EA = 1;

    /* 從緩沖區拷貝數據 */
    dest = (uint8 *)buff;
    i = ComSta.rxbtm;
    end  = i + len;
    if (end < RX_BUFF_SIZE) {
        for (; i<end; i++) {
            *dest++ = RxBuff[i];
        }
    }
    else {
        for (; i<RX_BUFF_SIZE; i++) {
            *dest++ = RxBuff[i];
        }
        end -= RX_BUFF_SIZE;
        for (i=0; i<end; i++) {
            *dest++ = RxBuff[i];
        }
    }

    /* 修改緩沖區指向信息 */
    EA = 0;
    ComSta.rxbtm = end;
    ComSta.rxcnt -= len;
    EA = 1;

    return len;
}

/*
* 函數名:UartRxMonitor
* 描  述:UART通信接收的監控函數,用于判定一幀數據的接收完成
* 輸  入:ms - 本函數調用的間隔時間,單位ms
* 輸  出:無
*/
void UartRxMonitor(uint8 ms)
{
    uint8 cnt;
    static uint8 cntbkp;
    static uint8 idletmr;
    static uint8 sigpost;

    cnt = ComSta.rxcnt;
    if (cnt == 0) {
        cntbkp = 0;
        return;
    }
    if (cnt != cntbkp) {
        idletmr = 0;
        sigpost = 0;
        cntbkp  = cnt;
        return;
    }
    if (sigpost != 0) {	     //保證接收完成標志只推送一次
        return;
    }
    idletmr += ms;
    if (idletmr >= FRAME_SPACE_TIME) {
        sigpost = 1;
        UartRxSta = RX_FINISH;
    }
}

/*
* 函數名:Serial_ISR
* 描  述:串口中斷服務函數
*/
void Serial_ISR() interrupt 4
{
    uint8 chr;
    int8  top;

	/* 接收字符,保存到接收緩沖區中 */
	if (RI == 1) {
		RI = 0;
        chr = SBUF;
        if (ComSta.rxcnt < RX_BUFF_SIZE) {
            top = ComSta.rxbtm + ComSta.rxcnt;
            if (top >= RX_BUFF_SIZE) {
                top -= RX_BUFF_SIZE;
            }
            RxBuff[top] = chr;
            ComSta.rxcnt++;
        }
	}
	
	/* 由發送緩沖區中提取字符,并發送 */
	if (TI == 1) {
		TI = 0;
        if (ComSta.txbtm != ComSta.txtop) {
            SBUF = TxBuff[ComSta.txbtm];
            ComSta.txbtm++;
            if (ComSta.txbtm >= TX_BUFF_SIZE) {
                ComSta.txbtm = 0;
            }
        }
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品日韩欧美在线| 91精品国产综合久久久久久久| 水野朝阳av一区二区三区| 樱花影视一区二区| 亚洲一区在线播放| 天天操天天干天天综合网| 亚洲国产一区二区a毛片| 亚洲免费大片在线观看| 一区二区在线看| 天涯成人国产亚洲精品一区av| 亚洲午夜电影在线| 日本麻豆一区二区三区视频| 另类小说综合欧美亚洲| 国产精品亚洲人在线观看| 成人激情免费网站| 欧美日韩免费一区二区三区视频| 欧美肥妇bbw| 久久久欧美精品sm网站| 国产精品久久久久久久蜜臀| 亚洲精品五月天| 日本少妇一区二区| 国产91对白在线观看九色| 91麻豆产精品久久久久久| 欧美视频自拍偷拍| 久久久久久久久久久久久久久99| 国产精品网站一区| 亚洲www啪成人一区二区麻豆| 久久99日本精品| 99久久国产综合色|国产精品| 欧美日本一道本在线视频| 26uuu国产一区二区三区| 亚洲日本成人在线观看| 男男成人高潮片免费网站| 国产成人精品免费视频网站| 欧美性大战久久| 欧美激情综合在线| 日韩成人精品视频| 色999日韩国产欧美一区二区| 日韩欧美国产综合在线一区二区三区| 国产精品免费视频一区| 免费在线观看视频一区| 不卡电影一区二区三区| 日韩女优视频免费观看| 亚洲精品视频在线| 国产精品1区2区| 欧美一级高清片在线观看| 亚洲精品国产成人久久av盗摄| 美女高潮久久久| 精品视频在线视频| 一区二区三区四区视频精品免费 | 欧美日本在线观看| 亚洲欧美在线视频观看| 国产一区二区精品久久| 欧美日韩精品系列| 亚洲精品一卡二卡| 99久久精品免费精品国产| www成人在线观看| 蜜桃精品视频在线| 欧美在线色视频| 亚洲综合小说图片| 91免费精品国自产拍在线不卡| 久久久精品天堂| 久久精品国产秦先生| 91精品免费在线观看| 亚洲国产欧美一区二区三区丁香婷| 波多野结衣视频一区| 国产精品天天看| 粉嫩嫩av羞羞动漫久久久| 久久色中文字幕| 国产一区二区三区四| 精品国产污污免费网站入口 | 国产一区二区三区av电影| 欧美肥妇bbw| 麻豆国产一区二区| 日韩色视频在线观看| 日本女人一区二区三区| 日韩免费高清电影| 国产精品白丝jk白祙喷水网站| 欧美电影免费观看高清完整版在| 日韩精品国产精品| 欧美成人一区二区三区在线观看| 免费欧美日韩国产三级电影| 日韩一区二区三区视频在线 | 久久99久久精品| 精品sm在线观看| 国产91精品在线观看| 国产精品毛片无遮挡高清| 99九九99九九九视频精品| 亚洲欧美激情插| 欧美一区二区三区色| 国产精品一区二区x88av| 国产精品久久久久久久岛一牛影视| 99在线精品一区二区三区| 亚洲国产精品久久不卡毛片| 欧美日韩高清一区二区三区| 极品少妇xxxx偷拍精品少妇| 国产日韩欧美一区二区三区综合 | 亚洲一区影音先锋| 日韩欧美不卡在线观看视频| 高清不卡在线观看| 亚洲一级电影视频| 精品久久久久久久久久久久包黑料| 国产成人激情av| 亚洲成人福利片| 久久久久国产精品麻豆| 色综合中文字幕| 久久99精品国产麻豆婷婷| 亚洲情趣在线观看| 欧美成人福利视频| 色综合久久久久久久久久久| 奇米色一区二区| 亚洲欧美偷拍另类a∨色屁股| 在线播放中文字幕一区| av一二三不卡影片| 美女诱惑一区二区| 亚洲午夜成aⅴ人片| 久久精品视频一区二区三区| 欧美军同video69gay| 成人免费观看男女羞羞视频| 亚洲成在人线免费| 亚洲日本成人在线观看| 精品剧情v国产在线观看在线| 在线精品视频一区二区三四| 国产精品夜夜嗨| 免费成人美女在线观看.| 亚洲永久免费视频| 国产精品视频一二三区| 日韩免费观看高清完整版在线观看| 91在线精品一区二区| 国产精品一区二区三区网站| 蜜桃久久久久久| 午夜不卡av在线| 有坂深雪av一区二区精品| 中文字幕免费一区| 久久久精品国产免大香伊| 日韩一区二区在线播放| 欧美日本韩国一区| 91国模大尺度私拍在线视频| aa级大片欧美| av电影在线观看不卡| 国产91精品一区二区麻豆网站| 精品在线免费观看| 麻豆91精品91久久久的内涵| 日韩精品免费专区| 日韩国产在线观看| 日韩二区三区在线观看| 午夜成人免费视频| 日韩国产成人精品| 日本成人在线网站| 奇米影视7777精品一区二区| 日韩精品久久理论片| 免费精品视频在线| 免费成人在线网站| 精品一区二区免费视频| 美国欧美日韩国产在线播放 | 国产日韩精品一区| 亚洲国产成人一区二区三区| 久久久亚洲欧洲日产国码αv| 久久久久久电影| 中文字幕在线一区| 亚洲色图都市小说| 亚洲亚洲精品在线观看| 亚洲高清在线视频| 久久精品国产第一区二区三区| 九色|91porny| 成人午夜视频在线| 91国产丝袜在线播放| 在线播放91灌醉迷j高跟美女 | 国产成人日日夜夜| av影院午夜一区| 欧美日韩国产中文| 精品国产免费人成电影在线观看四季| 欧美va亚洲va香蕉在线| 亚洲国产成人在线| 亚洲一区二区综合| 激情图片小说一区| 成年人网站91| 91精品国产综合久久国产大片| 精品免费国产二区三区 | 欧美乱妇一区二区三区不卡视频| 日韩视频在线你懂得| 国产精品不卡在线| 日韩专区中文字幕一区二区| 国产一区二区三区久久悠悠色av| 成人黄色在线看| 欧美一区二区三区播放老司机| 亚洲国产电影在线观看| 亚洲6080在线| 国产99久久久国产精品潘金| 91蝌蚪porny九色| 日韩三级视频中文字幕| 自拍偷拍亚洲综合| 国产综合一区二区| 色94色欧美sute亚洲线路一ni | 国产一区二区三区不卡在线观看 | 中文字幕在线观看一区二区| 日韩精品电影在线| 色妹子一区二区| 日本一区二区在线不卡| 日韩影院免费视频|