⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bwmeter.lst

📁 汇编语言写的ez-usb fx2 固件程序传输带宽480M/S
💻 LST
📖 第 1 页 / 共 5 页
字号:
                +1   487                     mov     dptr,#ad
                +1   488                     movx    @dptr,a
                +1   489                     ENDM
                +1   490     ;
                +1   491     RDREG           MACRO   ad              ; Read ext memory value into accum
                +1   492                     mov     dptr,#ad
                +1   493                     movx    a,@dptr
                +1   494                     ENDM
                +1   495     ;
                +1   496     JBH             MACRO   ad,b,des        ; jump on bit high
                +1   497                     mov     dptr,#ad        ; Example usage: JBH Regname,BitNum,Address
                +1   498                     movx    a,@dptr
                +1   499                     jb      acc.b,des
                +1   500                     ENDM
                +1   501     
                +1   502     JBL             MACRO   ad,b,des        ; jump on bit low
                +1   503                     mov     dptr,#ad
                +1   504                     movx    a,@dptr
A51 MACRO ASSEMBLER  BWMETER                                                              07/21/2006 09:55:29 PAGE     9

                +1   505                     jnb     acc.b,des
                +1   506                     ENDM
                +1   507     ;
                +1   508     L1_ON           MACRO
                +1   509                     mov     dptr,#0B000h
                +1   510                     movx    a,@dptr
                +1   511                     ENDM
                +1   512     L2_ON           MACRO
                +1   513                     mov     dptr,#0A000h
                +1   514                     movx    a,@dptr
                +1   515                     ENDM
                +1   516     L3_ON           MACRO
                +1   517                     mov     dptr,#09000h
                +1   518                     movx    a,@dptr
                +1   519                     ENDM
                +1   520     L4_ON           MACRO
                +1   521                     mov     dptr,#08000h
                +1   522                     movx    a,@dptr
                +1   523                     ENDM
                +1   524     L1_OFF          MACRO
                +1   525                     mov     dptr,#0B100h
                +1   526                     movx    a,@dptr
                +1   527                     ENDM
                +1   528     L2_OFF          MACRO
                +1   529                     mov     dptr,#0A100h
                +1   530                     movx    a,@dptr
                +1   531                     ENDM
                +1   532     L3_OFF          MACRO
                +1   533                     mov     dptr,#09100h
                +1   534                     movx    a,@dptr
                +1   535                     ENDM
                +1   536     L4_OFF          MACRO
                +1   537                     mov     dptr,#08100h
                +1   538                     movx    a,@dptr
                +1   539                     ENDM
                     540     $list 
                     541     NAME            BWmeter
  0007               542     bHSM            equ     7       ; in USBCS--High Speed Mode
  0001               543     bSOF            equ     1       ; in USBIRQ register--an SOF has arrived
                     544     
----                 545                     ISEG AT 90H     ; stack
0090                 546     stack:          ds      40
                     547     ;
----                 548                     DSEG    at      20H     ; bit-addressable registers
0020                 549     flags:          ds      1               ; NOTE: all flags in this byte initialze to 0
  0000               550     PKTbuf_full     equ     flags.0
  0001               551     F_LEDtog        equ     flags.1         ; alternate L2-L3 every SOF
  0002               552     blankflag       equ     flags.2         ; blank LED if 1
  0003               553     F_found_HS      equ     flags.3         ; found the high speed mode
  0004               554     F_gotPacket     equ     flags.4         ; got an IN or an OUT packet
  0005               555     did_once        equ     flags.5         ; to do stuff only once when PKTbuf just filled
                     556     ;
----                 557                     DSEG    at      30H     ; gp registers
0030                 558     ppf:            ds      1               ; packets per frame
0031                 559     InCnt:          ds      1               ; number of IN-8 transfers
0032                 560     displaydigit:   ds      1               ; hex digit to display
0033                 561     maxppf:         ds      1               ; max packets in a microframe
0034                 562     PKTbuf:         ds      64              ; 64-byte ppf-history buffer
                     563     ;
----                 564                     CSEG    AT      0       
0000 020090          565                     LJMP    start           ; jump over the interrupt vectors
                     566     ; -------------------------------------------------
0080                 567                     org     0080h           
                     568     ; -------------------------------------------------
0080 C0F9A4B0        569     digit_table:    db      0C0h,0F9h,0A4h,0B0h,99h,92h,82h,0F8h,80h,98h,88h,83h,0C6h,0A1h,86h,
                             08Eh
A51 MACRO ASSEMBLER  BWMETER                                                              07/21/2006 09:55:29 PAGE    10

0084 999282F8                
0088 80988883                
008C C6A1868E                
0090 75818F          570     start:          mov     SP,#stack-1     ; set stack
                     571                     LDREG   USBCS,#0        ; clear RENUM bit and CONNECT (if disconnected)
                     575     ;
                     576     ; Comment out two of the following three statements to set 8051 clock speed
                     577     ;
                     578     ;               LDREG   CPUCS,#02h      ; 12 MHz, CKOUT enabled (default)
                     579     ;               LDREG   CPUCS,#0Ah      ; 24 MHz, CKOUT enabled
                     580                     LDREG   CPUCS,#12H      ; 48 MHz, CKOUT enabled
                     584     ;
                     585     ; initialize variables, buffers & pointers
                     586     ;
