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

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

?? uart.c

?? MCS-51的一個Free小型操作系統,在KeilC中下編譯工作
?? C
?? 第 1 頁 / 共 2 頁
字號:
  else                  // if FIFO DISABLED
    while (!(UARTx->SR & UART_TxEmpty)); // while the transmit shift register not empty
  UARTx->TxBUFR = *Data;
}

/*******************************************************************************
* Function Name  : UART_DataSend
* Description    : This function sends several data bytes to the selected UART.
* Input 1        : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2        : A pointer to the data to send
* Input 3        : The data length in bytes
* Output         : None
* Return         : None
*******************************************************************************/
void UART_DataSend(UART_TypeDef *UARTx, u8 *Data, u8 DataLength)
{
  while(DataLength--)
  {
    UART_ByteSend(UARTx,Data);
    Data++;
  }
}

/*******************************************************************************
* Function Name  : UART_9BitDataSend
* Description    : This function sends several 9 bits data bytes to the selected UART.
* Input 1        : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2        : A pointer to the data to send
* Input 3        : The data length
* Output         : None
* Return         : None
*******************************************************************************/
void UART_9BitDataSend(UART_TypeDef *UARTx, u16 *Data, u8 DataLength)
{
  while(DataLength--)
  {
    UART_9BitByteSend(UARTx,Data);
    Data++;
  }
}

/*******************************************************************************
* Function Name  : UART_StringSend
* Description    : This function sends a string to the selected UART.
* Input 1        : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2        : A pointer to the string to send
* Output         : None
* Return         : None
*******************************************************************************/
void UART_StringSend(UART_TypeDef *UARTx, u8 *String)
{
  u8 *Data=String;
  while(*Data != '\0')
    UART_ByteSend(UARTx, Data++);
  *Data='\0';
  UART_ByteSend(UARTx, Data);
}

/*******************************************************************************
* Function Name  : UART_ByteReceive
* Description    : This function gets a data byte from the selected UART.
* Input 1        : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2        : A pointer to the buffer where the data will be stored
* Input 3        : The time-out period
* Output         : The received data
* Return         : The UARTx.SR register contents
*******************************************************************************/
u16 UART_ByteReceive(UART_TypeDef *UARTx, u8 *Data, u8 TimeOut)
{
   u16 wStatus;
   UARTx->TOR=TimeOut;// reload the Timeout counter
   while (!((wStatus=UARTx->SR) & (UART_TimeOutIdle|UART_RxHalfFull|UART_RxBufFull)));// while the UART_RxFIFO is empty and no Timeoutidle
   *Data = (u8)UARTx->RxBUFR; // then read the Receive Buffer Register
   return wStatus;
}

/*******************************************************************************
* Function Name  : UART_9BitByteReceive
* Description    : This function gets a 9 bits data byte from the selected UART.
* Input 1        : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2        : A pointer to the buffer where the data will be stored
* Input 3        : The time-out period value
* Output         : The received data
* Return         : The UARTx.SR register contents
*******************************************************************************/
u16 UART_9BitByteReceive(UART_TypeDef *UARTx, u16 *Data, u8 TimeOut)
{
  u16 wStatus;
  UARTx->TOR=TimeOut;// reload the Timeout counter
  while (!((wStatus=UARTx->SR) & (UART_TimeOutIdle|UART_RxHalfFull|UART_RxBufFull)));// while the UART_RxFIFO is empty and no Timeoutidle
  *Data = (u16)UARTx->RxBUFR; // then read the RxBUFR
  return wStatus;
}

/*******************************************************************************
* Function Name  : UART_DataReceive
* Description    : This function gets 8 bits data bytes from the selected UART.
* Input 1        : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2        : A pointer to the buffer where the data will be stored
* Input 3        : The data length
* Input 4        : The time-out period value
* Output         : The received data
* Return         : The UARTx.SR register contents
*******************************************************************************/
u16 UART_DataReceive(UART_TypeDef *UARTx, u8 *Data, u8 DataLength, u8 TimeOut)
{
  u16 wStatus;
  while(DataLength--)
    wStatus=UART_ByteReceive(UARTx,Data++,TimeOut);
  return wStatus;
}

