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

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

?? serial.c

?? 深圳英蓓特公司LPC23XX開發板配套光盤示例程序。
?? C
字號:
/*----------------------------------------------------------------------------
 *      Name:    serial.c
 *      Purpose: serial port handling
 *      Version: V1.00
 *----------------------------------------------------------------------------
 *      This file is part of the uVision/ARM development tools.
 *      This software may only be used under the terms of a valid, current,
 *      end user licence from KEIL for a compatible version of KEIL software
 *      development tools. Nothing else gives you the right to use it.
 *
 *      Copyright (c) 2005-2007 Keil Software.
 *---------------------------------------------------------------------------*/

#include "type.h"
#include <LPC23xx.H>                                  /* LPC23xx definitions */
#include "serial.h"

#define UART1                            /* Use UART 1  */

#ifdef UART0                             /* If UART 0 is used */
  #define UxFCR  U0FCR
  #define UxFDR  U0FDR
  #define UxLCR  U0LCR
  #define UxDLL  U0DLL
  #define UxDLM  U0DLM
  #define UxLSR  U0LSR
  #define UxMSR  U0MSR
  #define UxTHR  U0THR
  #define UxRBR  U0RBR
#elif defined(UART1)                     /* If UART 1 is used */
  #define UxFCR  U1FCR
  #define UxFDR  U1FDR
  #define UxLCR  U1LCR
  #define UxDLL  U1DLL
  #define UxDLM  U1DLM
  #define UxLSR  U1LSR
  #define UxMSR  U1MSR
  #define UxTHR  U1THR
  #define UxRBR  U1RBR
#endif

/*----------------------------------------------------------------------------
  initialize the buffer
 *---------------------------------------------------------------------------*/
void buf_Init (buf_t *buf, char *buffer) {
  buf->in  = 0;
  buf->out = 0;
  buf->buf = buffer;
}
 
/*----------------------------------------------------------------------------
  put a character into the buffer
 *---------------------------------------------------------------------------*/
BOOL buf_Put (buf_t *buf, char c) {
  int next;

  next = (buf->in + 1) % SER_BUF_SIZE;   /* check if space is available */
  if (next == buf->out) {                /* buffer full */
	return (FALSE);
  }

  buf->buf[buf->in] = c;
  buf->in = next;

  return (TRUE);
}


/*----------------------------------------------------------------------------
  get a character from the buffer
 *---------------------------------------------------------------------------*/
BOOL buf_Get (buf_t *buf, char *c) {
  int next;

  if (buf->in == buf->out) {                   /* check if data is available */
    return (FALSE);
  }

  next = (buf->out + 1) % SER_BUF_SIZE;

  *c = buf->buf[buf->out];
  buf->out = next;

  return (TRUE);
}


/*----------------------------------------------------------------------------
  check if space is in the buffer
 *---------------------------------------------------------------------------*/
int buf_Free (buf_t *buf) {
  int used;

  used = (SER_BUF_SIZE + buf->in - buf->out) % SER_BUF_SIZE;
  
  return (SER_BUF_SIZE - 1 - used);
}


/*----------------------------------------------------------------------------
  set the line coding
 *---------------------------------------------------------------------------*/
void ser_SetLineCoding (DWORD baudrate, BYTE databits, BYTE parity, BYTE stopbits) {
  BYTE  lcr_p, lcr_s, lcr_d;
  DWORD dll;

  switch (databits) {
    case 5:                              /* 5 Data bits   */
      lcr_d = 0x00;
    break;
    case 6:                              /* 6 Data bits   */
      lcr_d = 0x01;
    break;
    case 7:                              /* 7 Data bits   */
      lcr_d = 0x02;
    break;
    case 8:                              /* 8 Data bits   */
    default:
      lcr_d = 0x03;
    break;
  }

  switch (stopbits) {
    case 1:                              /* 1,5 Stop bits */
    case 2:                              /* 2   Stop bits */
      lcr_s = 0x04;
    break;
    case 0:                              /* 1   Stop bit  */
    default:
      lcr_s = 0x00;
    break;
  }

  switch (parity) {
    case 1:                              /* Parity Odd    */
      lcr_p = 0x08;
    break;
    case 2:                              /* Parity Even   */
      lcr_p = 0x18;
    break;
    case 3:                              /* Parity Mark   */
      lcr_p = 0x28;
    break;
    case 4:                              /* Parity Space  */
      lcr_p = 0x38;
    break;
    case 0:                              /* Parity None   */
    default:
      lcr_p = 0x00;
    break;
  }

  /* Note that the pclk is 24,0 MHz.  (48.0 MHz / 2)         */
  /* 24 MHz PCLK generates also rates for 115200, 57600 baud */
  dll = ((24000000UL / 16UL) ) / baudrate;

  UxFDR = 0x00;                          /* Fractional divider not used      */
  UxLCR = 0x80 | lcr_d | lcr_p | lcr_s;  /* Data bits, Parity,   Stop bit    */
  UxDLL = dll;                           /* Baud Rate @ 24 MHZ PCLK          */
  UxDLM = (dll >> 8);                    /* High divisor latch               */
  UxLCR = 0x00 | lcr_d | lcr_p | lcr_s;  /* DLAB = 0                         */
}


