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

📄 bal.lst

📁 演示了如何开发WINDOES下I/O口驱动
💻 LST
📖 第 1 页 / 共 5 页
字号:
0416 907EC0     =1   731             MOV     DPTR, #EP0OutBuffer     ; Point to the Report
0419 E0         =1   732             MOVX    A, @DPTR                ; Get the Data
041A F548       =1   733             MOV     LEDValue, A             ; Update the local variable
041C 22         =1   734             RET
                =1   735     
041D            =1   736     CreateInputReport:                      ; Called from TIMER which detected the need
                =1   737     ; The report is only one byte long in this first example
                =1   738     ; It contains a new value for the Buttons
041D 907E80     =1   739             MOV     DPTR, #EP1InBuffer      ; Point to the buffer 
0420 F0         =1   740             MOVX    @DPTR, A                ; Update the Report
0421 907FB7     =1   741             MOV     DPTR, #IN1ByteCount
0424 7401       =1   742             MOV     A, #1
0426 F0         =1   743             MOVX    @DPTR, A                ; Endpoint 1 now 'armed', next IN will get data
0427 22         =1   744             RET
                =1   745     
                     746     $INCLUDE(Timer.A51)
                =1   747     ; This module services the real time interrupt
                =1   748     ; It is also responsible for the "real world" buttons and lights
                =1   749     ;
A51 MACRO ASSEMBLER  BAL                                                                    21/07/99 16:17:43 PAGE    13

                =1   750     ; CHANGE SINCE THE BOOK TEXT WAS FINALIZED: Idle_Time is used by the Operating System
                =1   751     ; to override the report times defined in the Endpoint Descriptor.  A device driver
                =1   752     ; will modify Idle_Time to change the reporting characteristics of a HID device.
                =1   753     ; During initialization the OS sets Idle_Time = 0 which turns reporting OFF unless
                =1   754     ; a change is detected; an application that starts to poll a HID device will appear
                =1   755     ; to hang. While it is possible to write extra PCHost application code to re-enable
                =1   756     ; Idle_Time is it simpler to defeat this mechanism by IGNORRING the Idle_Time value.
                =1   757     ;
                =1   758     ; Get a Real Time interrupt every One millisecond (using SOF interrupt)
                =1   759     ;
                =1   760     ; HID devices work on a 4 millisecond timer
                =1   761     ; We have one task
                =1   762     ;       a) Strobe the LEDs (only one is ever really on, saves power)
0428            =1   763     ServiceTimerRoutine:
0428 D54926     =1   764             DJNZ    Msec_counter, Done      ; Only need to check every 4msec
042B 754904     =1   765             MOV     Msec_counter, #4        ; Reinitialize
                =1   766     ;
                =1   767     ; LED task
                =1   768     ; Light the next LED in sequence
042E E547       =1   769             MOV     A, LEDStrobe            ; Get the current enabling pattern
0430 23         =1   770             RL      A
0431 F547       =1   771             MOV     LEDStrobe, A            ; Save for next time
0433 5548       =1   772             ANL     A, LEDValue             ; Get the LED image
0435 12044C     =1   773             CALL    WriteLEDs               ; Update the real world
                =1   774     ;
                =1   775     ; Create an Input Report from the Buttons value
                =1   776     ; This will be continually overwritten while the PCHost is not polling for data
0438 12043D     =1   777             CALL    ReadButtons
043B 80E0       =1   778             JMP     CreateInputReport       ; RETurn via CreateInputReport
                =1   779     
                =1   780     ; Talk to the "real world" buttons and lights
043D            =1   781     ReadButtons:
043D 907F9A     =1   782             MOV     DPTR, #PortB_Pins
0440 E0         =1   783             MOVX    A, @DPTR
0441 54F0       =1   784             ANL     A, #0F0H                ; Get upper nibble
0443 F540       =1   785             MOV     Temp, A
0445 A3         =1   786             INC     DPTR                    ; Point to PortC_Pins
0446 E0         =1   787             MOVX    A, @DPTR
0447 540F       =1   788             ANL     A, #0FH                 ; Get lower nibble
0449 4540       =1   789             ORL     A, Temp                 ; Merge both halves together
044B 22         =1   790             RET     
044C            =1   791     WriteLEDs:
044C F4         =1   792             CPL     A                       ; 0 = LED on
044D 907F96     =1   793             MOV     DPTR, #PortA_Out
0450 F0         =1   794             MOVX    @DPTR, A
0451 22         =1   795     Done:   RET
                =1   796                     
                     797     
                     798     END
A51 MACRO ASSEMBLER  BAL                                                                    21/07/99 16:17:43 PAGE    14

SYMBOL TABLE LISTING
------ ----- -------