/*******************************************************************************
* Function Name  : UART_9BitDataReceive
* Description    : This function gets 9 bits data bytes from the selected UART.
* Input 1        : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2        : A pointer to the buffer where the data will be stored
* Input 3        : The data length
* Input 4        : The time-out value
* Output         : The received data
* Return         : The UARTx.SR register contents
*******************************************************************************/
u16 UART_9BitDataReceive(UART_TypeDef *UARTx, u16 *Data, u8 DataLength, u8 TimeOut)
{
  u16 wStatus;
  while(DataLength--)
    wStatus=UART_9BitByteReceive(UARTx,Data++,TimeOut);
  return wStatus;
}

/*******************************************************************************
* Function Name  : UART_StringReceive
* Description    : This function gets 8 bits data bytes from the selected UART.
* Input 1        : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2        : A pointer to the buffer where the string will be stored
* Output         : The received string
* Return         : The UARTx.SR register contents
*******************************************************************************/
u16 UART_StringReceive(UART_TypeDef *UARTx, u8 *Data)
{
  u8 *pSTRING=Data;
  u16 wStatus;
  do
  {
    while (!((wStatus=UARTx->SR) & (UART_RxHalfFull|UART_RxBufFull)));// while the UART_RxFIFO is empty and no Timeoutidle
    *(pSTRING++) = (u8)UARTx->RxBUFR; // then read the RxBUFR
  } while((*(pSTRING - 1)!=0x0D)&(*(pSTRING - 1)!='\0'));
  *(pSTRING - 1)='\0';
  return wStatus;
}

#ifdef USE_SERIAL_PORT
/*******************************************************************************
* Function Name  : sendchar
* Description    : This function sends a character to the selected UART.
* Input 1        : A pointer to the character to send.
* Output         : None
* Return         : None
*******************************************************************************/
void sendchar( char *ch )
{
   #ifdef USE_UART0
     #define  UARTx  UART0
   #endif /* Use_UART0 */

   #ifdef USE_UART1
     #define  UARTx  UART1
   #endif /* Use_UART1 */

   #ifdef USE_UART2
     #define  UARTx  UART2
   #endif /* Use_UART2 */

   #ifdef USE_UART3
     #define  UARTx  UART3
   #endif /* Use_UART3 */

   UART_ByteSend(UARTx,(u8 *)ch);
}
#endif /* USE_SERIAL_PORT */