/*----------------------------------------------------------------------------
  initialize the serial interface
 *---------------------------------------------------------------------------*/
void ser_Init (void) {                   /* Initialize Serial Interface      */

  #ifdef UART0
    PINSEL0 |= 0x00000050;               /* Enable TxD0 and RxD0             */
  #elif defined (UART1)
    PINSEL0 |= 0x40000000;               /* Enable TxD1                      */
    PINSEL1 |= 0x00000001;               /* Enable RxD1                      */
  #endif

  ser_SetLineCoding (9600, 8, 0, 0);     /* set the initial LineCoding       */ 
}


/*----------------------------------------------------------------------------
  read the line status register
 *---------------------------------------------------------------------------*/
unsigned char ser_GetLSR (void) {
  return (UxLSR);
}


/*----------------------------------------------------------------------------
  read the modem status register
 *---------------------------------------------------------------------------*/
unsigned char ser_GetMSR (void) {
  return (UxMSR);
}


/*----------------------------------------------------------------------------
  read a character from serial interface
 *---------------------------------------------------------------------------*/
int ser_GetChar (void) {

  while (!(UxLSR & 0x01));

  return (UxRBR);
}


/*----------------------------------------------------------------------------
  put a caracter to the serial interface
 *---------------------------------------------------------------------------*/
int ser_PutChar (int ch) {

  if (ch == '\n')  {
	while (!(U0LSR & 0x20));
	UxTHR = '\r';                          /* output CR */
  }
  while (!(UxLSR & 0x20));

  return (UxTHR = ch);
}


/*----------------------------------------------------------------------------
  put a string to the serial interface
 *---------------------------------------------------------------------------*/
int ser_PutString (const char *s) {

  while (*s) {
    ser_PutChar(*s++);
  }
  ser_PutChar('\n');

  return (TRUE);
}


/*----------------------------------------------------------------------------
  check if a character is available at the serial interface
 *---------------------------------------------------------------------------*/