009F 515E            587     init:           call    lites_out       
00A1 31B9            588                     call    reset_FIFOS
00A3 5145            589                     call    arm_EP24        ; arm the OUT endpoints
00A5 31D4            590                     call    fill_and_arm_EP8_buffers        ; with 00's and 01's
00A7 5107            591                     call    fill_and_arm_EP6_buffers        ; with EF's and FF's
00A9 753102          592                     mov     InCnt,#2        ; two packets are already posted-for-delivery
00AC 7834            593                     mov     r0,#PKTbuf      ; initialize packet buffer pointer
00AE 753000          594                     mov     ppf,#0          ; IN packets per frame counter
00B1 753300          595                     mov     maxppf,#0       ; max over long haul
00B4 752000          596                     mov     flags,#0        ; all flags in this byte init to zero
00B7 D202            597                     setb    blankflag       ; blank the display
00B9 516F            598                     call    display_hex
                     599     ;********************************************************************************
                     600     ; Main Loop. Poll flags
                     601     ;********************************************************************************
00BB E5AA            602     mainloop:       mov     a,EP2468STAT    ; *** Check for EP8 full flag
00BD 20E704          603                     jb      acc.7,m0        ; EP8 is full--don't need to update
00C0 3149            604                     call    Update_EP8      ; got a free buffer--fill and arm it
00C2 8005            605                     sjmp    m1              ; skip EP6 test
00C4 20E502          606     m0:             jb      acc.5,m1        ; EP6 is full--don't need to update
00C7 315C            607                     call    Update_EP6      ; got a free buffer--fill and arm it
                     608     ;
00C9 E5AA            609     m1:             mov     a,EP2468STAT    ; *** Check for EP4OUT-EMPTY
00CB 20E204          610                     jb      acc.2,m10       ; EP4OUT is empty--move on      
00CE 316F            611                     call    Update_EP4      ; it has OUT data--re-arm it
00D0 8005            612                     sjmp    m2
00D2 20E002          613     m10:            jb      acc.0,m2        ; *** Check for EP2OUT empty
00D5 317A            614                     call    Update_EP2      ; EP2OUT has OUT data--re-arm it
                     615     ;
00D7                 616     m2:             RDREG   USBIRQ          ; *** Check for SOF     
00DB 30E107          619                     jnb     acc.1,m3        ; USBIRQ.1=SOF: no SOF yet
00DE 7402            620                     mov     a,#00000010b    ; b1 is SOF IRQ flag
00E0 F0              621                     movx    @dptr,a         ; clear the request bit
00E1 3185            622                     call    got_SOF 
00E3 80D6            623                     sjmp    mainloop
                     624     ;
00E5                 625     m3:             RDREG   IBNIRQ          ; *** Check for EP8 IBN (In-Bulk-NAK)
00E9 30E507          628                     jnb     acc.5,m3a       ; IBNIRQ.5 is EP8-NAK
00EC 7420            629                     mov     a,#00100000b    ; EP4-IBN IRQ bit is bit 5
00EE F0              630                     movx    @dptr,a         ; clear the bit
                     631                     L4_ON                   ; turn on light #4
                     634     ;
00F3                 635     m3a:            RDREG   NAKIRQ          ; *** Check for EP4 PING-NAK
00F7 30E507          638                     jnb     acc.5,m4        ; bit 5 is EP4
00FA 7420            639                     mov     a,#00100000b
00FC F0              640                     movx    @dptr,a         ; clear the bit
                     641                     L4_ON                   ; turn on light #4
                     644     ;
0101                 645     m4:             RDREG   EP1INCS         ; *** Check for EP1-IN buffer free
0105 20E108          648                     jb      acc.1,m4a       ; bit 1 is BUSY bit
                     649                     LDREG   EP1INBC,#64     ; arm it for 64 byte transfer
010E 808F            653                     jmp     init            ; *** START OVER
A51 MACRO ASSEMBLER  BWMETER                                                              07/21/2006 09:55:29 PAGE    11

                     654     ;
0110                 655     m4a:            RDREG   EP1OUTCS        ; *** Did someone send EP1-OUT data?
0114 20E104          658                     jb      acc.1,m5        ; busy--waiting for USB data
0117 90E68D          659                     mov     dptr,#EP1OUTBC  ; any value in acc will do
011A F0              660                     movx    @dptr,a         ; Re-arm it so we don't hang the control panel
                     661     ;
                     662     ; *** Check for high-speed operation
                     663     ;
011B 20030D          664     m5:             jb      F_found_HS,m6   ; don't need to check for HS mode any more
                     665                     JBL     USBCS,bHSM,m6   ; check the HS operation bit
                     669                     L1_ON                   ; found it ON
0129 D203            672                     setb    F_found_HS      ; set flag so won't continue checking
                     673     ;
                     674     ; Do the following operations only once when the PKTbuffer fills (to 64).
                     675     ;
012B 20058D          676     m6:             jb      did_once,mainloop       ; already displayed the max ppf &  updated 
                             EP1-IN buffer
012E 30008A          677                     jnb     PKTbuf_full,mainloop    ; history buffer not full yet
0131 D205            678                     setb    did_once                ; Do the stuff below only once

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -