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

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

?? uart.h

?? AVR單片機模擬USB實現CDC類串行口
?? H
字號:

/* Name: uart.h
 * Project: AVR USB driver for CDC interface on Low-Speed USB
 * Author: Osamu Tamura
 * Creation Date: 2006-06-18
 * Tabsize: 4
 * Copyright: (c) 2006 by Recursion Co., Ltd.
 * License: Proprietary, free under certain conditions. See Documentation.
 */

#ifndef __uart_h_included__
#define __uart_h_included__

#include <avr/io.h> /* for TXEN or TXEN0 resp., if available */

#ifndef uchar
#define uchar   unsigned char
#endif

#ifndef ulong
#define ulong   unsigned long
#endif

#ifndef UART_CFG_HAVE_USART
#if (defined TXEN || defined TXEN0)
#   define UART_CFG_HAVE_USART     1
#else
#   define UART_CFG_HAVE_USART     0
#endif
#endif
/* Define this to 1 if MCU has USART(s). If defined 0, software UART routines are
 * selected. Software UART is supported on ATtiny45 and 85.
 * If not defined: Guess from AVR type.
 */

#ifndef UART_DEFAULT_BPS
#define UART_DEFAULT_BPS     4800
#endif
/* 4800bps is the maximum speed by software UART.
   The baud rate will be automatically configured after opening device anyway.
*/

/* These are the USART port and TXD, RXD bit numbers.
*/
#if UART_CFG_HAVE_USART
/* ATmega8, 48, 88, 168 */
#define UART_CFG_PORTNAME   D
#define UART_CFG_RXD        0
#define UART_CFG_TXD        1

#define	RX_SIZE		256      /* UART receive buffer size (must be 2^n ) <=256 */
#define	TX_SIZE		128      /* UART transmit buffer size (must be 2^n, 16<= ~ <=256 ) */

#if !defined URSEL
//#define	USE_UART_RXD_INTERRUPT	/* enables UART receiver interrupt for high speed transfer */
#endif

#else
/* ATtiny45, 85 */
#define UART_CFG_PORTNAME   B
#define UART_CFG_RXD        5
#define UART_CFG_TXD        1

#define UART_CFG_INVERT     0
/* Define this to 1 if TXD and RXD connected to RS-232C line directly
 */ 

#define	RX_SIZE		64       /* UART receive buffer size (must be 2^n ) <=256 */
#define	TX_SIZE		64       /* UART transmit buffer size (must be 2^n, 16<= ~ <=256 ) */

#endif

#define	RX_MASK		(RX_SIZE-1)
#define	TX_MASK		(TX_SIZE-1)

/* ------------------------------------------------------------------------- */
/* ------------------------ General Purpose Macros ------------------------- */
/* ------------------------------------------------------------------------- */
#define OD_CONCAT(a, b)             a ## b
#define UART_OUTPORT(name)          OD_CONCAT(PORT, name)
#define UART_INPORT(name)           OD_CONCAT(PIN, name)
#define UART_DDRPORT(name)          OD_CONCAT(DDR, name)

#define UART_CFG_PORT     UART_OUTPORT(UART_CFG_PORTNAME)
#define UART_PIN          UART_INPORT(UART_CFG_PORTNAME)
#define UART_DDR          UART_DDRPORT(UART_CFG_PORTNAME)


#ifndef __ASSEMBLER__

/* allow ATmega8 compatibility */
#if defined URSEL
#define UBRR0H    UBRRH
#define UBRR0L    UBRRL
#define UCSR0A    UCSRA
#define UCSR0B    UCSRB
#define UCSR0C    UCSRC
#define UDR0      UDR

/* UCSR0A */
#define RXC0      RXC
#define UDRE0     UDRE
#define FE0       FE
#define DOR0      DOR
#define UPE0      PE
#define U2X0      U2X

/* UCSR0B */
#define RXCIE0    RXCIE
#define UDRIE0    UDRIE
#define RXEN0     RXEN
#define TXEN0     TXEN

/* UCSR0C */
#define UPM00     UPM0
#define USBS0     USBS
#define UPBS0     UPBS
#define UCSZ00    UCSZ0
#endif

/* ------------------------------------------------------------------------- */
/*	---------------------- Type Definition --------------------------------- */
/* ------------------------------------------------------------------------- */
typedef union usbDWord {
    ulong	dword;
    uchar   bytes[4];
} usbDWord_t;