BOOL ser_AvailChar (void) {

  if ((UxLSR & 0x01) == 1)
    return (TRUE);
  else
    return (FALSE);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产首页在线观看| 51久久夜色精品国产麻豆| 国产精品少妇自拍| 欧美日韩亚洲高清一区二区| 精品一区二区三区蜜桃| 国产在线视频一区二区| 午夜精品久久久久久久久久| 香蕉影视欧美成人| 国产精品一二三| 国产人久久人人人人爽| 亚洲欧洲日韩一区二区三区| 国产成人综合在线| 中文字幕精品三区| 91论坛在线播放| 三级成人在线视频| 91精品在线观看入口| 日韩avvvv在线播放| 久久综合九色综合97_久久久| 国产一区二区美女诱惑| 欧美精品一区二区在线观看| 裸体一区二区三区| 日韩欧美一级在线播放| 久久国产精品免费| 2021国产精品久久精品 | 久久男人中文字幕资源站| 亚洲福利一区二区三区| 91九色最新地址| 亚洲欧洲三级电影| av激情成人网| 国产精品伦一区| 五月婷婷另类国产| 色综合天天综合狠狠| 久久亚洲欧美国产精品乐播| 99re热视频精品| 国产精品女主播av| 亚洲高清久久久| 成人av在线一区二区| 日韩三级av在线播放| 亚洲国产精品一区二区尤物区| 国产高清不卡一区二区| 久久综合一区二区| 黄色日韩网站视频| 久久精品夜色噜噜亚洲a∨| 国产视频一区二区三区在线观看| 国产婷婷色一区二区三区四区 | 国产高清精品在线| 18成人在线视频| 欧美日韩1234| 96av麻豆蜜桃一区二区| 视频精品一区二区| 一级精品视频在线观看宜春院| 精品噜噜噜噜久久久久久久久试看| 欧美日韩精品欧美日韩精品一| 本田岬高潮一区二区三区| 国产成人高清视频| 麻豆精品一区二区三区| 亚洲一区二区三区四区的| 亚洲国产视频一区二区| 日本亚洲电影天堂| 亚洲成人av一区二区三区| 日韩精品一区二区三区在线观看| 国产一区日韩二区欧美三区| 亚洲免费观看在线视频| 2020国产精品| 一本大道久久a久久精品综合| 午夜久久久影院| 自拍偷拍国产亚洲| 国产精品美女久久久久久久网站| 在线观看区一区二| 成人国产精品视频| 国产精品12区| 日韩经典一区二区| 国产视频一区在线观看| 色噜噜狠狠色综合欧洲selulu| 亚洲日本va在线观看| 亚洲午夜精品网| 久久精品国产99| 欧美日韩一区在线| 五月综合激情日本mⅴ| 日韩精品专区在线| av电影天堂一区二区在线观看| 中文一区在线播放| 91精品国产一区二区人妖| 色女孩综合影院| 91久久精品一区二区二区| 99视频一区二区三区| 黄色资源网久久资源365| 91精品免费观看| 国产福利一区二区三区视频| 中文字幕 久热精品 视频在线| 欧美一区二区女人| 欧美tickling网站挠脚心| 久久人人97超碰com| 国产精品女主播av| 国产高清亚洲一区| caoporm超碰国产精品| 欧美剧情片在线观看| 中文字幕亚洲不卡| 国产美女一区二区三区| 精品国产一区二区三区不卡| 日本不卡一二三| 日韩视频一区二区| 日韩av成人高清| 久久久影视传媒| 国产久卡久卡久卡久卡视频精品| 精品国产不卡一区二区三区| 日本午夜精品视频在线观看| 色www精品视频在线观看| 成人av网站免费观看| 欧美日韩dvd在线观看| 亚洲成人免费在线观看| 成人禁用看黄a在线| 欧美麻豆精品久久久久久| 国产精品蜜臀av| 久久国产日韩欧美精品| av电影一区二区| 日韩一区二区三区免费看| 久久久影院官网| 九色porny丨国产精品| 国产91精品一区二区麻豆亚洲| 一本到不卡免费一区二区| 正在播放亚洲一区| 国产精品传媒入口麻豆| 奇米影视一区二区三区小说| 精品美女在线播放| 成人激情文学综合网| 青青青爽久久午夜综合久久午夜| 久久精品久久99精品久久| 欧美在线一区二区三区| 亚洲欧美综合另类在线卡通| 成人av资源网站| 亚洲乱码精品一二三四区日韩在线| av中文字幕一区| 亚洲高清不卡在线| 亚洲欧美日韩电影| 欧美不卡一二三| 日本高清不卡一区| 国产成人亚洲综合色影视 | 日韩一区二区精品在线观看| 亚洲午夜日本在线观看| 日韩一区二区中文字幕| 国产激情视频一区二区在线观看| 中文字幕的久久| 精品人在线二区三区| 日本高清免费不卡视频| 久久99国内精品| 国产亚洲精品资源在线26u| 日本在线不卡视频一二三区| 欧美日韩国产天堂| 免费av成人在线| 久久噜噜亚洲综合| 一区二区三区中文字幕精品精品 | 中文字幕在线播放不卡一区| 日韩成人av影视| 韩国v欧美v亚洲v日本v| 欧美日韩国产高清一区二区| 午夜私人影院久久久久| 欧美日韩国产综合一区二区三区 | 亚洲精品在线观| 亚洲一区二区偷拍精品| 91视频在线观看免费| 亚洲欧美电影一区二区| 色婷婷av一区二区三区之一色屋| 亚洲蜜臀av乱码久久精品| 日韩视频在线观看一区二区| 蜜臀久久99精品久久久画质超高清| 久久精品水蜜桃av综合天堂| 欧美影院午夜播放| 亚洲国产精品一区二区www| 日韩欧美国产午夜精品| 欧美日韩中文字幕一区二区| 国产69精品久久99不卡| 国产麻豆精品theporn| 国产美女在线精品| 91电影在线观看| 日韩一区二区免费高清| 精品久久一区二区三区| 中文字幕色av一区二区三区| 亚洲一区二区五区| 亚洲乱码中文字幕| 蜜桃久久久久久久| 99久久伊人精品| 欧美视频中文一区二区三区在线观看| 国产成人8x视频一区二区 | 国产三级久久久| 在线成人免费观看| 欧美唯美清纯偷拍| av网站一区二区三区| 日韩精品每日更新| 五月天精品一区二区三区| 亚洲成人你懂的| ...xxx性欧美| 欧美激情一区在线观看| 欧美一区二区不卡视频| 91精品国产91综合久久蜜臀| 欧美一卡在线观看| 欧美狂野另类xxxxoooo| 欧美日韩精品欧美日韩精品一| 欧美性淫爽ww久久久久无| 成a人片亚洲日本久久|