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

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

?? usbdrvasm12.s

?? AVR_Meag8單片機控制三基色的LED
?? S
?? 第 1 頁 / 共 2 頁
字號:
doReturn:    pop     cnt    pop     x3    pop     x2    pop     x1    pop     shift    pop     YHsofError:    pop     YL    out     SREG, YL    pop     YL    reti#if USB_CFG_HAVE_INTRIN_ENDPOINT && USB_CFG_HAVE_INTRIN_ENDPOINT3handleIn3:                      ;1 [38] (branch taken)    lds     cnt, usbTxLen3      ;2 [40]    sbrc    cnt, 4              ;2 [42]    rjmp    sendCntAndReti      ;0 43 + 17 = 60 until SOP    sts     usbTxLen3, x1       ;2 [44] x1 == USBPID_NAK from above    ldi     YL, lo8(usbTxBuf3)  ;1 [45]    ldi     YH, hi8(usbTxBuf3)  ;1 [46]    rjmp    usbSendAndReti      ;2 [48] + 13 = 61 until SOP (violates the spec by 1 cycle)#endif;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:               ;1 [29] (branch taken)#if USB_CFG_IMPLEMENT_FN_WRITEOUT   /* if we have data for second OUT endpoint, set usbCurrentTok to -1 */    sbrc    x3, 7               ;1 [30] skip if endpoint 0    ldi     token, -1           ;1 [31] indicate that this is endpoint 1 OUT#endif    sts     usbCurrentTok, token;2 [33]    pop     cnt                 ;2 [35]    pop     x3                  ;2 [37]    pop     x2                  ;2 [39]    pop     x1                  ;2 [41]    pop     shift               ;2 [43]    pop     YH                  ;2 [45]    in      YL, USB_INTR_PENDING;1 [46]    sbrc    YL, USB_INTR_PENDING_BIT;1 [47] check whether data is already arriving    rjmp    waitForJ            ;2 [49] save the pops and pushes -- a new interrupt is aready pending    rjmp    sofError            ;2 not an error, but it does the pops and reti we wanthandleData:                     ;1 [15] (branch taken)    lds     token, usbCurrentTok;2 [17]    tst     token               ;1 [18]    breq    doReturn            ;1 [19]    lds     x2, usbRxLen        ;2 [21]    tst     x2                  ;1 [22]    brne    sendNakAndReti      ;1 [23]; 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              ;1 [24] zero sized data packets are status phase only -- ignore and ack    brmi    sendAckAndReti      ;1 [25] keep rx buffer clean -- we must not NAK next SETUP    sts     usbRxLen, cnt       ;2 [27] store received data, swap buffers    sts     usbRxToken, token   ;2 [29]    lds     x2, usbInputBufOffset;2 [31] swap buffers    ldi     cnt, USB_BUFSIZE    ;1 [32]    sub     cnt, x2             ;1 [33]    sts     usbInputBufOffset, cnt;2 [35] buffers now swapped    rjmp    sendAckAndReti      ;2 [37] + 19 = 56 until SOPhandleIn:                       ;1 [25] (branch taken);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        ;2 [27]    cpi     x1, 1               ;1 [28] negative values are flow control, 0 means "buffer free"    brge    sendNakAndReti      ;1 [29] unprocessed input packet?    ldi     x1, USBPID_NAK      ;1 [30] prepare value for usbTxLen#if USB_CFG_HAVE_INTRIN_ENDPOINT    sbrc    x3, 7               ;2 [33] x3 contains addr + endpoint    rjmp    handleIn1           ;0#endif    lds     cnt, usbTxLen       ;2 [34]    sbrc    cnt, 4              ;2 [36] all handshake tokens have bit 4 set    rjmp    sendCntAndReti      ;0 37 + 17 = 54 until SOP    sts     usbTxLen, x1        ;2 [38] x1 == USBPID_NAK from above    ldi     YL, lo8(usbTxBuf)   ;1 [39]    ldi     YH, hi8(usbTxBuf)   ;1 [40]    rjmp    usbSendAndReti      ;2 [42] + 14 = 56 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:                      ;1 [33] (branch taken)#if USB_CFG_HAVE_INTRIN_ENDPOINT3; 2006-06-10 as suggested by O.Tamura: support second INTR IN / BULK IN endpoint    ldd     x2, y+2             ;2 [35]    sbrc    x2, 0               ;2 [37]    rjmp    handleIn3           ;0#endif    lds     cnt, usbTxLen1      ;2 [39]    sbrc    cnt, 4              ;2 [41] all handshake tokens have bit 4 set    rjmp    sendCntAndReti      ;0 42 + 17 = 59 until SOP    sts     usbTxLen1, x1       ;2 [43] x1 == USBPID_NAK from above    ldi     YL, lo8(usbTxBuf1)  ;1 [44]    ldi     YH, hi8(usbTxBuf1)  ;1 [45]    rjmp    usbSendAndReti      ;2 [47] + 13 = 60 until SOP#endif;----------------------------------------------------------------------------; Transmitting data;----------------------------------------------------------------------------bitstuff0:                  ;1 (for branch taken)    eor     x1, x4          ;1    ldi     x2, 0           ;1    out     USBOUT, x1      ;1 <-- out    rjmp    didStuff0       ;2 branch back 2 cycles earlierbitstuff1:                  ;1 (for branch taken)    eor     x1, x4          ;1    rjmp    didStuff1       ;2 we know that C is clear, jump back to do OUT and ror 0 into x2bitstuff2:                  ;1 (for branch taken)    eor     x1, x4          ;1    rjmp    didStuff2       ;2 jump back 4 cycles earlier and do out and ror 0 into x2bitstuff3:                  ;1 (for branch taken)    eor     x1, x4          ;1    rjmp    didStuff3       ;2 jump back earlier and ror 0 into x2bitstuff4:                  ;1 (for branch taken)    eor     x1, x4          ;1    ldi     x2, 0           ;1    out     USBOUT, x1      ;1 <-- out    rjmp    didStuff4       ;2 jump back 2 cycles earliersendNakAndReti:                 ;0 [-19] 19 cycles until SOP    ldi     x3, USBPID_NAK      ;1 [-18]    rjmp    usbSendX3           ;2 [-16]sendAckAndReti:                 ;0 [-19] 19 cycles until SOP    ldi     x3, USBPID_ACK      ;1 [-18]    rjmp    usbSendX3           ;2 [-16]sendCntAndReti:                 ;0 [-17] 17 cycles until SOP    mov     x3, cnt             ;1 [-16]usbSendX3:                      ;0 [-16]    ldi     YL, 20              ;1 [-15] 'x3' is R20    ldi     YH, 0               ;1 [-14]    ldi     cnt, 2              ;1 [-13];   rjmp    usbSendAndReti      fallthrough; USB spec says:; idle = J; J = (D+ = 0), (D- = 1) or USBOUT = 0x01; K = (D+ = 1), (D- = 0) or USBOUT = 0x02; Spec allows 7.5 bit times from EOP to SOP for replies (= 60 cycles);usbSend:;pointer to data in 'Y';number of bytes in 'cnt' -- including sync byte;uses: x1...x4, shift, cnt, Y;Numbers in brackets are time since first bit of sync pattern is sentusbSendAndReti:             ;0 [-13] timing: 13 cycles until SOP    in      x2, USBDDR      ;1 [-12]    ori     x2, USBMASK     ;1 [-11]    sbi     USBOUT, USBMINUS;2 [-9] prepare idle state; D+ and D- must have been 0 (no pullups)    in      x1, USBOUT      ;1 [-8] port mirror for tx loop    out     USBDDR, x2      ;1 [-7] <- acquire bus; need not init x2 (bitstuff history) because sync starts with 0    push    x4              ;2 [-5]    ldi     x4, USBMASK     ;1 [-4] exor mask    ldi     shift, 0x80     ;1 [-3] sync byte is first byte senttxLoop:                     ;       [62]    sbrs    shift, 0        ;1 [-2] [62]    eor     x1, x4          ;1 [-1] [63]    out     USBOUT, x1      ;1 [0] <-- out bit 0    ror     shift           ;1 [1]    ror     x2              ;1 [2]didStuff0:    cpi     x2, 0xfc        ;1 [3]    brsh    bitstuff0       ;1 [4]    sbrs    shift, 0        ;1 [5]    eor     x1, x4          ;1 [6]    ror     shift           ;1 [7]didStuff1:    out     USBOUT, x1      ;1 [8] <-- out bit 1    ror     x2              ;1 [9]    cpi     x2, 0xfc        ;1 [10]    brsh    bitstuff1       ;1 [11]    sbrs    shift, 0        ;1 [12]    eor     x1, x4          ;1 [13]    ror     shift           ;1 [14]didStuff2:    ror     x2              ;1 [15]    out     USBOUT, x1      ;1 [16] <-- out bit 2    cpi     x2, 0xfc        ;1 [17]    brsh    bitstuff2       ;1 [18]    sbrs    shift, 0        ;1 [19]    eor     x1, x4          ;1 [20]    ror     shift           ;1 [21]didStuff3:    ror     x2              ;1 [22]    cpi     x2, 0xfc        ;1 [23]    out     USBOUT, x1      ;1 [24] <-- out bit 3    brsh    bitstuff3       ;1 [25]    nop2                    ;2 [27]    ld      x3, y+          ;2 [29]    sbrs    shift, 0        ;1 [30]    eor     x1, x4          ;1 [31]    out     USBOUT, x1      ;1 [32] <-- out bit 4    ror     shift           ;1 [33]    ror     x2              ;1 [34]didStuff4:    cpi     x2, 0xfc        ;1 [35]    brsh    bitstuff4       ;1 [36]    sbrs    shift, 0        ;1 [37]    eor     x1, x4          ;1 [38]    ror     shift           ;1 [39]didStuff5:    out     USBOUT, x1      ;1 [40] <-- out bit 5    ror     x2              ;1 [41]    cpi     x2, 0xfc        ;1 [42]    brsh    bitstuff5       ;1 [43]    sbrs    shift, 0        ;1 [44]    eor     x1, x4          ;1 [45]    ror     shift           ;1 [46]didStuff6:    ror     x2              ;1 [47]    out     USBOUT, x1      ;1 [48] <-- out bit 6    cpi     x2, 0xfc        ;1 [49]    brsh    bitstuff6       ;1 [50]    sbrs    shift, 0        ;1 [51]    eor     x1, x4          ;1 [52]    ror     shift           ;1 [53]didStuff7:    ror     x2              ;1 [54]    cpi     x2, 0xfc        ;1 [55]    out     USBOUT, x1      ;1 [56] <-- out bit 7    brsh    bitstuff7       ;1 [57]    mov     shift, x3       ;1 [58]    dec     cnt             ;1 [59]    brne    txLoop          ;1/2 [60/61];make SE0:    cbr     x1, USBMASK     ;1 [61] prepare SE0 [spec says EOP may be 15 to 18 cycles]    pop     x4              ;2 [63];brackets are cycles from start of SE0 now    out     USBOUT, x1      ;1 [0] <-- out SE0 -- from now 2 bits = 16 cycles until bus idle    nop2                    ;2 [2];2006-03-06: moved transfer of new address to usbDeviceAddr from C-Code to asm:;set address only after data packet was sent, not after handshake    lds     x2, usbNewDeviceAddr;2 [4]    subi    YL, 20 + 2      ;1 [5]    sbci    YH, 0           ;1 [6]    breq    skipAddrAssign  ;2 [8]    sts     usbDeviceAddr, x2;0  if not skipped: SE0 is one cycle longerskipAddrAssign:;end of usbDeviceAddress transfer    ldi     x2, 1<<USB_INTR_PENDING_BIT;1 [9] int0 occurred during TX -- clear pending flag    out     USB_INTR_PENDING, x2;1 [10]    ori     x1, USBIDLE     ;1 [11]    in      x2, USBDDR      ;1 [12]    cbr     x2, USBMASK     ;1 [13] set both pins to input    mov     x3, x1          ;1 [14]    cbr     x3, USBMASK     ;1 [15] configure no pullup on both pins    out     USBOUT, x1      ;1 [16] <-- out J (idle) -- end of SE0 (EOP signal)    out     USBDDR, x2      ;1 [17] <-- release bus now    out     USBOUT, x3      ;1 [18] <-- ensure no pull-up resistors are active    rjmp    doReturnbitstuff5:                  ;1 (for branch taken)    eor     x1, x4          ;1    rjmp    didStuff5       ;2 same trick as above...bitstuff6:                  ;1 (for branch taken)    eor     x1, x4          ;1    rjmp    didStuff6       ;2 same trick as above...bitstuff7:                  ;1 (for branch taken)    eor     x1, x4          ;1    rjmp    didStuff7       ;2 same trick as above...

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产视频一区不卡| 日韩一区二区在线播放| 久久99蜜桃精品| 亚洲第一在线综合网站| 亚洲在线一区二区三区| 亚洲欧洲精品天堂一级| 国产精品久久久久精k8| 国产精品天干天干在观线| 国产视频911| 国产精品激情偷乱一区二区∴| 精品精品国产高清一毛片一天堂| 9191国产精品| 日韩一区和二区| 精品国产伦理网| 欧美国产视频在线| 国产偷v国产偷v亚洲高清| 欧美激情一区二区三区| 成人欧美一区二区三区视频网页| 亚洲女人****多毛耸耸8| 亚洲自拍都市欧美小说| 亚洲成人av在线电影| 美国十次了思思久久精品导航| 六月丁香婷婷色狠狠久久| 久久99热99| 国产成人在线电影| 99精品欧美一区| 欧美伊人精品成人久久综合97| 欧美视频一区在线观看| 日韩美女主播在线视频一区二区三区| 26uuu亚洲综合色欧美 | 一区二区三区美女| 亚洲国产成人av网| 麻豆精品视频在线观看视频| 懂色av一区二区三区免费看| 色婷婷久久99综合精品jk白丝 | 欧洲精品一区二区| 91精品欧美一区二区三区综合在 | 久久精品国产色蜜蜜麻豆| 国产精品综合av一区二区国产馆| 色狠狠av一区二区三区| 5858s免费视频成人| 国产欧美日韩三级| 午夜国产不卡在线观看视频| 国产精一品亚洲二区在线视频| 91麻豆免费看| 精品国产污污免费网站入口 | 91在线视频在线| 日韩午夜三级在线| 18欧美乱大交hd1984| 六月丁香综合在线视频| 91伊人久久大香线蕉| 精品国产百合女同互慰| 一区二区三区 在线观看视频| 国产一区在线不卡| 欧美日韩电影一区| 综合久久国产九一剧情麻豆| 毛片一区二区三区| 欧美在线视频日韩| 国产精品动漫网站| 国产在线不卡一区| 欧美一区二区三区免费观看视频 | 99久久夜色精品国产网站| 欧美电影免费观看高清完整版在线| 亚洲男人的天堂在线aⅴ视频| 国产成人免费网站| 精品捆绑美女sm三区| 亚洲v精品v日韩v欧美v专区| 91丨九色porny丨蝌蚪| 国产女人18水真多18精品一级做 | 日韩午夜电影av| 亚洲一本大道在线| 一本大道久久a久久精品综合| 欧美激情综合网| 国产精品1024| 精品国产乱码久久久久久1区2区| 日韩国产精品久久久| 欧美亚洲国产一区在线观看网站 | 91亚洲精品久久久蜜桃| 国产午夜一区二区三区| 国产乱人伦精品一区二区在线观看| 91精品国产91久久久久久一区二区| 亚洲一区二区综合| 69久久99精品久久久久婷婷| 亚洲卡通欧美制服中文| 色乱码一区二区三区88| 亚洲六月丁香色婷婷综合久久| 91年精品国产| 亚洲国产婷婷综合在线精品| 欧美日韩精品一区二区三区蜜桃| 亚洲国产视频直播| 欧美一区二区性放荡片| 精品在线观看免费| 国产亚洲精品中文字幕| 成人免费福利片| 亚洲激情一二三区| 欧亚一区二区三区| 日韩激情一二三区| 337p日本欧洲亚洲大胆色噜噜| 国产乱一区二区| 中文字幕亚洲视频| 欧美久久久影院| 国产综合色精品一区二区三区| 亚洲国产成人自拍| 在线观看网站黄不卡| 日韩成人精品在线| 国产欧美日韩在线| 欧美日韩亚洲综合一区二区三区| 青青草精品视频| 国产欧美日韩一区二区三区在线观看| 91香蕉视频黄| 日韩va欧美va亚洲va久久| 久久精品欧美一区二区三区不卡 | 一区二区免费看| 日韩一二三区视频| 99视频一区二区三区| 亚洲成人动漫av| 欧美高清一级片在线观看| 欧美日韩一区二区三区在线看| 精品中文字幕一区二区小辣椒| 亚洲欧美中日韩| 欧美精品精品一区| 51精品秘密在线观看| 韩国女主播成人在线观看| 亚洲色图在线看| 精品福利一二区| 欧美自拍偷拍一区| 国产很黄免费观看久久| 天堂va蜜桃一区二区三区| 国产欧美日韩精品a在线观看| 欧美三级欧美一级| 不卡一区中文字幕| 国内精品伊人久久久久av影院 | 色吧成人激情小说| 国产剧情一区二区| 蜜乳av一区二区| 亚洲国产aⅴ成人精品无吗| 欧美经典一区二区| 精品日产卡一卡二卡麻豆| 欧美手机在线视频| 99久久er热在这里只有精品15| 极品少妇一区二区| 免费日韩伦理电影| 婷婷中文字幕综合| 一区二区三区在线免费观看| 国产精品视频一区二区三区不卡| 精品日韩在线观看| 91精品婷婷国产综合久久| 欧美撒尿777hd撒尿| 色8久久精品久久久久久蜜| 国产精品18久久久久久久网站| 日本欧美大码aⅴ在线播放| 亚洲第一福利视频在线| 亚洲一区二区三区四区五区中文| 国产精品乱码人人做人人爱 | 国产白丝精品91爽爽久久| 久久99精品久久久久久| 毛片av一区二区三区| 麻豆精品久久久| 蜜桃传媒麻豆第一区在线观看| 日韩电影一区二区三区四区| 日本免费在线视频不卡一不卡二| 午夜a成v人精品| 日韩电影一二三区| 久久精品噜噜噜成人88aⅴ | 另类小说欧美激情| 人人狠狠综合久久亚洲| 奇米色777欧美一区二区| 日韩va欧美va亚洲va久久| 蜜臀av一级做a爰片久久| 久久成人综合网| 国产很黄免费观看久久| 成人免费毛片a| 色先锋aa成人| 欧美日韩aaaaa| 日韩视频在线观看一区二区| 精品国产一区二区在线观看| 国产三级一区二区| 亚洲男人的天堂一区二区| 三级精品在线观看| 国产在线播放一区二区三区| 成人午夜视频在线观看| 色综合天天综合给合国产| 欧美日韩午夜影院| 亚洲精品在线免费播放| 中文字幕乱码一区二区免费| 一区二区三区波多野结衣在线观看| 午夜日韩在线观看| 国产高清在线精品| 91久久精品网| 精品日韩一区二区三区| 亚洲色图.com| 欧美a级理论片| 成人sese在线| 欧美一区二区三区四区视频| 中文字幕乱码一区二区免费| 亚洲成a天堂v人片| 成人精品免费视频| 日韩欧美在线网站| 亚洲免费av高清| 国产美女精品在线|