extern uchar    urptr, uwptr, irptr, iwptr;
extern uchar    rx_buf[RX_SIZE], tx_buf[TX_SIZE]; 

extern void uartInit(ulong baudrate, uchar parity, uchar stopbits, uchar databits);
extern void uartPoll(void);
extern uchar uartRxIsBusy(void);

static inline void  uartTxBufAppend(uchar c)
{
uchar   uwnxt;

    uwnxt = (uwptr+1) & TX_MASK;
    if( uwnxt==irptr )
        return;         /* buffer overflow */
    tx_buf[uwptr] = c;
    uwptr = uwnxt;
}

static inline void  uartRxBufAppend(uchar c)
{
uchar   iwnxt;

    iwnxt = (iwptr+1) & RX_MASK;
    if( iwnxt==urptr )
        return;         /* buffer overflow */

    rx_buf[iwptr] = c;
    iwptr = iwnxt;
}

/* The following function returns the amount of bytes available in the TX
 * buffer before we have an overflow.
 */
static inline uchar uartTxBytesFree(void)
{
    return (irptr - uwptr - 1) & TX_MASK;
}

/* The following function sets *ptr to the current read position and returns
 * the number of bytes which can currently be read from this read position.
 */
static inline uchar uartRxBytesAvailable(uchar **ptr)
{
    *ptr = &rx_buf[urptr];
    if(iwptr >= urptr){
        return iwptr - urptr;
    }else{  /* buffer end is between read and write pointer, return continuous range */
        return RX_SIZE - urptr;
    }
}

/* The following function must be called after uartRxBytesAvailable() to
 * remove the bytes from the receiver buffer.
 */
static inline void  uartRxDidReadBytes(uchar numBytes)
{
    urptr = (urptr + numBytes) & RX_MASK;
}


