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

📄 usblib2.lst

📁 合泰USB键盘程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
"File: USBLIB2.ASM   Holtek Cross-Assembler  Version 2.86      Page 1


   1  0000              include		ht82k96e.inc


   2  0000              ;include    	usbrf.inc
   3  0000              include		usbfifo.inc


   4  0000              
   5  0000              
   6  0000              
   7  0000              extern		stall			:byte
   8  0000              extern		FIFO_Type		:byte
   9  0000              extern		FIFO_OUT1 		:byte
  10  0000              extern		int_temp1		:byte
  11  0000              extern		int_temp2		:byte
  12  0000              extern		fifo_sendlen	:byte
  13  0000              extern		bhas_len0		:bit
  14  0000              ;extern		bFLAG_FIFO_REDY		:bit
  15  0000              ;extern		bFLAG_AdrF		:bit
  16  0000              extern		bRmtWakeup		:bit
  17  0000              extern		baddr_state		:bit
  18  0000              
  19  0000              extern		CMD_ADDR		:byte
  20  0000              
  21  0000              FIFO_temp		equ			int_temp1
  22  0000              fifo_no			equ			int_temp2
  23  0000              FIFO_ADDR		equ			int_temp1
  24  0000              
  25  0000              
  26  0000              
  27  0000              USBlib		.Section	AT 270H 'code'   ;AT	USBlib_ADDRESS
  28  0000              ;----------------------------------------------------------------------------
  29  0000              ;FIFO 0 ready to read ?
  30  0000              
  31  0000              FIFO0_Rd_Check:
  32  0000  0F00        				mov		a,00000000b
  33  0001  2A80        				jmp		FIFO_Check
  34  0002              
  35  0002              FIFO1_RD_check:
  36  0002  0F08        				mov		a,00001000b
  37  0003  2A80        				jmp		FIFO_Check
  38  0004              FIFO2_RD_check:
  39  0004  0F10        				mov		a,00010000b
  40  0005  2A80        				jmp		FIFO_Check
  41  0006              FIFO3_RD_check:
  42  0006  0F18        				mov		a,00011000b
  43  0007  2A80        				jmp		FIFO_Check
  44  0008              
  45  0008              				
  46  0008              ;----------------------------------------------------------------------------
  47  0008              ;Len 0 ready to write ?
  48  0008              LEN0_Wr_Check:
  49  0008              ;FIFO 0 ready to write ?
  50  0008              FIFO0_Wr_Check:
  51  0008  0F02        				mov		a,00000010b
  52  0009  2A80        				jmp		FIFO_Check
  53  000A              FIFO1_Wr_check:
  54  000A  0F0A        				mov		a,00001010b
  55  000B  2A80        				jmp		FIFO_Check
"File: USBLIB2.ASM   Holtek Cross-Assembler  Version 2.86      Page 2

  56  000C              FIFO2_Wr_check:
  57  000C  0F12        				mov		a,00010010b
  58  000D  2A80        				jmp		FIFO_Check
  59  000E              FIFO3_Wr_check:
  60  000E  0F1A        				mov		a,00011010b
  61  000F  2A80        				jmp		FIFO_Check
  62  0010              				
  63  0010              FIFO_Check:
  64  0010  0080     E  				mov		FIFO_temp,a
  65  0011  0F46                        MOV     A,USB_MISC
  66  0012  0083                        MOV     MP1,A
  67  0013  0702        				mov		a,r1
  68  0014  0EE0        				and		a,11100000b
  69  0015  0500     E  				or		a,fifo_temp
  70  0016  0082        				mov		r1,a
  71  0017  22E2        				call	wait_4us
  72  0018  3002                        SET     R1.@USB_Req         	;Set request
  73  0019  22E2        				call	wait_4us
  74  001A  0F40                        MOV     A,(01H SHL @USB_Ready) 	;access ready flag
  75  001B              Check:
  76  001B  22D6        				call	wait_28us
  77  001C  0602                        AND     A,R1        			;Z=0:ready/1:not ready
  78  001D  0003                        RET
  79  001E              
  80  001E              ;----------------------------------------------------------------------------
  81  001E              ;----BEGIN (Read FIFO)
  82  001E              ReadFIFO0:
  83  001E  0F48                        MOV     A,USB_FIFO0
  84  001F  2A96                        JMP     ReadFIFO
  85  0020              ReadFIFO1:
  86  0020  0F49                        MOV     A,USB_FIFO1
  87  0021  2A96        				JMP		ReadFIFO	
  88  0022              ReadFIFO2:
  89  0022  0F4A                        MOV     A,USB_FIFO2
  90  0023  2A96        				JMP		ReadFIFO	
  91  0024              ReadFIFO3:
  92  0024  0F4B                        MOV     A,USB_FIFO3
  93  0025  2A96        				JMP		ReadFIFO	
  94  0026              
  95  0026              ReadFIFO:
  96  0026  0080     E                  MOV     FIFO_NO,A             	;FIFO NO.
  97  0027  1F00     E                  CLR     FIFO_SendLen            ;Initial length to 0
  98  0028  0F00     E                  MOV     A,OFFSET FIFO_Type      ;set input FIFO buffer pointer
  99  0029  0081                        MOV     MP0,A                   ;
 100  002A              ReadFIFOLoop:
 101  002A  0700     E                  MOV     A,FIFO_NO              	;FIFO NO.
 102  002B  0083                        MOV     MP1,A                   ;
 103  002C  0702                        MOV     A,R1                    ;Read FIFO data
 104  002D  0000        				nop
 105  002E  0080                        MOV     R0,A                    ;
 106  002F  1480     E                  INC     FIFO_SendLen            ;Getting data length++
 107  0030  1481                        INC     MP0                     ;Update to next pointer
 108  0031  0F08                        MOV     A,FIFO_SIZE             ;FIFO full ?
 109  0032  0400     E                  XOR     A,FIFO_SendLen          ;
 110  0033  3D0A                        SZ      Z                       ;
 111  0034  2AC7                        JMP     E1ND_Request             ;Yes
 112  0035  0F46                        MOV     A,USB_MISC              ;Check ready ?
 113  0036  0083                        MOV     MP1,A                   ;
 114  0037  22D6        				call	wait_28us
 115  0038  3F02                        SZ      R1.@USB_Ready           ;
