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

📄 usb_int2.lst

📁 合泰USB键盘程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 250  0047              ;--------------------------------------------------------------------------------------	
 251  0047              AccessFIFO0_cont:
 252  0047              ;examine FIFO0 IN, SETUP, OUT Intterupt
 253  0047              
 254  0047  3800     E  				snz		bhas_data_out_previous1
 255  0048  2B9B        				jmp		AccessFIFO0_cont1
 256  0049  3400     E  				clr		bhas_data_out_previous1
 257  004A  2C0C        				jmp		ExitExt0
 258  004B              ;-------------------------------------------------------------------------------
 259  004B              AccessFIFO0_cont1:				
 260  004B  3800     E  				snz		bhas_data_out_previous2
 261  004C  2B9F        				jmp		AccessFIFO0_cont11
 262  004D  3400     E  				clr		bhas_data_out_previous2
 263  004E  2C0C        				jmp		ExitExt0
 264  004F              
 265  004F              ;-------------------------------------------------------------------------------
 266  004F              AccessFIFO0_cont11:				
 267  004F              
 268  004F              
 269  004F  3000     E  				set		bFLAG_Setup
 270  0050              CheckSetup:
 271  0050  0F46                        MOV     A,USB_MISC          	;MP1 point to Misc. register
 272  0051  0083                        MOV     MP1,A               	;
 273  0052  0000        				nop
 274  0053  0000        				nop
 275  0054  3A82        				snz		r1.@USB_Setup
 276  0055  3400     E  				clr		bFlag_setup
 277  0056              
 278  0056  3800     E  				snz		bFLAG_Setup
 279  0057  2BAD                        JMP     AccessFIFO0_cont2          	;No (data stage(Host to device)
 280  0058              Setup_stage:
 281  0058  3682        				clr		r1.@USB_Setup			;clear USB setup bit
 282  0059  3782        				clr		r1.@USB_Len0
 283  005A  3400     E  				clr		bwait_setup
 284  005B  3000     E  				set		bsetup_flag
 285  005C  2C0C        				jmp		Exitext0
 286  005D              ;-------------------------------------------------------------------------------
 287  005D              AccessFIFO0_cont2:
 288  005D  2000     E                  CALL    FIFO0_Rd_Check      	;Any data in FIFO 0 ?
 289  005E  3402                        CLR     R1.@USB_Req         	;No: Clear request for FIFO0_Rd_Check
 290  005F  390A                        SNZ     Z                  		;
 291  0060  2BB2                        JMP     HaveDataInFIFO0     	;Yes
 292  0061              
 293  0061              ;Host read out data from FIFO 0
 294  0061              ;Send next transaction data
 295  0061  2BCE                        JMP     SendFIFO0
"File: USB_INT2.ASM  Holtek Cross-Assembler  Version 2.86      Page 6

 296  0062              ;----------------------------------------------------------------------------
 297  0062              
 298  0062              
 299  0062              HaveDataInFIFO0:
 300  0062  2BDA                        JMP     DataStage           	;No (data stage(Host to device)
 301  0063              ;-----------------------------------------------------------------------------------------
 302  0063              get_cmd_data:
 303  0063  3400     E  				clr		bsetup_flag
 304  0064  2000     E                  CALL    FIFO0_Rd_Check      	;Any data in FIFO 0 ?
 305  0065  2000     E                  CALL    ReadFIFO0           	;Read FIFO 0
 306  0066              
 307  0066  1F05        				clr		acc
 308  0067  2000     E  				call	GetPipeBit
 309  0068  2000     E  				call	clearstall				;clear pipe0 stall status
 310  0069              
 311  0069  3400     E                  CLR     bFLAG_SndFC 			;No Continue Send(ReadNextCnf)
 312  006A              ;				clr		bFLAG_FIFO_REDY			;ignore address write
 313  006A              ;				clr		bFLAG_AdrF
 314  006A  3400     E  				CLR		bFLAG_RsqF				;Clear re_send Flag
 315  006B  3400     E                  CLR     bCMD_INDEX          	;set Return address to 0
 316  006C  3400     E  				clr		bhas_data_out_previous
 317  006D  3400     E  				clr		bhas_data_out_previous1
 318  006E  3400     E  				clr		bhas_data_out_previous2
 319  006F              
 320  006F              
 321  006F  0F00     E                  MOV     A,LOW GetEnd        	;Set Defaut Return Address
 322  0070  0080     E                  MOV     ReturnAddr,A      		;to ReturnAddr 
 323  0071              ;parsing request command & set command index
 324  0071  0F08                        MOV     A,08H               	;Request structure == 8 bytes ?
 325  0072  0400     E                  XOR     A,FIFO_SendLen      	;
 326  0073  390A                        SNZ     Z                   	;
 327  0074  2C09                        JMP		ToStallPipe0			;No: data length is invalid
 328  0075              ;Parsing command                            	;Yes: Parsing  command
 329  0075  0F60                        MOV     A,Setup_Type        	;Type
 330  0076  0600     E                  AND     A,FIFO_Type        		;Request Type
 331  0077              ;!!!!! Need in same page
 332  0077  1185                        SWAP    ACC                 	;Need be change when Setup_Type
 333  0078  1985                        RR      ACC                 	;changed
 334  0079              usb_request_pcl_5:
 335  0079  0386                        ADDM    A,PCL
 336  007A  2800     E                  JMP     StandardRequest     	;Standard Request
 337  007B  2800     E                  JMP     ClassRequest        	;Class Specific Request
 338  007C  2C09                        JMP		ToStallPipe0        	;No support Vendor Request
 339  007D  2C09                        JMP		ToStallPipe0        	;Illegal
 340  007E              ;----------------------------------------------------------------------------
 341  007E              
 342  007E              ;Host has read data out from FIFO 0
 343  007E              SendFIFO0:
 344  007E  3C00     E  				sz		bsetup_flag
 345  007F  2C0C                        JMP     ExitExt0
 346  0080              
 347  0080  2000     E                  CALL    FIFO0_Wr_Check       	;examine whether FIFO0 has data?
 348  0081  3402        				clr		r1.@USB_Req 
 349  0082  3D0A                        SZ      Z                   	;
 350  0083  2C0C        				JMP		ExitExt0
 351  0084              
 352  0084              ;examine whehter has data output
 353  0084                												;Write address to USB_ADDR_WAKE
 354  0084              
 355  0084              NoneTag:
"File: USB_INT2.ASM  Holtek Cross-Assembler  Version 2.86      Page 7

 356  0084  3800     E                  SnZ     bFLAG_SndFC 				;Continue Send (ReadNextCnf)
 357  0085  2C0C                        JMP     ExitExt0
 358  0086  3800     E  				snz		bhas_data_out_previous
 359  0087  2800     E  	            JMP     ReadNextCnf				;
 360  0088  3400     E  				clr		bhas_data_out_previous
 361  0089  2C0C        				jmp		ExitExt0
 362  008A              ;----------------------------------------------------------------------------
 363  008A              DataStage:
 364  008A  3C00     E  				sz		bsetup_flag
 365  008B  2BB3                        JMP     get_cmd_data
 366  008C  2000     E                  CALL    FIFO0_Rd_Check      	;Any data in FIFO 0 ?
 367  008D  2000     E                  CALL    ReadFIFO0           	;Read FIFO 0
 368  008E  3C00     E                  sz		bCMD_INDEX            	;
 369  008F  2BE2        				jmp		Set_SetOutput
 370  0090  2BE1        				jmp		RedundantData
 371  0091              
 372  0091              RedundantData:
 373  0091  2C0C                        JMP     ExitExt0
 374  0092              Set_SetOutput:
 375  0092  0700     E                  MOV     A,FIFO_SendLen         	;Is length == 1 ?
 376  0093  0C01                        XOR     A,01H                   ;
 377  0094  390A                        SNZ     Z                       ;
 378  0095  2C09                        JMP		ToStallPipe0            ;No
 379  0096  0700     E                  MOV     A,FIFO_TYPE            	;Output report (LED)
 380  0097  0080     E                  MOV     KB_LED,A                ;
 381  0098  2000     E  	            CALL    SetLED                  ;Set all keyboard LED
 382  0099  3400     E  				clr     bCMD_INDEX             	;Reset to 0
 383  009A  2BFA                        JMP     SendHandShake
 384  009B              ;----------------------------------------------------------------------------
 385  009B              RequestResponse:
 386  009B  3400     E                  CLR     bFLAG_RsqF
 387  009C  2000     E                  CALL    FIFO0_Wr_Check  		;Ready to response ?
 388  009D  390A                        SNZ     Z               		;
 389  009E  2BF5        				JMP		CanResponse
 390  009F  3402        				clr		r1.@USB_Req 
 391  00A0              
 392  00A0  3F82        				sz		r1.@usb_len0
 393  00A1  2C0C                        JMP     ExitExt0    			;continue to scan keyboard				
 394  00A2  3E82        				sz		r1.@USB_Setup
 395  00A3  2C0C        				jmp		ExitExt0    			;continue to scan keyboard
 396  00A4  2BEB        				jmp		RequestResponse
 397  00A5              CanResponse:
 398  00A5  2000     E                  CALL    WriteFIFO0
 399  00A6  3000     E  				set		bhas_data_out_previous
 400  00A7  3000     E  				set		bhas_data_out_previous1
 401  00A8  3000     E  				set		bhas_data_out_previous2
 402  00A9  2C0C        				jmp		ExitExt0
 403  00AA              
 404  00AA              ;----------------------------------------------------------------------------
 405  00AA              SendHandShake:
 406  00AA  2000     E                  CALL    LEN0_Wr_Check       	;FIFO0 ready ?
 407  00AB  390A                        SnZ     Z                   	;
 408  00AC  2C03        				jmp		sendHandShake_continue
 409  00AD  3402        				clr		r1.@USB_Req 
 410  00AE              
 411  00AE  3F82        				sz		r1.@usb_len0
 412  00AF  2C0C                        JMP     ExitExt0    			;continue to scan keyboard				
 413  00B0  3E82        				sz		r1.@USB_Setup
 414  00B1  2C0C        				jmp		ExitExt0    			;continue to scan keyboard
 415  00B2  2BFA        				jmp		sendHandshake
"File: USB_INT2.ASM  Holtek Cross-Assembler  Version 2.86      Page 8

 416  00B3              sendHandshake_continue:
 417  00B3  2000     E                  CALL    WriteLen0           	;ACK (Write 0 length)
 418  00B4              ;				SZ		bFLAG_FIFO_REDY
 419  00B4              ;				SET		bFLAG_AdrF				;the address response is written to FIFO
 420  00B4              ;				CLR		bFLAG_FIFO_REDY
 421  00B4  3000     E  				set		bwait_setup
 422  00B5  2C0C                        JMP     ExitExt0    			;continue to scan keyboard
 423  00B6              
 424  00B6              ;----------------------------------------------------------------------------
 425  00B6              SendFIFOOut:
 426  00B6  0080     E                  MOV     FIFO_SendLen ,A    		;data length to send
 427  00B7  3000     E  				set		bwait_setup
 428  00B8  2BEB        				jmp		RequestResponse
 429  00B9              ;----------------------------------------------------------------------------
 430  00B9              ToStallPipe0:
 431  00B9  1F05        				clr		acc
 432  00BA  2000     E  				call	GetPipeBit
 433  00BB  2000     E  				call	setstall
 434  00BC              ExitExt:
 435  00BC              ExitExt0:
 436  00BC  341B        				clr		Int_reg.@int0			;clr pipe0 int flag	
 437  00BD  2B69        				jmp		Exit_of_Ext_start
 438  00BE              ;----------------------------------------------------------------------------
 439  00BE              Check_Pipe1:
 440  00BE              AccessFIFO1:
 441  00BE              
 442  00BE  3C00     E  				sz     	bCMD_INDEX             	;Reset to 0
 443  00BF  2C20        				jmp		ExitExt1
 444  00C0              
 445  00C0  2000     E                  CALL    FIFO1_Wr_Check       	;FIFO0 ready ?
 446  00C1  3402        				clr		r1.@USB_Req 
 447  00C2  3D0A                        SZ      Z                   	;
 448  00C3  2C20        				JMP		ExitExt1
 449  00C4              
 450  00C4  3C00     E  				sz		bKB_KeyUpt
 451  00C5  2C17        				jmp		report_pipe1_data
 452  00C6  2C20        				jmp		ExitExt1
 453  00C7              
 454  00C7              
 455  00C7              report_pipe1_data:
 456  00C7  3400     E  				clr		bKB_KeyUpt				
 457  00C8  2000     E  	            CALL    MoveKeyboardData   	;Update it
 458  00C9              
 459  00C9              out_fifo1_data:
 460  00C9  2000     E                  CALL    FIFO1_Wr_Check       	;FIFO0 ready ?
 461  00CA  0F08        				mov		a,8
 462  00CB  0080     E  				mov		FIFO_SendLen,a	
 463  00CC  2000     E  	            CALL    WriteFIFO1
 464  00CD              
 465  00CD  3400     E  				clr		btime_out_KB
 466  00CE  1F00     E  				clr		TempKBTime
 467  00CF  1F00     E  				clr		tempkbtime_L
 468  00D0              
 469  00D0              
 470  00D0              ExitExt1:
 471  00D0  349B        				clr		int_reg.@int1
 472  00D1  3400     R  				clr		int_reg_temp.@int1	
 473  00D2  2B69        				JMP		Exit_of_Ext_start	
 474  00D3              
 475  00D3              ;----------------------------------------------------------------------------
"File: USB_INT2.ASM  Holtek Cross-Assembler  Version 2.86      Page 9

 476  00D3              Check_Pipe2:
 477  00D3              AccessFIFO2:
 478  00D3  3C00     E  				sz     	bCMD_INDEX             	;Reset to 0
 479  00D4  2C25        				jmp		ExitExt2
 480  00D5              
 481  00D5              ExitExt2:
 482  00D5  351B        				clr		int_reg.@int2
 483  00D6  3400     R  				clr		int_reg_temp.@int2	
 484  00D7  2B69        				JMP		Exit_of_Ext_start	
 485  00D8              
 486  00D8              ;----------------------------------------------------------------------------
 487  00D8              Check_Pipe3:
 488  00D8              AccessFIFO3:
 489  00D8  359B        				clr		int_reg.@int3
 490  00D9  3400     R  				clr		int_reg_temp.@int3	
 491  00DA  2B69        				JMP		Exit_of_Ext_start	
 492  00DB              ;----------------------------------------------------------------------------
 493  00DB              
 494  00DB              
 495  00DB              public	ToStallPipe0
 496  00DB              public	SendFIFOOut
 497  00DB              public	SendHandShake
 498  00DB              public	RequestResponse
 499  00DB              public	usb_request_pcl_5
 500  00DB              public	ext_start
 501  00DB              public	ExitExt	
 502  00DB              END


        0 Errors

⌨️ 快捷键说明

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