/******************* (C) COPYRIGHT 2003 STMicroelectronics *****END OF FILE****/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕色av一区二区三区| 中文字幕制服丝袜一区二区三区| 91美女片黄在线观看91美女| 国产xxx精品视频大全| 久久电影网电视剧免费观看| 免费人成精品欧美精品| 麻豆成人免费电影| 九色|91porny| 国产成人在线观看| 91在线精品一区二区| 色综合天天综合网天天看片| 欧美午夜影院一区| 欧美一区2区视频在线观看| 91精品国产美女浴室洗澡无遮挡| 91精品国产手机| 国产亚洲精品超碰| 亚洲伦理在线免费看| 亚洲国产欧美另类丝袜| 首页欧美精品中文字幕| 国产精品综合二区| 欧美在线观看视频在线| 欧美一区二区免费视频| 久久蜜桃一区二区| 亚洲黄色小视频| 丝袜亚洲另类欧美| 丰满放荡岳乱妇91ww| 欧美系列在线观看| 久久久久国产一区二区三区四区| 国产精品久久福利| 日本不卡视频在线观看| 国产精品一区二区久激情瑜伽 | 一区二区三区四区五区视频在线观看| 一区二区在线观看免费视频播放| 首页国产欧美久久| 成人一级片在线观看| 欧美视频一区二区三区在线观看| 精品久久人人做人人爽| 亚洲视频1区2区| 国产在线麻豆精品观看| 欧美日韩一级片在线观看| 久久综合久久鬼色中文字| 亚洲欧美精品午睡沙发| 国产麻豆一精品一av一免费| 欧美伊人久久大香线蕉综合69| 欧美电影免费观看完整版 | 99re66热这里只有精品3直播| 欧美三级日韩在线| 国产精品国产馆在线真实露脸 | 久久亚洲二区三区| 亚洲一二三专区| 成人av动漫网站| 日韩午夜中文字幕| 亚洲一区成人在线| 成人av电影在线| 精品福利av导航| 亚洲国产综合人成综合网站| 波多野结衣的一区二区三区| 日韩欧美区一区二| 日韩激情av在线| 欧洲精品在线观看| 国产欧美一区二区精品久导航| 亚洲国产精品麻豆| 色综合天天综合给合国产| 久久久精品tv| 久热成人在线视频| 91精品在线麻豆| 亚洲综合自拍偷拍| 色久优优欧美色久优优| 中文字幕一区二区三区蜜月| 国产美女娇喘av呻吟久久| 欧美一级黄色大片| 亚洲第一福利视频在线| 在线观看国产91| 夜夜嗨av一区二区三区网页| 91捆绑美女网站| 亚洲日本免费电影| 91蝌蚪porny九色| 一区二区三区四区蜜桃| 99久久国产综合精品色伊| 国产精品美女久久久久久久久 | 亚洲欧洲成人精品av97| 国产成人av一区二区三区在线| www欧美成人18+| 国产一区二区美女| 国产清纯美女被跳蛋高潮一区二区久久w | 国产91色综合久久免费分享| 久久麻豆一区二区| 国产激情精品久久久第一区二区| 国产清纯白嫩初高生在线观看91 | 久久色.com| 国产精品一区二区久激情瑜伽| 久久久.com| 成人av资源站| 亚洲综合激情网| 欧美丰满嫩嫩电影| 久久福利视频一区二区| 国产日产精品一区| 色吧成人激情小说| 天天影视色香欲综合网老头| 91精品蜜臀在线一区尤物| 免费在线观看一区二区三区| 精品福利在线导航| 成人性色生活片| 一区二区久久久久| 欧美一区二区视频在线观看2020 | 中文字幕av免费专区久久| 91在线视频网址| 亚洲18色成人| 久久夜色精品一区| 色久综合一二码| 亚洲va欧美va人人爽午夜| 欧美tickling挠脚心丨vk| 成人av网站大全| 免费欧美高清视频| 亚洲男同性恋视频| 欧美成人a在线| 一本久久a久久免费精品不卡| 日韩成人一区二区三区在线观看| 久久久久国产成人精品亚洲午夜| 一本色道久久综合亚洲aⅴ蜜桃| 日av在线不卡| 亚洲精品一二三四区| 欧美成人一区二区三区片免费 | 亚洲欧美日韩国产综合在线| 欧美一区二区不卡视频| 91毛片在线观看| 国产精品影音先锋| 婷婷久久综合九色综合绿巨人| 国产日韩欧美不卡在线| 538prom精品视频线放| 99视频精品在线| 国产自产2019最新不卡| 亚洲在线视频一区| 国产精品少妇自拍| 久久精品一区二区三区不卡| 在线播放亚洲一区| 色综合天天综合狠狠| 国产成人在线视频网址| 美国欧美日韩国产在线播放| 亚洲一区欧美一区| 国产精品二三区| 国产片一区二区三区| 精品久久久影院| 日韩欧美成人一区| 欧美一区二区视频在线观看2022| 欧美日韩一区久久| 欧美中文字幕久久| 欧美性一区二区| 欧美性感一区二区三区| 在线亚洲精品福利网址导航| 99精品久久免费看蜜臀剧情介绍| 国产乱码精品一区二区三区五月婷 | 亚洲午夜一区二区| 一区二区三区在线免费| 一区二区三区资源| **网站欧美大片在线观看| 成人欧美一区二区三区黑人麻豆 | 美女久久久精品| 老司机精品视频导航| 久草精品在线观看| 国产乱码字幕精品高清av| 麻豆91小视频| 国产精品一卡二卡在线观看| 国产成人高清在线| 99riav一区二区三区| 99久久精品免费看国产| 91国产精品成人| 6080国产精品一区二区| 欧美成人vr18sexvr| 久久久久亚洲蜜桃| 国产精品夫妻自拍| 亚洲成人免费视频| 韩国欧美国产1区| 不卡的av中国片| 日本韩国欧美一区二区三区| 欧美日韩不卡视频| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 日本伊人精品一区二区三区观看方式 | 在线观看一区日韩| 日韩三级精品电影久久久 | 欧亚一区二区三区| 日韩欧美在线影院| 国产欧美视频一区二区| 一区二区免费看| 久久国产三级精品| 91香蕉视频黄| 日韩一区二区三区电影在线观看 | 国产麻豆视频一区二区| 99久久精品情趣| 欧美久久久久久久久| 久久免费电影网| 亚洲综合激情另类小说区| 韩国成人在线视频| 欧美在线免费观看亚洲| 久久精品视频一区二区三区| 亚洲成人免费在线| 91丝袜美女网| 精品福利在线导航| 午夜精彩视频在线观看不卡| 国产馆精品极品|