N A M E                    T Y P E  V A L U E   ATTRIBUTES

ACC . . . . . . . . . . .  D ADDR   00E0H   A   
B . . . . . . . . . . . .  D ADDR   00F0H   A   
BADREQUEST. . . . . . . .  C ADDR   01C6H   A   
BUMPDPTR. . . . . . . . .  C ADDR   01CCH   A   
BUTTONSANDLIGHTS. . . . .  N NUMB   -----       
CLEARINT2 . . . . . . . .  C ADDR   0119H   A   
COMMANDTABLE. . . . . . .  C ADDR   01FAH   A   
CONFIGLENGTH. . . . . . .  N NUMB   0022H   A   
CONFIGURATIONDESCRIPTOR .  C ADDR   02D7H   A   
CONFIGURED. . . . . . . .  B ADDR   0020H.0 A   
COPYRB. . . . . . . . . .  C ADDR   01A0H   A   
COPYSD. . . . . . . . . .  C ADDR   02B7H   A   
CORRECTSUBROUTINE . . . .  C ADDR   01D5H   A   
CREATEINPUTREPORT . . . .  C ADDR   041DH   A   
DECONFIGURED. . . . . . .  C ADDR   0278H   A   
DEVICEDESCRIPTOR. . . . .  C ADDR   02C5H   A   
DEVICE_CLEAR_FEATURE. . .  C ADDR   023AH   A   
DEVICE_GET_STATUS . . . .  C ADDR   0267H   A   
DEVICE_SET_FEATURE. . . .  C ADDR   023AH   A   
DONE. . . . . . . . . . .  C ADDR   0451H   A   
DPH . . . . . . . . . . .  D ADDR   0083H   A   
DPL . . . . . . . . . . .  D ADDR   0082H   A   
DPS . . . . . . . . . . .  D ADDR   0086H   A   
EI. . . . . . . . . . . .  D ADDR   00A8H   A   
EICON . . . . . . . . . .  D ADDR   00D8H   A   
EIE . . . . . . . . . . .  D ADDR   00E8H   A   
ENDOFDESCRIPTORS. . . . .  C ADDR   03AFH   A   
ENDPOINTDESCRIPTOR. . . .  C ADDR   02F2H   A   
ENDPOINT_CLEAR_FEATURE. .  C ADDR   023CH   A   
ENDPOINT_GET_STATUS . . .  C ADDR   026BH   A   
ENDPOINT_SET_FEATURE. . .  C ADDR   023AH   A   
ENDPOINT_SYNC_FRAME . . .  C ADDR   023AH   A   
EP0CONTROL. . . . . . . .  N NUMB   7FB4H   A   
EP0INBUFFER . . . . . . .  N NUMB   7F00H   A   
EP0IN_ISR . . . . . . . .  C ADDR   0118H   A   
EP0OUTBUFFER. . . . . . .  N NUMB   7EC0H   A   
EP0OUT_ISR. . . . . . . .  C ADDR   0118H   A   
EP1INBUFFER . . . . . . .  N NUMB   7E80H   A   
EP1IN_ISR . . . . . . . .  C ADDR   0118H   A   
EP1OUT_ISR. . . . . . . .  C ADDR   0118H   A   
EP2IN_ISR . . . . . . . .  C ADDR   0118H   A   
EP2OUT_ISR. . . . . . . .  C ADDR   0118H   A   
EP3IN_ISR . . . . . . . .  C ADDR   0118H   A   
EP3OUT_ISR. . . . . . . .  C ADDR   0118H   A   
EP4IN_ISR . . . . . . . .  C ADDR   0118H   A   
EP4OUT_ISR. . . . . . . .  C ADDR   0118H   A   
EP5IN_ISR . . . . . . . .  C ADDR   0118H   A   
EP5OUT_ISR. . . . . . . .  C ADDR   0118H   A   
EP6IN_ISR . . . . . . . .  C ADDR   0118H   A   
EP6OUT_ISR. . . . . . . .  C ADDR   0118H   A   
EP7IN_ISR . . . . . . . .  C ADDR   0118H   A   
EP7OUT_ISR. . . . . . . .  C ADDR   0118H   A   
EXIF. . . . . . . . . . .  D ADDR   0091H   A   
EXITISR . . . . . . . . .  C ADDR   014BH   A   
EXPIRED_TIME. . . . . . .  D ADDR   0042H   A   
FIXUPTHENREPLY. . . . . .  C ADDR   02B1H   A   
FLAGS . . . . . . . . . .  D ADDR   0020H   A   
GET_CLASS_DESCRIPTOR. . .  C ADDR   029FH   A   
GET_CONFIGURATION . . . .  C ADDR   0264H   A   
GET_DESCRIPTOR. . . . . .  C ADDR   027BH   A   
A51 MACRO ASSEMBLER  BAL                                                                    21/07/99 16:17:43 PAGE    15