"File: USBLIB2.ASM   Holtek Cross-Assembler  Version 2.86      Page 3

 116  0039  2A9A                        JMP     ReadFIFOLoop            ;Yes
 117  003A  2AC7                        JMP     E1ND_Request             ;No Exit for not 8 bytes data
 118  003B              ;----END (Read FIFO)
 119  003B              
 120  003B              ;----------------------------------------------------------------------------
 121  003B              ;----BEGIN (Write FIFO)
 122  003B              ;Write FIFO_OUT1 Data to FIFO Buffer 
 123  003B              WriteFIFO0:
 124  003B  0F48                        MOV     A,USB_FIFO0
 125  003C  2AB3                        JMP     WriteFIFO
 126  003D              WriteFIFO1:
 127  003D  0F49                        MOV     A,USB_FIFO1
 128  003E  2AB3        				JMP		WriteFIFO
 129  003F              WriteFIFO2:
 130  003F  0F4A                        MOV     A,USB_FIFO2
 131  0040  2AB3        				JMP		WriteFIFO
 132  0041              WriteFIFO3:
 133  0041  0F4B                        MOV     A,USB_FIFO3
 134  0042  2AB3        				JMP		WriteFIFO
 135  0043              
 136  0043              WriteFIFO:
 137  0043  0080     E                  MOV     FIFO_NO,A             	;FIFO NO.
 138  0044  0F00     E                  MOV     A,OFFSET FIFO_OUT1      ;set output FIFO buffer pointer
 139  0045  0081                        MOV     MP0,A                   ;
 140  0046              WriteFIFOLoop:
 141  0046  1080     E                  SZ      FIFO_SendLen           	;Any data to write ?
 142  0047  2AB9                        JMP     WriteFIFOTag            ;Yes
 143  0048  2AC7                        JMP     EndWrite                ;No
 144  0049              WriteFIFOTag:
 145  0049  0700     E                  MOV     A,FIFO_NO              	;FIFO NO.
 146  004A  0083                        MOV     MP1,A                   ;
 147  004B              				
 148  004B  339B        				SET		FIFO_w_c_b
 149  004C  0700                        MOV     A,R0                    ;Write data to FIFO
 150  004D  0082                        MOV     R1,A                    ;
 151  004E  379B        				CLR		FIFO_w_c_b				
 152  004F              
 153  004F  1580     E                  DEC     FIFO_SendLen           	;Getting data length++
 154  0050  1481                        INC     MP0                     ;Update to next pointer
 155  0051  0F46                        MOV     A,USB_MISC              ;End of FIFO ?
 156  0052  0083                        MOV     MP1,A                   ;
 157  0053  22D6        				call	wait_28us
 158  0054  3F02                        SZ      R1.@USB_Ready           ;
 159  0055  2AB6                        JMP     WriteFIFOLoop           ;No
 160  0056  2AC7        				jmp		EndWrite
 161  0057              ;------------------------------------------------------------------------
 162  0057              WriteLen0:
 163  0057              ;;				SnZ		bFLAG_FIFO_REDY
 164  0057              ;;				jmp		E1ND_Request
 165  0057              ;;                set     bFLAG_AdrF  	;have finished address write
 166  0057              ;;				clr		bFLAG_FIFO_REDY
 167  0057              ;;				clr		int_reg.@int0
 168  0057              ;;wait_int0_high:
 169  0057              ;;				clr		wdt
 170  0057              ;;				snz		int_reg.@int0
 171  0057              ;;				jmp		wait_int0_high
 172  0057              EndWrite:
 173  0057              ;----------------------------------------------------------------------------
 174  0057              ;----BEGIN (End request)
 175  0057              E1ND_Request:
"File: USBLIB2.ASM   Holtek Cross-Assembler  Version 2.86      Page 4

 176  0057  0F46                        MOV     A,USB_MISC
 177  0058  0083                        MOV     MP1,A

⌨️ 快捷键说明

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