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

📄 gamepad_v0.89.dt

📁 612应用资料GAMEPAD_V0.89.rar 义隆汇编代码
💻 DT
字号:
;=========================================
;	USB 8 KEY GAMEPAD
;	MODIFY BY HOWARD 08/08/2002
;	MODIFY BY NEKO	06/05/2003
;=========================================





;===============================================================================
;	PROGRAM  REGISTERS
;===============================================================================


	R0			== 0X00
	TCC		   	== 0X01
	PC			== 0X02
	STATUS			== 0X03
	RSR		   	== 0X04
	PORT5		 	== 0X05
	PORT6		 	== 0X06
	PORT7		 	== 0X07
	R8			== 0X08
	R9			== 0X09
	RA			== 0X0A
	RB			== 0X0B
	RC			== 0X0C
	RD			== 0X0D
	RE			== 0X0E
	RF			== 0X0F


;=================================================================================
;	USB REGISTERS ASSIGN
;=================================================================================

	TRANSFER		== 0X10;	[0]CMD REPORT DATA FINISH(0) OR NOT(1) [1]DEVICE CONFIG REPORT OK(1) OR NOT(0)
	A_TEMP		   	== 0X11
	STATUS_TEMP	  	== 0X12
	RSR_TEMP		== 0X13
	PACK_MAX		== 0X14
	INCRE			== 0X15
	DATA_MAX		== 0X16
	PC_WANT		  	== 0X17
	PORT6_STATE 	 	== 0X18
	PORT6_TEMP	   	== 0X19
	PORT7_STATE	  	== 0X1A
	PORT7_TEMP	   	== 0X1B
	X_DATA   		== 0X1C
	Y_DATA   		== 0X1D
	BTM_DATA 		== 0X1E
	CMD_SELECT		== 0X1F;	EP0 CMD SELECTOR
	BTM_DATA2		== 0X20
	REP_DATA		== 0X21;	TURBO SET REGISTER
	REP_DATA2		== 0X22;	TURBO SET REGISTER2
	CHECKPOINT		== 0X23;	[0]TURBO SET [1]TURBO CLR
	TMP_DATA		== 0X24;	LAST KEY STATUS
	TMP_DATA2  	  	== 0X25;	LAST KEY STATUS2
	TEMP			== 0X26
	TEMP1			== 0X27
	TCTEMP			== 0X28;	TURBO REPORT CHECK TEMP

	BYTE0				== 0X38
	BYTE1				== 0X39
	BYTE2				== 0X3A
	BYTE3				== 0X3B
	BYTE4				== 0X3C
	BYTE5				== 0X3D
	BYTE6				== 0X3E
	BYTE7				== 0X3F


              
		
;========================================================================
;	PROGRAM   START
;========================================================================
	ORG		0X00
	JMP		INITIAL
	ORG		0X0A
	
	DISI
	MOV	A_TEMP,A	;SAVE A
	SWAP	A_TEMP
	SWAPA	RSR		;SAVE RSR(R4)
	MOV	RSR_TEMP,A
	SWAPA	STATUS		;SAVE STATUS(R3)
	MOV	STATUS_TEMP,A
	CLR	RSR
	JMP	INT_STATE
	

		

;============================================================
;	DESCRIPTORS
;============================================================

DEVICE_TABLE: 
;LIST:
		ADD	PC,A
		RETL	@0X12;0	START OF DEVICE DESCRIPTOR
		RETL	@0X01;1
		RETL	@0X00;2
		RETL	@0X01;3
		RETL	@0X00;4
		RETL	@0X00;5
		RETL	@0X00;6
		RETL	@0X08;7
		;TRANS == 1
		RETL	@0X03;8  Vendor ID(assigned by USB)
		RETL	@0X06;9
		RETL	@0X75;A  Product ID 0x0001 (assigned by manufacturer) 
		RETL	@0X68;B  
		RETL	@0X00;C  Device release number (assigned by manufacturer)
		RETL	@0X01;D
		RETL	@0X00;E  Index of String descriptor describing manufacturer
		RETL	@0X22;F  Index of string descriptor describing product
		;TRANS == 2
		RETL	@0X00;10  Index of String descriptor desribing the device's serial number
		RETL	@0X01;11	END OF DEVICE DESCRIPTOR
		;TRANS == 3  