GET_IDLE. . . . . . . . .  C ADDR   025DH   A   
GET_INTERFACE . . . . . .  C ADDR   023AH   A   
GET_PROTOCOL. . . . . . .  C ADDR   023AH   A   
GET_REPORT. . . . . . . .  C ADDR   0250H   A   
HANDSHAKE . . . . . . . .  C ADDR   01ADH   A   
HIDDESCRIPTOR . . . . . .  C ADDR   02E9H   A   
I2CCONTROL. . . . . . . .  N NUMB   7FA5H   A   
I2CDATA . . . . . . . . .  N NUMB   7FA6H   A   
I2CDATABYTE . . . . . . .  D ADDR   0046H   A   
I2C_ISR . . . . . . . . .  C ADDR   0118H   A   
IDLE_TIME . . . . . . . .  D ADDR   0041H   A   
IN07IEN . . . . . . . . .  N NUMB   7FACH   A   
IN07IRQ . . . . . . . . .  N NUMB   7FA9H   A   
IN0BYTECOUNT. . . . . . .  N NUMB   7FB5H   A   
IN1BYTECOUNT. . . . . . .  N NUMB   7FB7H   A   
INITIALIZE4MSECCOUNTER. .  C ADDR   03CEH   A   
INITIALIZEINTERRUPTSYSTEM  C ADDR   03EEH   A   
INITIALIZEIOSYSTEM. . . .  C ADDR   03D2H   A   
INT0_ISR. . . . . . . . .  C ADDR   0118H   A   
INT1_ISR. . . . . . . . .  C ADDR   0118H   A   
INT4_ISR. . . . . . . . .  C ADDR   0118H   A   
INT5_ISR. . . . . . . . .  C ADDR   0118H   A   
INT6_ISR. . . . . . . . .  C ADDR   0118H   A   
INTERFACEDESCRIPTOR . . .  C ADDR   02E0H   A   
INTERFACE_CLEAR_FEATURE .  C ADDR   023AH   A   
INTERFACE_GET_STATUS. . .  C ADDR   026BH   A   
INTERFACE_SET_FEATURE . .  C ADDR   023AH   A   
INVALID . . . . . . . . .  C ADDR   023AH   A   
ISDESCRIPTOR. . . . . . .  B ADDR   0020H.3 A   
LEDBUFFER . . . . . . . .  D ADDR   0046H   A   
LEDSTROBE . . . . . . . .  D ADDR   0047H   A   
LEDVALUE. . . . . . . . .  D ADDR   0048H   A   
LIGHTVALUES . . . . . . .  D ADDR   0046H   A   
LOADSUDPTR. . . . . . . .  C ADDR   01B8H   A   
MAIN. . . . . . . . . . .  C ADDR   0402H   A   
MONITORSPACE. . . . . . .  D ADDR   0021H   A   
MORE. . . . . . . . . . .  C ADDR   040BH   A   
MSEC_COUNTER. . . . . . .  D ADDR   0049H   A   
NEXTDPTR. . . . . . . . .  C ADDR   01CBH   A   
NEXTSTRING. . . . . . . .  C ADDR   0291H   A   
NOTB5 . . . . . . . . . .  C ADDR   0181H   A   
NOT_USED. . . . . . . . .  C ADDR   0118H   A   
OLD_BUTTONS . . . . . . .  D ADDR   0046H   A   
OUT07IEN. . . . . . . . .  N NUMB   7FADH   A   
OUT07IRQ. . . . . . . . .  N NUMB   7FAAH   A   
OUT0BYTECOUNT . . . . . .  N NUMB   7FC5H   A   
OVERLAY . . . . . . . . .  D ADDR   0046H   A   
PAGEREG . . . . . . . . .  D ADDR   0092H   A   
PCON. . . . . . . . . . .  D ADDR   0087H   A   
PORTA_CONFIG. . . . . . .  N NUMB   7F93H   A   
PORTA_OE. . . . . . . . .  N NUMB   7F9CH   A   
PORTA_OUT . . . . . . . .  N NUMB   7F96H   A   
PORTA_PINS. . . . . . . .  N NUMB   7F99H   A   
PORTB_CONFIG. . . . . . .  N NUMB   7F94H   A   
PORTB_OE. . . . . . . . .  N NUMB   7F9DH   A   
PORTB_PINS. . . . . . . .  N NUMB   7F9AH   A   
PROCESSOUTPUTREPORT . . .  C ADDR   0416H   A   
PSW . . . . . . . . . . .  D ADDR

⌨️ 快捷键说明

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