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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? asmcommon.inc

?? AVR單片機(jī)模擬USB實(shí)現(xiàn)CDC類串行口
?? INC
字號(hào):
/* Name: asmcommon.inc * Project: AVR USB driver * Author: Christian Starkjohann * Creation Date: 2007-11-05 * Tabsize: 4 * Copyright: (c) 2007 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt) or proprietary (CommercialLicense.txt) * Revision: $Id$ *//* Do not link this file! Link usbdrvasm.S instead, which includes the * appropriate implementation! *//*General Description:This file contains assembler code which is shared among the USB driverimplementations for different CPU cocks. Since the code must be insertedin the middle of the module, it's split out into this file and #included.Jump destinations called from outside:    sofError: Called when no start sequence was found.    se0: Called when a package has been successfully received.    overflow: Called when receive buffer overflows.    doReturn: Called after sending data.Outside jump destinations used by this module:    waitForJ: Called to receive an already arriving packet.    sendAckAndReti:    sendNakAndReti:    sendCntAndReti:    usbSendAndReti:The following macros must be defined before this file is included:    .macro POP_STANDARD    .endm    .macro POP_RETI    .endm*/#define token   x1overflow:    ldi     x2, 1<<USB_INTR_PENDING_BIT    USB_STORE_PENDING(x2)       ; clear any pending interruptsignorePacket:    clr     token    rjmp    storeTokenAndReturn;----------------------------------------------------------------------------; Processing of received packet (numbers in brackets are cycles after center of SE0);----------------------------------------------------------------------------;This is the only non-error exit point for the software receiver loop;we don't check any CRCs here because there is no time left.se0:    subi    cnt, USB_BUFSIZE    ;[5]    neg     cnt                 ;[6]    sub     YL, cnt             ;[7]    sbci    YH, 0               ;[8]    ldi     x2, 1<<USB_INTR_PENDING_BIT ;[9]    USB_STORE_PENDING(x2)       ;[10] clear pending intr and check flag later. SE0 should be over.    ld      token, y            ;[11]    cpi     token, USBPID_DATA0 ;[13]    breq    handleData          ;[14]    cpi     token, USBPID_DATA1 ;[15]    breq    handleData          ;[16]    lds     shift, usbDeviceAddr;[17]    ldd     x2, y+1             ;[19] ADDR and 1 bit endpoint number    lsl     x2                  ;[21] shift out 1 bit endpoint number    cpse    x2, shift           ;[22]    rjmp    ignorePacket        ;[23]/* only compute endpoint number in x3 if required later */#if USB_CFG_HAVE_INTRIN_ENDPOINT || USB_CFG_IMPLEMENT_FN_WRITEOUT    ldd     x3, y+2             ;[24] endpoint number + crc    rol     x3                  ;[26] shift in LSB of endpoint#endif    cpi     token, USBPID_IN    ;[27]    breq    handleIn            ;[28]    cpi     token, USBPID_SETUP ;[29]    breq    handleSetupOrOut    ;[30]    cpi     token, USBPID_OUT   ;[31]    brne    ignorePacket        ;[32] must be ack, nak or whatever;   rjmp    handleSetupOrOut    ; fallthrough;Setup and Out are followed by a data packet two bit times (16 cycles) after;the end of SE0. The sync code allows up to 40 cycles delay from the start of;the sync pattern until the first bit is sampled. That's a total of 56 cycles.handleSetupOrOut:               ;[32]#if USB_CFG_IMPLEMENT_FN_WRITEOUT   /* if we have data for endpoint != 0, set usbCurrentTok to address */    andi    x3, 0xf             ;[32]    breq    storeTokenAndReturn ;[33]    mov     token, x3           ;[34] indicate that this is endpoint x OUT#endifstoreTokenAndReturn:    sts     usbCurrentTok, token;[35]doReturn:    POP_STANDARD                ;[37] 12...16 cycles    USB_LOAD_PENDING(YL)        ;[49]    sbrc    YL, USB_INTR_PENDING_BIT;[50] check whether data is already arriving    rjmp    waitForJ            ;[51] save the pops and pushes -- a new interrupt is already pendingsofError:    POP_RETI                    ;macro call    retihandleData:    lds     token, usbCurrentTok;[18]    tst     token               ;[20]    breq    doReturn            ;[21]    lds     x2, usbRxLen        ;[22]    tst     x2                  ;[24]    brne    sendNakAndReti      ;[25]; 2006-03-11: The following two lines fix a problem where the device was not; recognized if usbPoll() was called less frequently than once every 4 ms.    cpi     cnt, 4              ;[26] zero sized data packets are status phase only -- ignore and ack    brmi    sendAckAndReti      ;[27] keep rx buffer clean -- we must not NAK next SETUP    sts     usbRxLen, cnt       ;[28] store received data, swap buffers    sts     usbRxToken, token   ;[30]    lds     x2, usbInputBufOffset;[32] swap buffers    ldi     cnt, USB_BUFSIZE    ;[34]    sub     cnt, x2             ;[35]    sts     usbInputBufOffset, cnt;[36] buffers now swapped    rjmp    sendAckAndReti      ;[38] 40 + 17 = 57 until SOPhandleIn:;We don't send any data as long as the C code has not processed the current;input data and potentially updated the output data. That's more efficient;in terms of code size than clearing the tx buffers when a packet is received.    lds     x1, usbRxLen        ;[30]    cpi     x1, 1               ;[32] negative values are flow control, 0 means "buffer free"    brge    sendNakAndReti      ;[33] unprocessed input packet?    ldi     x1, USBPID_NAK      ;[34] prepare value for usbTxLen#if USB_CFG_HAVE_INTRIN_ENDPOINT    andi    x3, 0xf             ;[35] x3 contains endpoint    brne    handleIn1           ;[36]#endif    lds     cnt, usbTxLen       ;[37]    sbrc    cnt, 4              ;[39] all handshake tokens have bit 4 set    rjmp    sendCntAndReti      ;[40] 42 + 16 = 58 until SOP    sts     usbTxLen, x1        ;[41] x1 == USBPID_NAK from above    ldi     YL, lo8(usbTxBuf)   ;[43]    ldi     YH, hi8(usbTxBuf)   ;[44]    rjmp    usbSendAndReti      ;[45] 57 + 12 = 59 until SOP; Comment about when to set usbTxLen to USBPID_NAK:; We should set it back when we receive the ACK from the host. This would; be simple to implement: One static variable which stores whether the last; tx was for endpoint 0 or 1 and a compare in the receiver to distinguish the; ACK. However, we set it back immediately when we send the package,; assuming that no error occurs and the host sends an ACK. We save one byte; RAM this way and avoid potential problems with endless retries. The rest of; the driver assumes error-free transfers anyway.#if USB_CFG_HAVE_INTRIN_ENDPOINT    /* placed here due to relative jump range */handleIn1:                      ;[38]#if USB_CFG_HAVE_INTRIN_ENDPOINT3; 2006-06-10 as suggested by O.Tamura: support second INTR IN / BULK IN endpoint    cpi     x3, USB_CFG_EP3_NUMBER;[38]    breq    handleIn3           ;[39]#endif    lds     cnt, usbTxLen1      ;[40]    sbrc    cnt, 4              ;[42] all handshake tokens have bit 4 set    rjmp    sendCntAndReti      ;[43] 47 + 16 = 63 until SOP    sts     usbTxLen1, x1       ;[44] x1 == USBPID_NAK from above    ldi     YL, lo8(usbTxBuf1)  ;[46]    ldi     YH, hi8(usbTxBuf1)  ;[47]    rjmp    usbSendAndReti      ;[48] 50 + 12 = 62 until SOP#endif#if USB_CFG_HAVE_INTRIN_ENDPOINT && USB_CFG_HAVE_INTRIN_ENDPOINT3handleIn3:    lds     cnt, usbTxLen3      ;[41]    sbrc    cnt, 4              ;[43]    rjmp    sendCntAndReti      ;[44] 49 + 16 = 65 until SOP    sts     usbTxLen3, x1       ;[45] x1 == USBPID_NAK from above    ldi     YL, lo8(usbTxBuf3)  ;[47]    ldi     YH, hi8(usbTxBuf3)  ;[48]    rjmp    usbSendAndReti      ;[49] 51 + 12 = 63 until SOP#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久精品麻豆| 日韩精品电影一区亚洲| 国产伦精品一区二区三区视频青涩| 欧美日韩一级二级| 视频一区视频二区中文| 欧美精品v日韩精品v韩国精品v| 香蕉久久夜色精品国产使用方法| 911精品产国品一二三产区| 日韩av二区在线播放| 精品久久国产老人久久综合| 国产精品夜夜嗨| 亚洲欧美色图小说| 欧美日本一区二区三区四区| 免费高清在线一区| 国产精品色哟哟网站| 欧美亚洲禁片免费| 狠狠狠色丁香婷婷综合久久五月| 国产日产精品一区| 欧美亚洲一区二区在线观看| 男人的天堂亚洲一区| 久久九九久久九九| 欧洲av在线精品| 另类中文字幕网| 亚洲人成网站色在线观看| 欧美一区二区三区系列电影| 国产一区二区三区电影在线观看| 国产精品久久久久aaaa| 欧美日韩激情在线| 丁香激情综合五月| 手机精品视频在线观看| 日本一区二区三区高清不卡| 欧美性猛交xxxx黑人交| 狠狠色狠狠色综合| 一区二区三区av电影| 欧美成人女星排行榜| 色呦呦网站一区| 欧美自拍偷拍一区| 日韩欧美国产一二三区| 在线观看成人小视频| 国产精品国产精品国产专区不蜜| 精品视频资源站| 91精品国产综合久久久久| 国产精品一线二线三线精华| 1000部国产精品成人观看| www精品美女久久久tv| 精品国产区一区| 欧美一区日韩一区| 欧美成人一区二区三区在线观看| 免费成人在线网站| 日韩美女视频在线| av电影在线观看一区| 日韩国产精品久久久久久亚洲| 日韩美女视频一区二区在线观看| 99视频精品全部免费在线| 亚洲国产精品久久人人爱 | 亚洲国产精品久久久男人的天堂 | 日本精品一区二区三区高清 | 91老师国产黑色丝袜在线| 亚洲国产综合视频在线观看| 91精品免费在线观看| 国产成人av一区二区| 天天综合网 天天综合色| 国产成人精品在线看| 欧美日韩免费观看一区三区| 91精品国产综合久久久蜜臀图片 | 日本一区二区免费在线观看视频 | 日韩美一区二区三区| 精品日韩99亚洲| 亚洲与欧洲av电影| 另类小说综合欧美亚洲| 成人福利视频在线| 欧美丰满少妇xxxxx高潮对白| 91精品国产综合久久精品麻豆 | 91久久精品日日躁夜夜躁欧美| 欧美三级电影网| 亚洲激情自拍偷拍| 国产精品一线二线三线精华| 欧美美女黄视频| 国产精品国产三级国产aⅴ中文| 亚洲va韩国va欧美va精品| 91久久一区二区| 婷婷丁香久久五月婷婷| 国产区在线观看成人精品| 懂色av一区二区夜夜嗨| 中文字幕一区二区不卡| 精品免费一区二区三区| 欧美性生活久久| 成人一区二区三区| 免费xxxx性欧美18vr| 国产精品无遮挡| 久久久综合网站| 欧美福利视频一区| 在线观看日韩电影| 91麻豆免费视频| 国产精品一区二区视频| 亚洲二区视频在线| 亚洲综合色在线| 国产精品日韩成人| 国产精品国产精品国产专区不蜜 | 久久国产麻豆精品| 亚洲精品高清视频在线观看| 国产拍揄自揄精品视频麻豆| 日韩美女视频在线| 7799精品视频| 欧美亚洲国产一区二区三区 | 丝袜亚洲另类丝袜在线| 亚洲视频在线一区二区| 久久久久久夜精品精品免费| 91精品国产欧美一区二区| 欧美精品在线观看一区二区| 91视频你懂的| 色婷婷综合久久久中文字幕| 欧洲中文字幕精品| 精品国产免费一区二区三区香蕉| 日韩欧美亚洲国产精品字幕久久久| 在线免费亚洲电影| 欧美久久久久中文字幕| 色综合天天综合网国产成人综合天| 成人av在线资源| 日韩免费在线观看| 在线影院国内精品| 久久国产精品99精品国产| 国产精品久久久久久福利一牛影视| 在线观看亚洲精品视频| 国内久久精品视频| 亚洲第一二三四区| 综合久久久久久| 99久久精品免费精品国产| 中文字幕欧美国产| 久久免费美女视频| 久久久亚洲高清| 欧美日韩亚州综合| 91免费看`日韩一区二区| 黄网站免费久久| 久久精品理论片| 日韩国产一二三区| 性感美女极品91精品| 欧美变态口味重另类| 国产亚洲欧美日韩在线一区| 91精品国产综合久久久久久漫画 | 国产精品―色哟哟| 久久久亚洲高清| 国产精品免费久久久久| 国产欧美日韩麻豆91| 久久精品视频在线免费观看| 精品国产免费一区二区三区香蕉| 欧美高清一级片在线| 天涯成人国产亚洲精品一区av| 亚洲欧美日韩国产中文在线| 韩国av一区二区三区四区| 国产一区二区三区综合| 久久se这里有精品| 国产在线视频不卡二| 国产真实乱子伦精品视频| 国产成人在线观看免费网站| 99久久精品一区二区| 欧美亚洲国产一区在线观看网站| 91亚洲资源网| ●精品国产综合乱码久久久久| 国产亚洲成年网址在线观看| 国产在线不卡视频| 91网站最新地址| 欧美精品久久久久久久久老牛影院| 91精品国产色综合久久不卡电影| 久久综合九色综合欧美98| 亚洲视频 欧洲视频| 蜜桃视频第一区免费观看| 不卡的av网站| 欧美tickling挠脚心丨vk| 欧美日韩亚洲另类| 色综合久久综合网| 国产精品久久久久9999吃药| 成人免费av在线| 777色狠狠一区二区三区| 国产精品国产三级国产aⅴ中文| 午夜精品久久久久久久| 国产一区二区不卡在线| 欧美撒尿777hd撒尿| 中文字幕在线不卡| 丁香婷婷深情五月亚洲| 91伊人久久大香线蕉| 在线欧美日韩国产| 国产精品毛片久久久久久久| 成人av在线一区二区三区| 精品国产乱码久久久久久闺蜜 | 麻豆精品在线播放| 国产亚洲欧美色| 欧美三级日韩三级| 麻豆成人久久精品二区三区红| 中文久久乱码一区二区| 欧美日韩精品一区视频| 丁香六月综合激情| 国产在线国偷精品产拍免费yy| 91麻豆精品久久久久蜜臀| 久久成人综合网| 国产欧美一区二区三区在线老狼 | 亚洲成人午夜电影| 日韩视频一区在线观看| 91日韩精品一区| 亚洲欧美韩国综合色|