CONFIG_TABLE:
		TBL
		;CONFIGURATION DESCRIPTOR	
		RETL	@0X09;12	START OF CONFIG
		RETL	@0X02;13
		RETL	@0X22;14
		RETL	@0X00;15
		RETL	@0X01;16
		RETL	@0X01;17
		RETL	@0X00;18
		RETL	@0X80;19
		;TRANS ==1
		RETL	@0X32;1A
		RETL	@0X09;1B	START OF INTERFACE
		RETL	@0X04;1C
		RETL	@0X00;1D
		RETL	@0X00;1E
		RETL	@0X01;1F
		RETL	@0X03;20
		RETL	@0X00;21
		;TRANS ==2
		RETL	@0X00;22
		RETL	@0X00;23
		RETL	@0X09;24	START OF HID 
		RETL	@0X21;25
		RETL	@0X00;26
		RETL	@0X01;27
		RETL	@0X00;28
		RETL	@0X01;29
		;TRANS ==3
		RETL	@0X22;2A
		RETL	@0X39;2B
		RETL	@0X00;2C
		RETL	@0X07;2D	START OF ENDPOINT
		RETL	@0X05;2E
		RETL	@0X81;2F
		RETL	@0X03;30
		RETL	@0X08;31
		;TRANS ==4
		RETL	@0X00;32
		RETL	@0X0A;33
		;TRANS ==5         INCRE == 12    
		
HID_TABLE:
		TBL
		;REPORT DESCRIPT
		RETL	@0X05;34	INCRE == 34  DATA_MAX == 39
		RETL	@0X01;35
		RETL	@0X09;36
		RETL	@0X05;37
		RETL	@0XA1;38
		RETL	@0X01;39
		RETL	@0X09;3A
		RETL	@0X01;3B
		;8BYTES--TRANS==1
		RETL	@0XA1;3C
		RETL	@0X00;3D
		RETL	@0X09;3E
		RETL	@0X30;3F
		RETL	@0X09;40
		RETL	@0X31;41
		RETL	@0X15;42
		RETL	@0X00;43
		;16BYTES--TRANS==2
		RETL	@0X26;44
		RETL	@0XFF;45
		RETL	@0X00;46
		RETL	@0X35;47
		RETL	@0X00;48
		RETL	@0X46;49
		RETL	@0XFF;4A
		RETL	@0X00;4B
		;24BYTES--TRANS==3
		RETL	@0X66;4C
		RETL	@0X00;4D
		RETL	@0X00;4E
		RETL	@0X95;4F
		RETL	@0X02;50
		RETL	@0X75;51
		RETL	@0X08;52
		RETL	@0X81;53
		;32BYTES--4
		RETL	@0X02;54
		RETL	@0XC0;55
		RETL	@0X05;56
		RETL	@0X09;57
		RETL	@0X19;58
		RETL	@0X01;59
		RETL	@0X29;5A
		RETL	@0X0A;5B	10KEY
		;40BYTES--5
		RETL	@0X15;5C
		RETL	@0X00;5D
		RETL	@0X25;5E
		RETL	@0X01;5F
		RETL	@0X95;60
		RETL	@0X0A;61	10KEY	
		RETL	@0X75;62
		RETL	@0X01;63
		;48BYTES--6
		RETL	@0X81;64 
		RETL	@0X02;65
		RETL	@0X95;
		RETL	@0X01;
		RETL	@0X75;
		RETL	@0X06;
		RETL	@0X81;
		RETL	@0X01;
		;56bytes--7
		RETL	@0XC0;66	End of Report Descriptor
/*		
		
		RETL	@0X95;67
		RETL	@0X01;68
		RETL	@0X81;69
		RETL	@0X06;6A
		RETL	@0X09;6B
		;56BYTES--7
		RETL	@0X3C;6C
		RETL	@0X15;6D
		RETL	@0X00;6E
		RETL	@0X25;6F
		RETL	@0X01;70
		RETL	@0X75;71
		RETL	@0X01;72
		RETL	@0X95;73
		;64BYTES--8
		RETL	@0X01;74
		RETL	@0XB1;75
		RETL	@0X22;76
		RETL	@0X95;77
		RETL	@0X07;78
		RETL	@0XB1;79	
		RETL	@0X01;7A
		RETL	@0XC0;7B	END OF REPORT DESCRIPTOR
		;72BYTES--9  
*/	
	
STRING0T:
		TBL
		RETL	@0X04;7C	STRING DESCRIPTOR OF LANGUAGES
		RETL	@0X03;7D
		RETL	@0X09;7E
		RETL	@0X04;7F	END OF LANGUAGES		
		;TRANS == 1		 INCRE == 7C  DATA_MAX == 4					
