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

📄 mouse.lis

📁 用ST92163开发的鼠标
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 383:../src/mouse.c **** 	ENDPR4_A |= 0x02 ;	/* Control endpoint */
 945 044f 05F802   		or 	@ENDPR4_A,#2
 946              	.LMM139:
 384:../src/mouse.c **** 
 385:../src/mouse.c **** 	EP4RxAddr = RxBuffer[ 2] ;
 948 0452 BF240010 		ldw  	@EP4RxAddr,#dpr:pof(@RxBuffer+16)
 949              	.LMM140:
 386:../src/mouse.c **** 	EP4RxCount = MAX_PACKET_SIZE ;
 951 0456 BF260008 		ldw  	@EP4RxCount,#8
 952              	.LMM141:
 387:../src/mouse.c **** 	EP4TxAddr = 0 ;	/* Insure there is a valid Tx address in case of a STATUS IN */
 954 045a BF200000 		ldw  	@EP4TxAddr,#0
 955              	.LMM142:
 388:../src/mouse.c **** 
 389:../src/mouse.c **** 	ENDPR4_A &= ~0x30 ;		/* EP4 TX STAT_DISABLED */
 957 045e 15F8CF   		and 	@ENDPR4_A,#207
 958              	.LMM143:
 390:../src/mouse.c **** 	ENDPR4_B |= 0x30 ;		/* EP4 RX STAT_VALID */
 960 0461 05F930   		or 	@ENDPR4_B,#48
 961              	.LMM144:
 391:../src/mouse.c **** 
 392:../src/mouse.c **** 	/* INT IN */
 393:../src/mouse.c **** 	ENDPR5_A &= ~0x30 ;		/* EP5 TX STAT_DISABLED */
 963 0464 15FACF   		and 	@ENDPR5_A,#207
 964              	.LMM145:
 394:../src/mouse.c **** 	ENDPR5_B &= ~0x30 ; 	/* EP5 RX STAT_DISABLED */
 966 0467 15FBCF   		and 	@ENDPR5_B,#207
 967              	.LMM146:
 395:../src/mouse.c **** 	ENDPR5_B |= 0x1 ;		/* EP5 is Device 1 Endpoint 1 */
 969 046a 05FB01   		or 	@ENDPR5_B,#1
 970              	.LMM147:
 396:../src/mouse.c **** 
 397:../src/mouse.c **** 	spp( USB_PG) ;
 972              	; #APP
 973 046d C73E     		spp #15
 974              	; #NO_APP
 975              	.LMM148:
 398:../src/mouse.c **** 	DADDR2 = 0 | 0x80 ;		/* EP0 default address */
 977 046f F5F280   		ld  	@DADDR2,#-128
 978              	.LMM149:
 399:../src/mouse.c **** }
 980 0472 46       		ret 
 981              		.endproc
 982              	.Lscope7:
 986              	
 987              		.globl MOUSE_set_configuration
 988              	
 989              		.desc	MOUSE_set_configuration, near
 990              		.proc	MOUSE_set_configuration
 991              	MOUSE_set_configuration:
 400:../src/mouse.c **** 
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s 			page 23


 401:../src/mouse.c **** void MOUSE_set_configuration( BYTE configuration_status)
 402:../src/mouse.c **** {
 993              	.LMM151:
 403:../src/mouse.c **** /* Called in the CTL endpoint context */
 404:../src/mouse.c **** 	if( configuration_status == 0)
 995 0473 0200     		or 	r0,r0
 996 0475 EB04     		jxnz 	.L214
 997              	.LMM152:
 405:../src/mouse.c **** 	{
 406:../src/mouse.c **** 	/* device is not configured */
 407:../src/mouse.c **** 		ENDPR5_A &= ~0x30 ;		/* Disable Tx */
 999 0477 15FACF   		and 	@ENDPR5_A,#207
 1000              	.LMM153:
 408:../src/mouse.c **** 	}
 1002 047a 46       		ret
 1003              	.L214:
 1004              	.LMM154:
 409:../src/mouse.c **** 	else
 410:../src/mouse.c **** 	{
 411:../src/mouse.c **** 	/* device is configured */
 412:../src/mouse.c **** 		ENDPR5_A &= ~0x70 ;
 1006 047b 15FA8F   		and 	@ENDPR5_A,#143
 1007              	.LMM155:
 413:../src/mouse.c **** 		ENDPR5_A |= 0x20 ; /* Tx STAT_NAK */
 1009 047e 05FA20   		or 	@ENDPR5_A,#32
 1010              	.LMM156:
 414:../src/mouse.c **** 	}
 415:../src/mouse.c **** }
 1012 0481 46       		ret 
 1013              		.endproc
 1014              	.Lscope8:
 1016              	
 1017              		.globl EP4TxCount
 1018              		.desc	EP4TxCount, 16bit register
 1019              	EP4TxCount=	34
 1021              	
 1022              		.globl ep4_int
 1023              	
 1024              		.desc	ep4_int, near
 1025              		.desc	ep4_int, interrupt
 1026              		.proc	ep4_int
 1027              	ep4_int:
 416:../src/mouse.c **** 
 417:../src/mouse.c **** #pragma INTERRUPT ep4_int
 418:../src/mouse.c **** void ep4_int( void)
 419:../src/mouse.c **** {
 1029 0482 66EA     		push 	R234
 1030 0484 74D6     		pushw	rr6
 1031 0486 74D4     		pushw	rr4
 1032 0488 74D2     		pushw	rr2
 1033 048a 74D0     		pushw	rr0
 1034 048c FE       		sdm
 1035              	.LMM158:
 420:../src/mouse.c **** 	spp( 4) ;
 1037              	; #APP
 1038 048d C712     		spp #4
 1039              	; #NO_APP
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s 			page 24


 1040              	.LMM159:
 421:../src/mouse.c **** 
 422:../src/mouse.c **** 	if( ENDPR4_A == 0xEE)	/* Correct SETUP received */
 1042 048f 95F8EE   		cp   	@ENDPR4_A,#238
 1043 0492 EB74     		jxnz 	.L217
 1044              	.LMM160:
 423:../src/mouse.c **** 	{
 424:../src/mouse.c **** 		ENDPR4_B |= 0x80 ;	/* By default we expect STATUS_OUT */
 1046 0494 05F980   		or 	@ENDPR4_B,#128
 1047              	.LMM161:
 425:../src/mouse.c **** 		CurDevice = 2 ;
 1049 0497 2FF10200 		ld  	dpr:pof(@CurDevice),#2
 1049      00
 1050              	.LMM162:
 426:../src/mouse.c **** 		CurRxBuffer = (BYTE *) EP4RxAddr ;
 1052 049c EF24D2   		ldw  	rr2,@EP4RxAddr
 1053 049f E2F30000 		ldw  	dpr:pof(@CurRxBuffer),rr2
 1054              	.LMM163:
 427:../src/mouse.c **** 		fsm_state[ 2] = do_setup() ;
 1056 04a3 D20000   		call 	@do_setup   
 1057 04a6 C5F10002 		ld  	dpr:pof(@fsm_state+2),r1
 1058              	.LMM164:
 428:../src/mouse.c **** 		switch( fsm_state[ 2])
 1060 04aa C4F10002 		ld 	r1,dpr:pof(@fsm_state+2)
 1061 04ae 0C00     		ld 	r0,#0
 1062 04b0 CFD0     		decw 	rr0
 1063 04b2 97D10004 		cpw  	rr0,#4
 1064 04b6 BB4C     		jxugt	.L225
 1065 04b8 4E00     		addw 	rr0,rr0
 1066 04ba EE       		spm
 1067 04bb 86F004C3 		ldw  	rr0,sof(.L226)(rr0)
 1067      D0
 1068 04c0 FE       		sdm
 1069 04c1 D4D0     		jp   	(rr0)
 1070              	.L226:
 1071              	$start_switch_table_226:
 1072 04c3 04CD     		.word sof(.L219)
 1073 04c5 04D6     		.word sof(.L220)
 1074 04c7 0504     		.word sof(.L225)
 1075 04c9 04FA     		.word sof(.L224)
 1076 04cb 04FA     		.word sof(.L224)
 1077              	$end_switch_table_226:
 1078              	.L219:
 1079              	.LMM165:
 429:../src/mouse.c **** 		{
 430:../src/mouse.c **** 			case TX_STALL:
 431:../src/mouse.c **** 				ENDPR4_A &= ~0x30 ;	/* Clear STAT bits */
 1081 04cd 15F8CF   		and 	@ENDPR4_A,#207
 1082              	.LMM166:
 432:../src/mouse.c **** 				ENDPR4_A |= 0x10 ;		/* Tx STAT_STALL */
 1084 04d0 05F810   		or 	@ENDPR4_A,#16
 1085              	.LMM167:
 433:../src/mouse.c **** 				break ;
 1087 04d3 8D058C   		jxt  	.L227
 1088              	.L220:
 1089              	.LMM168:
 434:../src/mouse.c **** 			case TX_N:
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s 			page 25


 435:../src/mouse.c **** 				EP4TxAddr = data_ptr ;
 1091 04d6 E2F20000 		ldw  	rr2,dpr:pof(@data_ptr)
 1092 04da EFD220   		ldw  	@EP4TxAddr,rr2
 1093              	.LMM169:
 436:../src/mouse.c **** 				if( data_size[ 2] >= MAX_PACKET_SIZE)
 1095 04dd 2F910700 		cp   	dpr:pof(@data_size+2),#7
 1095      02
 1096 04e2 3B06     		jxule	.L221
 1097              	.LMM170:
 437:../src/mouse.c **** 				{
 438:../src/mouse.c **** 					EP4TxCount = MAX_PACKET_SIZE ;
 1099 04e4 BF220008 		ldw  	@EP4TxCount,#8
 1100              	.LMM171:
 439:../src/mouse.c **** 				}
 1102 04e8 8B14     		jxt  	.L244
 1103              	.L221:
 1104              	.LMM172:
 440:../src/mouse.c **** 				else
 441:../src/mouse.c **** 				{
 442:../src/mouse.c **** 					EP4TxCount = data_size[ 2] ;
 1106 04ea C4F10002 		ld   	r1,dpr:pof(@data_size+2)
 1107 04ee 0C00     		ld   	r0,#0
 1108 04f0 EFD022   		ldw  	@EP4TxCount,rr0
 1109              	.LMM173:
 443:../src/mouse.c **** 					fsm_state[ 2] = TX_LAST ;
 1111 04f3 2FF10300 		ld  	dpr:pof(@fsm_state+2),#3
 1111      02
 1112              	.LMM174:
 444:../src/mouse.c **** 				}
 445:../src/mouse.c **** 		
 446:../src/mouse.c **** 				ENDPR4_A |= 0x30 ;	/* TX STAT_VALID */
 447:../src/mouse.c **** 				break ;
 1114 04f8 8B04     		jxt  	.L244
 1115              	.L224:
 1116              	.LMM175:
 448:../src/mouse.c **** 			case TX_ACK_ADDR:
 449:../src/mouse.c **** 			case TX_0:
 450:../src/mouse.c **** 				EP4TxCount = 0 ;					/* Enable the transmission */
 1118 04fa BF220000 		ldw  	@EP4TxCount,#0
 1119              	.LMM176:
 451:../src/mouse.c **** 				ENDPR4_A |= 0x30 ;
 1121              	.L244:
 1122 04fe 05F830   		or 	@ENDPR4_A,#48
 1123              	.LMM177:
 452:../src/mouse.c **** 				break ;
 1125 0501 8D058C   		jxt  	.L227
 1126              	.L225:
 1127              	.LMM178:
 453:../src/mouse.c **** 			default:
 454:../src/mouse.c **** 				nop() ;
 1129              	; #APP
 1130 0504 FF       		nop
 1131              	; #NO_APP
 1132              	.LMM179:
 455:../src/mouse.c **** 		}
 456:../src/mouse.c **** 	}
 1134 0505 8D058C   		jxt  	.L227
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s 			page 26


 1135              	.L217:
 1136              	.LMM180:
 457:../src/mouse.c **** 	else if( (ENDPR4_A & 0xBF) == 0xAA)	/* IN (don't care toggle) */
 1138 0508 08F8     		ld  	r0,@ENDPR4_A
 1139 050a 1FC0     		bres	r0.6
 1140 050c 95D0AA   		cp   	r0,#170
 1141 050f EB55     		jxnz 	.L228
 1142              	.LMM181:
 458:../src/mouse.c **** 	{
 459:../src/mouse.c **** 		switch( fsm_state[ 2])
 1144 0511 C4F10002 		ld 	r1,dpr:pof(@fsm_state+2)
 1145 0515 0C00     		ld 	r0,#0
 1146 0517 47D1FFFE 		addw 	rr0,#-2
 1147 051b 97D10003 		cpw  	rr0,#3
 1148 051f BB6B     		jxugt	.L227
 1149 0521 4E00     		addw 	rr0,rr0
 1150 0523 EE       		spm
 1151 0524 86F0052C 		ldw  	rr0,sof(.L235)(rr0)
 1151      D0
 1152 0529 FE       		sdm
 1153 052a D4D0     		jp   	(rr0)
 1154              	.L235:
 1155              	$start_switch_table_235:
 1156 052c 0534     		.word sof(.L230)
 1157 052e 058C     		.word sof(.L227)
 1158 0530 0587     		.word sof(.L241)
 1159 0532 0558     		.word sof(.L233)
 1160              	$end_switch_table_235:
 1161              	.L230:
 1162              	.LMM182:
 460:../src/mouse.c **** 		{
 461:../src/mouse.c **** 			case TX_N:	/* after IN( n) => send next */
 462:../src/mouse.c **** 				EP4TxAddr += EP4TxCount ;
 1164 0534 EF22D0   		ldw  	rr0,@EP4TxCount
 1165 0537 47D020   		addw 	@EP4TxAddr,rr0
 1166              	.LMM183:
 463:../src/mouse.c **** 				data_size[ 2] -= EP4TxCount ;
 1168 053a EF22D0   		ldw  	rr0,@EP4TxCount
 1169 053d C5510002 		sub  	dpr:pof(@data_size+2),r1
 1170              	.LMM184:
 464:../src/mouse.c **** 				if( data_size[ 2] < MAX_PACKET_SIZE)
 1172 0541 2F910700 		cp   	dpr:pof(@data_size+2),#7
 1172      02
 1173 0546 BBB6     		jxugt	.L244
 1174              	.LMM185:
 465:../src/mouse.c **** 				{
 466:../src/mouse.c **** 					EP4TxCount = data_size[ 2] ;
 1176 0548 C4F10002 		ld   	r1,dpr:pof(@data_size+2)
 1177 054c 0C00     		ld   	r0,#0
 1178 054e EFD022   		ldw  	@EP4TxCount,rr0
 1179              	.LMM186:
 467:../src/mouse.c **** 					fsm_state[ 2] = TX_LAST ;
 1181 0551 2FF10300 		ld  	dpr:pof(@fsm_state+2),#3
 1181      02
 1182              	.LMM187:
 468:../src/mouse.c **** 				}
 469:../src/mouse.c **** 
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s 			page 27


 470:../src/mouse.c **** 				ENDPR4_A |= 0x30 ;	/* Tx STAT_VALID */				
 471:../src/mouse.c **** 				break ;
 1184 0556 8BA6     		jxt  	.L244
 1185              	.L233:
 1186              	.LMM188:
 472:../src/mouse.c **** 			case TX_LAST:	/* after a IN( 0) => expect STATUS_OUT */
 473:../src/mouse.c **** 				break ;
 474:../src/mouse.c **** 			case TX_ACK_ADDR:
 475:../src/mouse.c **** 				spp( USB_PG) ;
 1188              	; #APP
 1189 0558 C73E     		spp #15
 1190              	; #NO_APP
 1191              	.LMM189:
 476:../src/mouse.c **** 				DADDR2 = 0x80 | address[ 2] ;
 1193 055a C4F30002 		ld  	r3,dpr:pof(@address+2)
 1194 055e 0FE3     		bset 	r3.7
 1195 0560 39F2     		ld  	@DADDR2,r3
 1196              	.LMM190:
 477:../src/mouse.c **** 				spp( 4) ;
 1198              	; #APP
 1199 0562 C712     		spp #4
 1200              	; #NO_APP
 1201              	.LMM191:
 478:../src/mouse.c **** 				/* Fall Through */
 479:../src/mouse.c **** 			case TX_0:	/* STATUS_IN */
 480:../src/mouse.c **** 				fsm_state[ 2] = UNDEFINED ;
 481:../src/mouse.c **** 				break ;
 482:../src/mouse.c **** 		}
 483:../src/mouse.c **** 	}
 1203 0564 8B21     		jxt  	.L241
 1204              	.L228:
 1205              	.LMM192:
 484:../src/mouse.c **** 	else if( (ENDPR4_A & 0x8F) == 0x82)	/* OUT (don't care Tx STAT */
 1207 0566 08F8     		ld  	r0,@ENDPR4_A
 1208 0568 15D08F   		and 	r0,#143
 1209 056b 95D082   		cp   	r0,#130
 1210 056e EB1C     		jxnz 	.L227
 1211              	.LMM193:
 485:../src/mouse.c **** 	{
 486:../src/mouse.c **** 		switch( fsm_state[ 2])
 1213 0570 C4F10002 		ld   	r1,dpr:pof(@fsm_state+2)
 1214 0574 0C00     		ld   	r0,#0
 1215 0576 97D10002 		cpw  	rr0,#2
 1216 057a 6B08     		jxz  	.L240
 1217 057c 97D10003 		cpw  	rr0,#3
 1218 0580 6B05     		jxz  	.L241
 1219 0582 8B08     		jxt  	.L227
 1220              	.L240:
 1221              	.LMM194:
 487:../src/mouse.c **** 		{
 488:../src/mouse.c **** 			case TX_N:	/* HOST stops transmission */
 489:../src/mouse.c **** 				ENDPR4_A &= ~0x30 ;	/* Tx STAT_DISABLE */
 1223 0584 15F8CF   		and 	@ENDPR4_A,#207
 1224              	.L241:
 1225              	.LMM195:
 490:../src/mouse.c **** 				/* Fall Through */
 491:../src/mouse.c **** 			case TX_LAST:	/* Status_out following transmission */
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s 			page 28


 492:../src/mouse.c **** 				fsm_state[ 2] = UNDEFINED ;				
 1227 0587 2FF10000 		ld  	dpr:pof(@fsm_state+2),#0
 1227      02
 1228              	.L227:
 1229              	.LMM196:
 493:../src/mouse.c **** 		}
 494:../src/mouse.c **** 	}
 495:../src/mouse.c **** 
 496:../src/mouse.c **** 	EP4RxCount = MAX_PACKET_SIZE ;
 1231 058c BF260008 		ldw  	@EP4RxCount,#8
 1232              	.LMM197:
 497:../src/mouse.c **** 	ENDPR4_B |= 0x30 ; /* Rx STAT_VALID */
 1234 0590 05F930   		or 	@ENDPR4_B,#48
 1235              	.LMM198:
 498:../src/mouse.c **** 	ENDPR4_A &= ~0x80 ;	/* Reset CTR */		
 1237 0593 15F87F   		and 	@ENDPR4_A,#127
 1238              	.LMM199:
 499:../src/mouse.c **** }
 1240 0596 75D0     		popw 	rr0
 1241 0598 75D2     		popw 	rr2
 1242 059a 75D4     		popw 	rr4
 1243 059c 75D6     		popw 	rr6
 1244 059e 76EA     		pop  	R234
 1245 05a0 D3       		iret
 1246              		.endproc
 1247              	.Lscope9:
 1250              	
 1251              		.globl ep5_int
 1252              	
 1253              		.desc	ep5_int, near
 1254              		.desc	ep5_int, interrupt
 1255              		.proc	ep5_int
 1256              	ep5_int:
 500:../src/mouse.c **** 
 501:../src/mouse.c **** #pragma INTERRUPT ep5_int
 502:../src/mouse.c **** void ep5_int( void)
 503:../src/mouse.c **** {
 1258 05a1 66EA     		push 	R234
 1259 05a3 FE       		sdm
 1260              	.LMM201:
 504:../src/mouse.c **** 	spp( 4) ;
 1262              	; #APP
 1263 05a4 C712     		spp #4
 1264              	; #NO_APP
 1265              	.LMM202:
 505:../src/mouse.c **** 	ENDPR5_A &= ~0x80 ;	/* Reset CTR bit */
 1267 05a6 15FA7F   		and 	@ENDPR5_A,#127
 1268              	.LMM203:
 506:../src/mouse.c **** }
 1270 05a9 76EA     		pop  	R234
 1271 05ab D3       		iret
 1272              		.endproc
 1273              	.Lscope10:
 1276              	
 1277              		.section .bss
 1278              	
 1279              		.desc	ms_tout, near
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s 			page 29


 1280              		.comm	ms_tout,2,1
 1282              	
 1283              		.desc	Mouse_Buffer, near
 1284              		.comm	Mouse_Buffer,4,1
 1285              		.section .text
 1287              	.Letext:
 1288              	
 1289              		.end

⌨️ 快捷键说明

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