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

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

?? usbdrvasm16.inc

?? 一個(gè)紅外分析儀的固件程序。使用的AVRUSB硬件(ATMEGA8)。
?? INC
字號(hào):
/* Name: usbdrvasm16.inc * Project: AVR USB driver * Author: Christian Starkjohann * Creation Date: 2007-06-15 * 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 is the 16 MHz version of the asssembler part of the USB driver. Itrequires a 16 MHz crystal (not a ceramic resonator and not a calibrated RCoscillator).See usbdrv.h for a description of the entire driver.Since almost all of this code is timing critical, don't change unless youreally know what you are doing! Many parts require not only a maximum numberof CPU cycles, but even an exact number of cycles!*/;max stack usage: [ret(2), YL, SREG, YH, bitcnt, shift, x1, x2, x3, x4, cnt] = 12 bytes;nominal frequency: 16 MHz -> 10.6666666 cycles per bit, 85.333333333 cycles per byte; Numbers in brackets are clocks counted from center of last sync bit; when instruction startsUSB_INTR_VECTOR:;order of registers pushed: YL, SREG YH, [sofError], bitcnt, shift, x1, x2, x3, x4, cnt    push    YL                  ;[-25] push only what is necessary to sync with edge ASAP    in      YL, SREG            ;[-23]    push    YL                  ;[-22]    push    YH                  ;[-20];----------------------------------------------------------------------------; Synchronize with sync pattern:;----------------------------------------------------------------------------;sync byte (D-) pattern LSb to MSb: 01010100 [1 = idle = J, 0 = K];sync up with J to K edge during sync pattern -- use fastest possible loops;first part has no timeout because it waits for IDLE or SE1 (== disconnected)waitForJ:    sbis    USBIN, USBMINUS     ;[-18] wait for D- == 1    rjmp    waitForJwaitForK:;The following code results in a sampling window of < 1/4 bit which meets the spec.    sbis    USBIN, USBMINUS     ;[-15]    rjmp    foundK              ;[-14]    sbis    USBIN, USBMINUS    rjmp    foundK    sbis    USBIN, USBMINUS    rjmp    foundK    sbis    USBIN, USBMINUS    rjmp    foundK    sbis    USBIN, USBMINUS    rjmp    foundK    sbis    USBIN, USBMINUS    rjmp    foundK#if USB_COUNT_SOF    lds     YL, usbSofCount    inc     YL    sts     usbSofCount, YL#endif  /* USB_COUNT_SOF */    rjmp    sofErrorfoundK:                         ;[-12];{3, 5} after falling D- edge, average delay: 4 cycles [we want 5 for center sampling];we have 1 bit time for setup purposes, then sample again. Numbers in brackets;are cycles from center of first sync (double K) bit after the instruction    push    bitcnt              ;[-12];   [---]                       ;[-11]    lds     YL, usbInputBufOffset;[-10];   [---]                       ;[-9]    clr     YH                  ;[-8]    subi    YL, lo8(-(usbRxBuf));[-7] [rx loop init]    sbci    YH, hi8(-(usbRxBuf));[-6] [rx loop init]    push    shift               ;[-5];   [---]                       ;[-4]    ldi     bitcnt, 0x55        ;[-3] [rx loop init]    sbis    USBIN, USBMINUS     ;[-2] we want two bits K (sample 2 cycles too early)    rjmp    haveTwoBitsK        ;[-1]    pop     shift               ;[0] undo the push from before    pop     bitcnt              ;[2] undo the push from before    rjmp    waitForK            ;[4] this was not the end of sync, retry; The entire loop from waitForK until rjmp waitForK above must not exceed two; bit times (= 21 cycles).;----------------------------------------------------------------------------; push more registers and initialize values while we sample the first bits:;----------------------------------------------------------------------------haveTwoBitsK:    push    x1              ;[1]    push    x2              ;[3]    push    x3              ;[5]    ldi     shift, 0        ;[7]    ldi     x3, 1<<4        ;[8] [rx loop init] first sample is inverse bit, compensate that    push    x4              ;[9] == leap    in      x1, USBIN       ;[11] <-- sample bit 0    andi    x1, USBMASK     ;[12]    bst     x1, USBMINUS    ;[13]    bld     shift, 7        ;[14]    push    cnt             ;[15]    ldi     leap, 0         ;[17] [rx loop init]    ldi     cnt, USB_BUFSIZE;[18] [rx loop init]    rjmp    rxbit1          ;[19] arrives at [21];----------------------------------------------------------------------------; Receiver loop (numbers in brackets are cycles within byte after instr);----------------------------------------------------------------------------unstuff6:    andi    x2, USBMASK ;[03]    ori     x3, 1<<6    ;[04] will not be shifted any more    andi    shift, ~0x80;[05]    mov     x1, x2      ;[06] sampled bit 7 is actually re-sampled bit 6    subi    leap, 3     ;[07] since this is a short (10 cycle) bit, enforce leap bit    rjmp    didUnstuff6 ;[08]unstuff7:    ori     x3, 1<<7    ;[09] will not be shifted any more    in      x2, USBIN   ;[00] [10]  re-sample bit 7    andi    x2, USBMASK ;[01]    andi    shift, ~0x80;[02]    subi    leap, 3     ;[03] since this is a short (10 cycle) bit, enforce leap bit    rjmp    didUnstuff7 ;[04]unstuffEven:    ori     x3, 1<<6    ;[09] will be shifted right 6 times for bit 0    in      x1, USBIN   ;[00] [10]    andi    shift, ~0x80;[01]    andi    x1, USBMASK ;[02]    breq    se0         ;[03]    subi    leap, 3     ;[04] since this is a short (10 cycle) bit, enforce leap bit    nop                 ;[05]    rjmp    didUnstuffE ;[06]unstuffOdd:    ori     x3, 1<<5    ;[09] will be shifted right 4 times for bit 1    in      x2, USBIN   ;[00] [10]    andi    shift, ~0x80;[01]    andi    x2, USBMASK ;[02]    breq    se0         ;[03]    subi    leap, 3     ;[04] since this is a short (10 cycle) bit, enforce leap bit    nop                 ;[05]    rjmp    didUnstuffO ;[06]rxByteLoop:    andi    x1, USBMASK ;[03]    eor     x2, x1      ;[04]    subi    leap, 1     ;[05]    brpl    skipLeap    ;[06]    subi    leap, -3    ;1 one leap cycle every 3rd byte -> 85 + 1/3 cycles per byte    nop                 ;1skipLeap:    subi    x2, 1       ;[08]    ror     shift       ;[09]didUnstuff6:    cpi     shift, 0xfc ;[10]    in      x2, USBIN   ;[00] [11] <-- sample bit 7    brcc    unstuff6    ;[01]    andi    x2, USBMASK ;[02]    eor     x1, x2      ;[03]    subi    x1, 1       ;[04]    ror     shift       ;[05]didUnstuff7:    cpi     shift, 0xfc ;[06]    brcc    unstuff7    ;[07]    eor     x3, shift   ;[08] reconstruct: x3 is 1 at bit locations we changed, 0 at others    st      y+, x3      ;[09] store datarxBitLoop:    in      x1, USBIN   ;[00] [11] <-- sample bit 0/2/4    andi    x1, USBMASK ;[01]    eor     x2, x1      ;[02]    andi    x3, 0x3f    ;[03] topmost two bits reserved for 6 and 7    subi    x2, 1       ;[04]    ror     shift       ;[05]    cpi     shift, 0xfc ;[06]    brcc    unstuffEven ;[07]didUnstuffE:    lsr     x3          ;[08]    lsr     x3          ;[09]rxbit1:    in      x2, USBIN   ;[00] [10] <-- sample bit 1/3/5    andi    x2, USBMASK ;[01]    breq    se0         ;[02]    eor     x1, x2      ;[03]    subi    x1, 1       ;[04]    ror     shift       ;[05]    cpi     shift, 0xfc ;[06]    brcc    unstuffOdd  ;[07]didUnstuffO:    subi    bitcnt, 0xab;[08] == addi 0x55, 0x55 = 0x100/3    brcs    rxBitLoop   ;[09]    subi    cnt, 1      ;[10]    in      x1, USBIN   ;[00] [11] <-- sample bit 6    brcc    rxByteLoop  ;[01]    rjmp    overflowmacro POP_STANDARD ; 14 cycles    pop     cnt    pop     x4    pop     x3    pop     x2    pop     x1    pop     shift    pop     bitcntendmmacro POP_RETI     ; 7 cycles    pop     YH    pop     YL    out     SREG, YL    pop     YLendm#include "asmcommon.inc"; USB spec says:; idle = J; J = (D+ = 0), (D- = 1); K = (D+ = 1), (D- = 0); Spec allows 7.5 bit times from EOP to SOP for repliesbitstuffN:    eor     x1, x4          ;[5]    ldi     x2, 0           ;[6]    nop2                    ;[7]    nop                     ;[9]    out     USBOUT, x1      ;[10] <-- out    rjmp    didStuffN       ;[0]    bitstuff6:    eor     x1, x4          ;[5]    ldi     x2, 0           ;[6] Carry is zero due to brcc    rol     shift           ;[7] compensate for ror shift at branch destination    rjmp    didStuff6       ;[8]bitstuff7:    ldi     x2, 0           ;[2] Carry is zero due to brcc    rjmp    didStuff7       ;[3]sendNakAndReti:    ldi     x3, USBPID_NAK  ;[-18]    rjmp    sendX3AndReti   ;[-17]sendAckAndReti:    ldi     cnt, USBPID_ACK ;[-17]sendCntAndReti:    mov     x3, cnt         ;[-16]sendX3AndReti:    ldi     YL, 20          ;[-15] x3==r20 address is 20    ldi     YH, 0           ;[-14]    ldi     cnt, 2          ;[-13];   rjmp    usbSendAndReti      fallthrough;usbSend:;pointer to data in 'Y';number of bytes in 'cnt' -- including sync byte [range 2 ... 12];uses: x1...x4, btcnt, shift, cnt, Y;Numbers in brackets are time since first bit of sync pattern is sent;We don't match the transfer rate exactly (don't insert leap cycles every third;byte) because the spec demands only 1.5% precision anyway.usbSendAndReti:             ; 12 cycles until SOP    in      x2, USBDDR      ;[-12]    ori     x2, USBMASK     ;[-11]    sbi     USBOUT, USBMINUS;[-10] prepare idle state; D+ and D- must have been 0 (no pullups)    in      x1, USBOUT      ;[-8] port mirror for tx loop    out     USBDDR, x2      ;[-7] <- acquire bus; need not init x2 (bitstuff history) because sync starts with 0    ldi     x4, USBMASK     ;[-6] exor mask    ldi     shift, 0x80     ;[-5] sync byte is first byte senttxByteLoop:    ldi     bitcnt, 0x35    ;[-4] [6] binary 0011 0101txBitLoop:    sbrs    shift, 0        ;[-3] [7]    eor     x1, x4          ;[-2] [8]    out     USBOUT, x1      ;[-1] [9] <-- out N    ror     shift           ;[0] [10]    ror     x2              ;[1]didStuffN:    cpi     x2, 0xfc        ;[2]    brcc    bitstuffN       ;[3]    lsr     bitcnt          ;[4]    brcc    txBitLoop       ;[5]    brne    txBitLoop       ;[6]    sbrs    shift, 0        ;[7]    eor     x1, x4          ;[8]didStuff6:    out     USBOUT, x1      ;[-1] [9] <-- out 6    ror     shift           ;[0] [10]    ror     x2              ;[1]    cpi     x2, 0xfc        ;[2]    brcc    bitstuff6       ;[3]    ror     shift           ;[4]didStuff7:    ror     x2              ;[5]    sbrs    x2, 7           ;[6]    eor     x1, x4          ;[7]    nop                     ;[8]    cpi     x2, 0xfc        ;[9]    out     USBOUT, x1      ;[-1][10] <-- out 7    brcc    bitstuff7       ;[0] [11]    ld      shift, y+       ;[1]    dec     cnt             ;[3]    brne    txByteLoop      ;[4];make SE0:    cbr     x1, USBMASK     ;[5] prepare SE0 [spec says EOP may be 21 to 25 cycles]    lds     x2, usbNewDeviceAddr;[6]    lsl     x2              ;[8] we compare with left shifted address    subi    YL, 20 + 2      ;[9] Only assign address on data packets, not ACK/NAK in x3    sbci    YH, 0           ;[10]    out     USBOUT, x1      ;[11] <-- out SE0 -- from now 2 bits = 22 cycles until bus idle;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    breq    skipAddrAssign  ;[0]    sts     usbDeviceAddr, x2; if not skipped: SE0 is one cycle longerskipAddrAssign:;end of usbDeviceAddress transfer    ldi     x2, 1<<USB_INTR_PENDING_BIT;[2] int0 occurred during TX -- clear pending flag    USB_STORE_PENDING(x2)   ;[3]    ori     x1, USBIDLE     ;[4]    in      x2, USBDDR      ;[5]    cbr     x2, USBMASK     ;[6] set both pins to input    mov     x3, x1          ;[7]    cbr     x3, USBMASK     ;[8] configure no pullup on both pins    ldi     x4, 4           ;[9]se0Delay:    dec     x4              ;[10] [13] [16] [19]    brne    se0Delay        ;[11] [14] [17] [20]    out     USBOUT, x1      ;[21] <-- out J (idle) -- end of SE0 (EOP signal)    out     USBDDR, x2      ;[22] <-- release bus now    out     USBOUT, x3      ;[23] <-- ensure no pull-up resistors are active    rjmp    doReturn

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品在线麻豆| 欧美xxxxxxxxx| 国产真实精品久久二三区| 国产精品久久久久久妇女6080| 精品视频在线看| av不卡在线播放| 国模大尺度一区二区三区| 亚洲成人免费看| 亚洲美女视频一区| 中文子幕无线码一区tr| 欧美大片顶级少妇| 欧美日韩久久久| 色综合一区二区三区| 国产精品一区二区免费不卡| 日韩电影在线一区二区三区| 亚洲一区二区综合| 亚洲人成在线播放网站岛国 | 欧美区视频在线观看| av在线播放不卡| 国产美女在线精品| 奇米在线7777在线精品| 亚洲自拍都市欧美小说| 自拍偷拍亚洲欧美日韩| 国产精品影视网| 日韩高清不卡一区二区三区| 亚洲美女视频一区| 亚洲色图色小说| 欧美激情一区二区在线| 久久久一区二区| 久久久久久久久久久久久夜| wwwwxxxxx欧美| 亚洲精品一区在线观看| 日韩精品一区国产麻豆| 欧美成人一区二区三区片免费 | 另类成人小视频在线| 日韩综合小视频| 人人爽香蕉精品| 久久国产精品72免费观看| 久久99国产精品麻豆| 国产在线观看免费一区| 国产精品中文欧美| 国产成人精品一区二区三区四区| 国产一区二三区好的| 国产精品18久久久久久久久| 国产sm精品调教视频网站| 丁香另类激情小说| 成人aa视频在线观看| 成人aa视频在线观看| 91麻豆.com| 欧美精品第一页| 日韩精品一区二区三区老鸭窝| 精品日韩一区二区三区| 久久久久九九视频| 中文字幕一区二区三区色视频| 亚洲欧美日韩成人高清在线一区| 一区二区免费在线播放| 免费亚洲电影在线| 国产一区二区不卡在线 | 欧美日韩国产在线播放网站| 欧美精品高清视频| 久久只精品国产| 中文字幕日韩欧美一区二区三区| 亚洲精品高清在线| 日本美女视频一区二区| 国产成人免费高清| 色哟哟在线观看一区二区三区| 欧美主播一区二区三区| 欧美刺激脚交jootjob| 国产精品久久三区| 亚洲高清在线精品| 国产呦萝稀缺另类资源| 色综合天天性综合| 日韩一区二区在线看片| 中文字幕av一区 二区| 亚洲一区二区精品3399| 国产在线观看免费一区| 欧美午夜视频网站| 国产日韩综合av| 午夜在线成人av| 风间由美一区二区三区在线观看 | jizz一区二区| 欧美精品乱码久久久久久按摩| 久久精品欧美日韩| 亚洲第一主播视频| 国产99久久精品| 欧美一区二区三区思思人 | 麻豆一区二区在线| 91视视频在线直接观看在线看网页在线看| 精品1区2区3区| 国产欧美一区二区精品性| 性做久久久久久免费观看| 风间由美一区二区三区在线观看 | 久久久久久久久久久久久久久99| 一级日本不卡的影视| 国产精品综合网| 91麻豆精品国产自产在线观看一区| 欧美国产视频在线| 精品在线播放午夜| 欧美日韩久久不卡| 综合久久久久综合| 国产精品一区二区不卡| 欧美一区二区精品久久911| 亚洲精品视频免费看| 国产乱理伦片在线观看夜一区| 欧美日韩一级二级| 亚洲精品一卡二卡| 成人国产精品视频| 久久久精品中文字幕麻豆发布| 午夜激情综合网| 91麻豆精品在线观看| 国产午夜精品一区二区三区四区| 丝瓜av网站精品一区二区 | av在线综合网| 中文字幕av一区 二区| 国产一区欧美一区| 91精品国产综合久久久久久漫画 | 国精产品一区一区三区mba视频 | 久草在线在线精品观看| 欧美日韩成人高清| 亚洲综合成人在线| 色婷婷亚洲综合| 亚洲欧洲综合另类| www..com久久爱| 国产精品久久久久桃色tv| 国产成人av一区二区三区在线 | 国产欧美精品区一区二区三区 | 国产91在线看| 国产欧美日韩精品在线| 国产一区二区三区日韩| 26uuuu精品一区二区| 狠狠色狠狠色综合系列| 欧美sm极限捆绑bd| 激情五月激情综合网| 精品国产一区二区精华| 国产一区二区三区免费观看| 久久久蜜臀国产一区二区| 韩国在线一区二区| 亚洲国产高清不卡| 97成人超碰视| 亚洲综合在线免费观看| 欧美人妇做爰xxxⅹ性高电影| 天天影视网天天综合色在线播放| 91精品国产一区二区三区香蕉| 美洲天堂一区二卡三卡四卡视频| 日韩一区二区三免费高清| 久久99精品国产.久久久久久| 久久丝袜美腿综合| 国产成人免费视频一区| 亚洲欧洲日韩在线| 欧洲视频一区二区| 日韩影院在线观看| 精品福利一区二区三区| 不卡视频一二三四| 亚洲一区二区偷拍精品| 欧美一级欧美一级在线播放| 国产主播一区二区| 亚洲人妖av一区二区| 欧美裸体bbwbbwbbw| 黄一区二区三区| 国产精品久久一卡二卡| 欧美日韩精品一区二区三区四区 | 麻豆成人免费电影| 国产欧美日韩亚州综合| 欧美吞精做爰啪啪高潮| 美国毛片一区二区| 国产精品久久久久精k8 | 日韩一区二区三区免费看 | 亚洲国产另类av| 久久综合资源网| 91福利视频久久久久| 美女国产一区二区三区| 国产精品大尺度| 91精品福利在线一区二区三区| 国产一区二区伦理片| 亚洲精品成人精品456| 欧美mv日韩mv国产网站app| 99国内精品久久| 蜜臀久久99精品久久久久宅男 | 日韩avvvv在线播放| 国产欧美一区视频| 欧美午夜片在线观看| 懂色av中文字幕一区二区三区| 亚洲第四色夜色| 国产精品久久久久久户外露出| 欧美一区二区视频在线观看| 成人精品免费网站| 另类调教123区| 亚洲国产一区二区在线播放| 国产欧美精品一区二区色综合 | 日韩一区二区麻豆国产| 91在线高清观看| 黄色资源网久久资源365| 亚洲国产精品视频| 最新高清无码专区| 久久久精品一品道一区| 3751色影院一区二区三区| 色综合天天性综合| 处破女av一区二区| 老司机精品视频一区二区三区| 尤物视频一区二区|