STRING1T:		
		TBL
		RETL	@0X4E;80	STRING DESCRIPTOR OF MANUFACTURE
		RETL	@0X03;81	NEKO Microelectronics Corporation
		RETL	@0X4E;82	N
		RETL	@0X00;83
		RETL	@0X45;84	E
		RETL	@0X00;85
		RETL	@0X4B;86	K
		RETL	@0X00;87
		;TRANS == 1
		RETL	@0X4F;88	O
		RETL	@0X00;89
		RETL	@0X20;8A	SPACE
		RETL	@0X00;8B
		RETL	@0X4D;8C	M
		RETL	@0X00;8D
		RETL	@0X69;8E	i
		RETL	@0X00;8F
		;TRANS == 2
		RETL	@0X63;90	c
		RETL	@0X00;91	
		RETL	@0X72;92	r
		RETL	@0X00;93
		RETL	@0X6F;94	o
		RETL	@0X00;95
		RETL	@0X65;96	e
		RETL	@0X00;97
		;TRANS == 3		 
		RETL	@0X6C;98	l
		RETL	@0X00;99
		RETL	@0X65;9A	e
		RETL	@0X00;9B
		RETL	@0X63;9C	c
		RETL	@0X00;9D
		RETL	@0X74;9E	t
		RETL	@0X00;9F
		
		RETL	@0X72;A0	r
		RETL	@0X00;A1
		RETL	@0X6F;A2	o
		RETL	@0X00;A3
		RETL	@0X6E;A4	n
		RETL	@0X00;A5
		RETL	@0X69;A6	i
		RETL	@0X00;A7
		
		RETL	@0X63;A8	c
		RETL	@0X00;A9
		RETL	@0X73;AA	s
		RETL	@0X00;AB
		RETL	@0X20;AC	SPACE
		RETL	@0X00;AD
		RETL	@0X43;AE	C
		RETL	@0X00;AF
		
		RETL	@0X6F;B0	o
		RETL	@0X00;B1
		RETL	@0X72;B2	r
		RETL	@0X00;B3
		RETL	@0X70;B4	p
		RETL	@0X00;B5
		RETL	@0X6F;B6	o
		RETL	@0X00;B7
		
		RETL	@0X72;B8	r
		RETL	@0X00;B9
		RETL	@0X61;BA	a
		RETL	@0X00;BB
		RETL	@0X74;BC	t
		RETL	@0X00;BD
		RETL	@0X69;BE	i
		RETL	@0X00;BF
		
		RETL	@0X6F;C0	o
		RETL	@0X00;C1
		RETL	@0X6E;C2	n
		RETL	@0X00;
		RETL	@0X20;		SPACE
		RETL	@0X00;
		RETL	@0X46;		F
		RETL	@0X00;
		
		RETL	@0X55;		U
		RETL	@0X00;
		RETL	@0X43;		C
		RETL	@0X00;
		RETL	@0X4B;		K
		RETL	@0X00;C3		End of Manufacture String Descriptor
		
STRING2T:
		TBL					
		RETL	@0X22;C4		Strat of Product String Descriptor
		RETL	@0X03;C5		INCRE == C4  DATA_MAX == 22
		RETL	@0X55;C6	
		RETL	@0X00;C7
		RETL	@0X53;C8	
		RETL	@0X00;C9
		RETL	@0X42;CA	
		RETL	@0X00;CB
		
		RETL	@0X20;CC	
		RETL	@0X00;CD
		RETL	@0X47;CE	
		RETL	@0X00;CF
		RETL	@0X61;D0	
		RETL	@0X00;D1
		RETL	@0X6D;D2	
		RETL	@0X00;D3
		
		RETL	@0X65;D4	
		RETL	@0X00;D5
		RETL	@0X50;D6	
		RETL	@0X00;D7
		RETL	@0X61;D8	
		RETL	@0X00;D9
		RETL	@0X64;DA	
		RETL	@0X00;DB
		
		RETL	@0X20;DC	
		RETL	@0X00;DD
		RETL	@0X53;DE	
		RETL	@0X00;DF
		RETL	@0X54;E0	
		RETL	@0X00;E1
		RETL	@0X44;E2
		RETL	@0X00;E3
		
		RETL	@0X2E;E4
		RETL	@0X00;E5	End of Product String Descriptor		
	
	

;==========================================================================
;	END OF DESCRIPTOR
;==========================================================================


INITIAL:
		DISI
		MOV	A,@0B11010000	;DUALCLOCK DIS, WUE DIS, RUN BIT SET
		IOW	0X0E
			
		MOV	A,@0B00000011
		IOW	0X05	;SET BIT0 D+/DATA, BIT 1 D-/CLK PINS INPUT
		
		MOV	A,@0XFF
		MOV	R8,A	;DISABLE PORT6 CHANGE WAKEUP
		MOV	R9,A	;DISABLE PORT7 CHANGE WAKEUP
		
		CLR	RF
	
		CLR	0X3E	;CLR RAM
		CLR	0X3F
						
USB_MODE:
		MOV	A,@0B11000001
		IOW	0X0A		;SET TO USB MODE
			
		CALL	CLRRAMU
		CLR	RC
		CLR	RD
		CLR	RF
		CLR	TRANSFER
		CLRA	
		CONTW
	
		MOV	A,@0B00000110
		IOW	0X0F	;ENABLE EP0 INTERRUPT

⌨️ 快捷键说明

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