#endif	/*  #ifndef __ASSEMBLER__  */
#endif  /*  __uart_h_included__  */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲色图20p| 国产精品伊人色| 欧美午夜视频网站| 亚洲图片欧美一区| 欧美日韩精品欧美日韩精品| 日韩不卡一二三区| 精品福利一二区| 成人白浆超碰人人人人| 一区二区三区色| 日韩一区二区免费在线观看| 国产乱人伦偷精品视频免下载| 国产日韩欧美高清| 色偷偷久久人人79超碰人人澡| 五月婷婷综合网| 久久综合国产精品| 99精品国产99久久久久久白柏| 有码一区二区三区| 日韩精品一区二区三区中文精品 | 亚洲日本青草视频在线怡红院| 99麻豆久久久国产精品免费| 亚洲午夜在线电影| 欧美精品一区二区久久久| 成人一级视频在线观看| 一区二区三区**美女毛片| 欧美一级免费大片| 成人一区在线看| 污片在线观看一区二区| 国产三级欧美三级日产三级99 | 欧美伊人久久大香线蕉综合69| 日本三级亚洲精品| 中文字幕精品在线不卡| 欧美日韩一区二区三区四区五区| 久久国产视频网| 亚洲美女淫视频| 久久久久久免费毛片精品| 91福利国产精品| 国产精品白丝av| 日韩成人一级大片| 亚洲精品国产精品乱码不99| 欧美zozozo| 日本高清免费不卡视频| 国产在线不卡一区| 亚洲h精品动漫在线观看| 亚洲国产精品传媒在线观看| 欧美色爱综合网| 成人美女视频在线观看| 麻豆国产精品视频| 一区二区久久久| 国产精品视频看| 精品国偷自产国产一区| 88在线观看91蜜桃国自产| 成人av小说网| 国产成人午夜视频| 日韩精品91亚洲二区在线观看| 亚洲人成人一区二区在线观看| 精品国产91亚洲一区二区三区婷婷| 在线观看日韩高清av| 丁香六月综合激情| 久久99热国产| 麻豆中文一区二区| 香蕉乱码成人久久天堂爱免费| 中文字幕日韩一区二区| 久久精品人人做人人综合| 日韩免费看的电影| 91精品国产aⅴ一区二区| 欧美午夜影院一区| 91麻豆免费视频| 91亚洲精品久久久蜜桃网站| zzijzzij亚洲日本少妇熟睡| 国产电影一区在线| 高清日韩电视剧大全免费| 国产麻豆日韩欧美久久| 国产乱码一区二区三区| 激情图片小说一区| 国产最新精品精品你懂的| 精品一区二区三区的国产在线播放| 日韩国产在线一| 蜜桃视频在线观看一区| 另类人妖一区二区av| 美腿丝袜亚洲综合| 精品中文字幕一区二区| 国产精品99久| 国产不卡视频一区| 99久久免费精品高清特色大片| 不卡的看片网站| 99久久精品一区| 一本大道久久a久久精二百 | 免费在线一区观看| 青青国产91久久久久久| 老司机精品视频导航| 久久99国产精品免费网站| 国产一区二区三区四区五区入口| 国产资源精品在线观看| 高清不卡一区二区在线| 99re热这里只有精品免费视频| 色综合天天性综合| 欧美亚洲精品一区| 51午夜精品国产| 久久久久久久av麻豆果冻| 国产精品久99| 亚洲成人av一区| 久久99精品国产91久久来源| 高清beeg欧美| 欧美日韩在线直播| 欧美va亚洲va| 亚洲特级片在线| 天堂va蜜桃一区二区三区漫画版| 久久成人av少妇免费| jvid福利写真一区二区三区| 色综合 综合色| 欧美第一区第二区| 国产精品久久久久久久久久久免费看| 亚洲精品亚洲人成人网在线播放| 午夜日韩在线观看| 国产成a人亚洲精| 欧美日韩一区国产| 国产日韩av一区二区| 午夜久久久久久电影| 国产成人无遮挡在线视频| 日本精品视频一区二区三区| 日韩三级免费观看| 亚洲男同1069视频| 国产一区二区免费视频| 欧美天天综合网| 国产精品情趣视频| 免费人成精品欧美精品| jlzzjlzz欧美大全| 欧美成人精品福利| 亚洲综合另类小说| 岛国一区二区三区| 欧美变态tickle挠乳网站| 亚洲最大色网站| 成人动漫精品一区二区| 久久综合一区二区| 石原莉奈一区二区三区在线观看 | 国产精品综合久久| 欧美三片在线视频观看| 亚洲色图清纯唯美| 国产99久久久久久免费看农村| 欧美另类变人与禽xxxxx| 国产精品国产自产拍高清av| 精品一区二区精品| 69堂亚洲精品首页| 亚洲一区二区黄色| 97se亚洲国产综合在线| 久久综合资源网| 久久精品国产**网站演员| 欧美性猛交一区二区三区精品| 亚洲国产经典视频| 国产精品一区二区久激情瑜伽 | 欧美日韩www| 亚洲伦理在线精品| av激情成人网| 中文字幕欧美三区| 国产精品综合网| 久久免费视频一区| 毛片av一区二区| 日韩免费视频一区| 奇米精品一区二区三区四区 | 亚洲男人的天堂在线观看| 成人蜜臀av电影| 中文字幕乱码一区二区免费| 国产精品性做久久久久久| 亚洲精品在线免费观看视频| 精品一区二区三区免费播放| 亚洲精品一区二区三区福利| 青青草精品视频| 日韩欧美国产麻豆| 久久精品国产精品青草| 精品捆绑美女sm三区| 精品在线一区二区| 精品久久久久av影院| 精品无码三级在线观看视频| 欧美成人精精品一区二区频| 激情图片小说一区| 国产精品视频看| 91麻豆国产福利精品| 一区二区三区欧美日韩| 在线观看中文字幕不卡| 亚洲mv大片欧洲mv大片精品| 欧美日韩国产一区二区三区地区| 午夜一区二区三区在线观看| 欧美日韩卡一卡二| 久久精品国产成人一区二区三区| 久久婷婷国产综合精品青草| 国产成人精品三级麻豆| 国产精品视频你懂的| 欧美性色欧美a在线播放| 蜜桃av噜噜一区| 久久久国产精品午夜一区ai换脸| 盗摄精品av一区二区三区| 亚洲另类春色国产| 777午夜精品免费视频| 国产一区二区三区久久久| 国产精品免费观看视频| 精品视频1区2区| 国产一区二区精品久久99| 中文字幕日韩精品一区| 欧美区一区二区三区| 国产精品正在播放|