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

📄 mouse.lis

📁 用ST92163开发的鼠标
💻 LIS
📖 第 1 页 / 共 4 页
字号:
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s 			page 1


   1              	; ---------------------------------------------------------
   2              	;  ../src/mouse.c
   3              	;  compiled with GCC 2.7.2 ST9+ Software Development Toolchain Version 6.1.3 
   4              	;  Thu Oct 31 15:01:48 2002
   5              	;
   6              	;  OPTIMIZATIONS: 1
   7              	;  omit-frame-pointer
   8              	;  OPTIONS: compact
   9              	; ---------------------------------------------------------
  10              	
  11              	gcc_compiled.:
  12              		.assume no-parmusp,no-fp-on,compact 
  38              	
  39              		.globl mouse_str
  40              	
  41              		.section .rodata
  43              	
  44              		.desc	mouse_str, near
  45              	mouse_str:
  46 0000 F3       		.byte	243
  47 0001 C8       		.byte	200
  48 0002 F3       		.byte	243
  49 0003 64       		.byte	100
  50 0004 F3       		.byte	243
  51 0005 50       		.byte	80
  52 0006 F0       		.byte	240
  53 0007 E8       		.byte	232
  54 0008 03       		.byte	3
  55 0009 F3       		.byte	243
  56 000a 64       		.byte	100
  57              	
  58              		.section .data
  60              	
  61              		.desc	mouse_length, near
  62              	mouse_length:
  63 0000 00       		.byte	0
  65              	
  66              		.desc	mouse_fsm, near
  67              	mouse_fsm:
  68 0001 00       		.byte	0
  69              	
  70              		.globl P3DR
  71              		.desc	P3DR, 8bit register
  72              	P3DR=	227
  73              	
  74              		.section .text
  77              	
  78              		.globl mouse_cmd
  79              	
  80              		.desc	mouse_cmd, near
  81              		.proc	mouse_cmd
  82              	mouse_cmd:
  83              	.Ltext0:
   1:../src/mouse.c **** #include <cpu.h>
   2:../src/mouse.c **** #include <usb.h>
   3:../src/mouse.c **** 
   4:../src/mouse.c **** #pragma register_file EP4TxAddr		32
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s 			page 2


   5:../src/mouse.c **** extern volatile void *EP4TxAddr ;
   6:../src/mouse.c **** #pragma register_file EP4TxCount	34
   7:../src/mouse.c **** extern volatile WORD  EP4TxCount ;
   8:../src/mouse.c **** #pragma register_file EP4RxAddr		36
   9:../src/mouse.c **** extern volatile void *EP4RxAddr ;
  10:../src/mouse.c **** #pragma register_file EP4RxCount	38
  11:../src/mouse.c **** extern volatile WORD  EP4RxCount ;
  12:../src/mouse.c **** #pragma register_file EP5TxAddr		40
  13:../src/mouse.c **** extern volatile void *EP5TxAddr ;
  14:../src/mouse.c **** #pragma register_file EP5TxCount	42
  15:../src/mouse.c **** extern volatile WORD  EP5TxCount ;
  16:../src/mouse.c **** //#pragma register_file EP5RxAddr	44
  17:../src/mouse.c **** //extern volatile void *EP5RxAddr ;
  18:../src/mouse.c **** //#pragma register_file EP5RxCount	46
  19:../src/mouse.c **** //extern volatile WORD  EP5RxCount ;
  20:../src/mouse.c **** 
  21:../src/mouse.c **** //#pragma register_file ms_tout	44
  22:../src/mouse.c **** //extern volatile BYTE	ms_tout ;
  23:../src/mouse.c **** WORD ms_tout ;
  24:../src/mouse.c **** 
  25:../src/mouse.c **** #define DATA_IN()	;
  26:../src/mouse.c **** #define DATA_OUT()	;
  27:../src/mouse.c **** #define DATA_LOW()	(P3DR = ~0x10)
  28:../src/mouse.c **** #define DATA_HIGH()	(P3DR = 0xFF)
  29:../src/mouse.c **** #define DATA_IS_HIGH() (P3DR & 0x10)
  30:../src/mouse.c **** #define CLK_LOW()	(P3DR = ~0x20)
  31:../src/mouse.c **** #define CLK_HIGH()	(P3DR = 0xFF) ;
  32:../src/mouse.c **** #define CLK_IS_HIGH() (P3DR & 0x20)
  33:../src/mouse.c **** 
  34:../src/mouse.c **** #define WAIT_CLK_LOW()	ms_tout = 0x1FF ; 	\
  35:../src/mouse.c **** 	do {								\
  36:../src/mouse.c **** 		if( !CLK_IS_HIGH())				\
  37:../src/mouse.c **** 			break ;						\
  38:../src/mouse.c **** 	} while( --ms_tout) ;				\
  39:../src/mouse.c **** 										\
  40:../src/mouse.c **** 	if( !ms_tout)						\
  41:../src/mouse.c **** 		return 1 ;						\
  42:../src/mouse.c **** 
  43:../src/mouse.c **** //#define WAIT_C_L( a)	asm( "\n\
  44:../src/mouse.c **** //		clr	r1\n\
  45:../src/mouse.c **** //tst_clkl" #a ":\n\
  46:../src/mouse.c **** //		tm	R227, #0x20\n\
  47:../src/mouse.c **** //		jrz	clk_is_low" #a "\n\
  48:../src/mouse.c **** //		djnz r1, tst_clk" #a "\n\
  49:../src/mouse.c **** //		ld	r1, #1\n\
  50:../src/mouse.c **** //		ret\n\
  51:../src/mouse.c **** //clk_is_low" #a ":\n")
  52:../src/mouse.c **** 
  53:../src/mouse.c **** #define WAIT_CLK_HIGH()	ms_tout = 0x1FF ; 	\
  54:../src/mouse.c **** 	do {								\
  55:../src/mouse.c **** 		if( CLK_IS_HIGH())				\
  56:../src/mouse.c **** 			break ;						\
  57:../src/mouse.c **** 	} while( --ms_tout) ;				\
  58:../src/mouse.c **** 										\
  59:../src/mouse.c **** 	if( !ms_tout)						\
  60:../src/mouse.c **** 		return 1 ;						\
  61:../src/mouse.c **** 
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s 			page 3


  62:../src/mouse.c **** //#define WAIT_C_H( a)	asm( "\n\
  63:../src/mouse.c **** //		clr	r1\n\
  64:../src/mouse.c **** //tst_clkh" #a ":\n\
  65:../src/mouse.c **** //		tm	R227, #0x20\n\
  66:../src/mouse.c **** //		jrnz	c_is_high" #a "\n\
  67:../src/mouse.c **** //		djnz r1, tst_clkh" #a "\n\
  68:../src/mouse.c **** //		ld	r1, #1\n\
  69:../src/mouse.c **** //		ret\n\
  70:../src/mouse.c **** //c_is_high" #a ":\n")
  71:../src/mouse.c **** 
  72:../src/mouse.c **** //#define WAIT_CLK_HIGH()	ms_tout = 0 ; 	\
  73:../src/mouse.c **** //	while( !CLK_IS_HIGH())					\
  74:../src/mouse.c **** //		if( !( --ms_tout))					\
  75:../src/mouse.c **** //			return 1 ;						\
  76:../src/mouse.c **** //
  77:../src/mouse.c **** 
  78:../src/mouse.c **** #define FAIL()	ms_tout = 0 ;	\
  79:../src/mouse.c **** 	return 1 ;
  80:../src/mouse.c **** 
  81:../src/mouse.c **** const unsigned char mouse_str[] = {
  82:../src/mouse.c **** 	0xF3, 0xC8, 0xF3, 0x64, 0xF3, 0x50, 0xF0, 0xE8, 0x03, 0xF3, 0x64
  83:../src/mouse.c **** } ;
  84:../src/mouse.c **** 
  85:../src/mouse.c **** #define MSINIT_SIZE	( sizeof mouse_str / sizeof mouse_str[ 0])
  86:../src/mouse.c **** 
  87:../src/mouse.c **** static BYTE mouse_length = 0 ;
  88:../src/mouse.c **** static BYTE mouse_fsm = 0 ;
  89:../src/mouse.c **** BYTE	Mouse_Buffer[ 4] ;
  90:../src/mouse.c **** 
  91:../src/mouse.c **** static void MOUSE_Send( void) ;
  92:../src/mouse.c **** 
  93:../src/mouse.c **** unsigned char mouse_cmd( unsigned char c) /* returns TRUE on error */
  94:../src/mouse.c **** {
  85              	.LMM2:
  95:../src/mouse.c **** 	unsigned char cnt ;
  87              	.LBB2:
  88              	.LMM3:
  96:../src/mouse.c **** 	unsigned char parity = 1 ;
  90 0000 2C01     		ld  	r2,#1
  91              	.LMM4:
  97:../src/mouse.c **** 
  98:../src/mouse.c **** 	spp( P3C_PG) ;
  93              	; #APP
  94 0002 C70A     		spp #2
  95              	; #NO_APP
  96              	.LMM5:
  99:../src/mouse.c **** 
 100:../src/mouse.c **** /* Request mouse attention */
 101:../src/mouse.c **** 	WAIT_CLK_HIGH() ;
  98 0004 36F101FF 		ldw  	dpr:pof(@ms_tout),#511
  98      0000
  99 000a A5E320   		tm   	@P3DR,#32
 100 000d EB0E     		jxnz 	.L3
 101              	.L4:
 102 000f 3641FFFF 		addw 	dpr:pof(@ms_tout),#-1
 102      0000
 103 0015 6D0160   		jxz  	.L88
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s 			page 4


 104 0018 A5E320   		tm   	@P3DR,#32
 105 001b 6BF2     		jxz  	.L4
 106              	.L3:
 107 001d 36910000 		cpw 	dpr:pof(@ms_tout),#0
 107      0000
 108 0023 6D0160   		jxz  	.L88
 109              	.LMM6:
 102:../src/mouse.c **** 	/* Lower data line */
 103:../src/mouse.c **** 	DATA_LOW() ;
 111 0026 F5E3EF   		ld  	@P3DR,#-17
 112              	.LMM7:
 104:../src/mouse.c **** 	DATA_OUT() ;
 105:../src/mouse.c **** 	
 106:../src/mouse.c **** 	di() ;
 114              	; #APP
 115 0029 10       		di
 116              	; #NO_APP
 117              	.LMM8:
 107:../src/mouse.c **** 
 108:../src/mouse.c **** 	/* Wait clock to be low again */
 109:../src/mouse.c **** 	WAIT_CLK_LOW() ;
 119 002a 36F101FF 		ldw  	dpr:pof(@ms_tout),#511
 119      0000
 120 0030 A5E320   		tm   	@P3DR,#32
 121 0033 6B0E     		jxz  	.L10
 122              	.L11:
 123 0035 3641FFFF 		addw 	dpr:pof(@ms_tout),#-1
 123      0000
 124 003b 6D0160   		jxz  	.L88
 125 003e A5E320   		tm   	@P3DR,#32
 126 0041 EBF2     		jxnz 	.L11
 127              	.L10:
 128 0043 36910000 		cpw 	dpr:pof(@ms_tout),#0
 128      0000
 129 0049 6D0160   		jxz  	.L88
 130              	.LMM9:
 110:../src/mouse.c **** 
 111:../src/mouse.c **** /* Transmit byte */	
 112:../src/mouse.c **** 	for( cnt = 0 ; cnt < 8 ; cnt++)
 132 004c 90D1     		clr 	r1
 133 004e BFD401FF 		ldw  	rr4,#511
 134              	.L19:
 135              	.LMM10:
 113:../src/mouse.c **** 	{
 114:../src/mouse.c **** 		if( c & 1)
 137 0052 AF1008   		btjxf	r0.0,.L20
 138              	.LMM11:
 115:../src/mouse.c **** 		{
 116:../src/mouse.c **** 			DATA_HIGH() ;
 140 0055 F5E3FF   		ld  	@P3DR,#-1
 141              	.LMM12:
 117:../src/mouse.c **** 			parity ^= 1 ;
 143 0058 65D201   		xor 	r2,#1
 144              	.LMM13:
 118:../src/mouse.c **** 		}
 146 005b 8B03     		jxt  	.L21
 147              	.L20:
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s 			page 5


 148              	.LMM14:
 119:../src/mouse.c **** 		else
 120:../src/mouse.c **** 			DATA_LOW() ;
 150 005d F5E3EF   		ld  	@P3DR,#-17
 151              	.L21:
 152              	.LMM15:
 121:../src/mouse.c **** 
 122:../src/mouse.c **** 		c >>= 1 ;
 154 0060 11       		rcf  
 155 0061 D0D0     		rrc  	r0
 156              	.LMM16:
 123:../src/mouse.c **** 
 124:../src/mouse.c **** 		WAIT_CLK_HIGH() ;
 158 0063 E2F50000 		ldw  	dpr:pof(@ms_tout),rr4
 159 0067 A5E320   		tm   	@P3DR,#32
 160 006a EB0E     		jxnz 	.L23
 161              	.L24:
 162 006c 3641FFFF 		addw 	dpr:pof(@ms_tout),#-1
 162      0000
 163 0072 6D0160   		jxz  	.L88
 164 0075 A5E320   		tm   	@P3DR,#32
 165 0078 6BF2     		jxz  	.L24
 166              	.L23:
 167 007a 36910000 		cpw 	dpr:pof(@ms_tout),#0
 167      0000
 168 0080 6D0160   		jxz  	.L88
 169              	.LMM17:
 125:../src/mouse.c **** 		WAIT_CLK_LOW() ;
 171 0083 E2F50000 		ldw  	dpr:pof(@ms_tout),rr4
 172 0087 A5E320   		tm   	@P3DR,#32
 173 008a 6B0E     		jxz  	.L30
 174              	.L31:
 175 008c 3641FFFF 		addw 	dpr:pof(@ms_tout),#-1
 175      0000
 176 0092 6D0160   		jxz  	.L88
 177 0095 A5E320   		tm   	@P3DR,#32
 178 0098 EBF2     		jxnz 	.L31
 179              	.L30:
 180 009a 36910000 		cpw 	dpr:pof(@ms_tout),#0
 180      0000
 181 00a0 6D0160   		jxz  	.L88
 182              	.LMM18:
 184 00a3 50D1     		inc  	r1
 185 00a5 95D107   		cp   	r1,#7
 186 00a8 3BA8     		jxule	.L19
 187              	.LMM19:
 126:../src/mouse.c **** 	}
 127:../src/mouse.c **** 
 128:../src/mouse.c **** /* Parity */
 129:../src/mouse.c **** 	if( parity)
 189 00aa 0222     		or 	r2,r2
 190 00ac 6B05     		jxz  	.L37
 191              	.LMM20:
 130:../src/mouse.c **** 		DATA_HIGH() ;
 193 00ae F5E3FF   		ld  	@P3DR,#-1
 194 00b1 8B03     		jxt  	.L38
 195              	.L37:
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s 			page 6


 196              	.LMM21:
 131:../src/mouse.c **** 	else
 132:../src/mouse.c **** 		DATA_LOW() ;
 198 00b3 F5E3EF   		ld  	@P3DR,#-17
 199              	.L38:
 200              	.LMM22:
 133:../src/mouse.c **** 
 134:../src/mouse.c **** 	WAIT_CLK_HIGH() ;
 202 00b6 36F101FF 		ldw  	dpr:pof(@ms_tout),#511
 202      0000
 203 00bc A5E320   		tm   	@P3DR,#32
 204 00bf EB0E     		jxnz 	.L40
 205              	.L41:
 206 00c1 3641FFFF 		addw 	dpr:pof(@ms_tout),#-1
 206      0000
 207 00c7 6D0160   		jxz  	.L88
 208 00ca A5E320   		tm   	@P3DR,#32
 209 00cd 6BF2     		jxz  	.L41
 210              	.L40:
 211 00cf 36910000 		cpw 	dpr:pof(@ms_tout),#0
 211      0000
 212 00d5 6D0160   		jxz  	.L88
 213              	.LMM23:
 135:../src/mouse.c **** 	WAIT_CLK_LOW() ;
 215 00d8 36F101FF 		ldw  	dpr:pof(@ms_tout),#511
 215      0000
 216 00de A5E320   		tm   	@P3DR,#32
 217 00e1 6B0D     		jxz  	.L47
 218              	.L48:
 219 00e3 3641FFFF 		addw 	dpr:pof(@ms_tout),#-1
 219      0000
 220 00e9 6B75     		jxz  	.L88
 221 00eb A5E320   		tm   	@P3DR,#32
 222 00ee EBF3     		jxnz 	.L48
 223              	.L47:
 224 00f0 36910000 		cpw 	dpr:pof(@ms_tout),#0
 224      0000
 225 00f6 6B68     		jxz  	.L88
 226              	.LMM24:
 136:../src/mouse.c **** 
 137:../src/mouse.c **** /* Stop bit */
 138:../src/mouse.c **** 	DATA_HIGH() ;
 228 00f8 F5E3FF   		ld  	@P3DR,#-1
 229              	.LMM25:
 139:../src/mouse.c **** 	WAIT_CLK_HIGH() ;
 231 00fb 36F101FF 		ldw  	dpr:pof(@ms_tout),#511
 231      0000
 232 0101 A5E320   		tm   	@P3DR,#32
 233 0104 EB0D     		jxnz 	.L54
 234              	.L55:
 235 0106 3641FFFF 		addw 	dpr:pof(@ms_tout),#-1
 235      0000
 236 010c 6B52     		jxz  	.L88
 237 010e A5E320   		tm   	@P3DR,#32
 238 0111 6BF3     		jxz  	.L55
 239              	.L54:
 240 0113 36910000 		cpw 	dpr:pof(@ms_tout),#0
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s 			page 7


 240      0000
 241 0119 6B45     		jxz  	.L88
 242              	.LMM26:
 140:../src/mouse.c **** 	DATA_IN() ;
 141:../src/mouse.c **** 	WAIT_CLK_LOW() ;
 244 011b 36F101FF 		ldw  	dpr:pof(@ms_tout),#511
 244      0000
 245 0121 A5E320   		tm   	@P3DR,#32
 246 0124 6B0D     		jxz  	.L61
 247              	.L62:
 248 0126 3641FFFF 		addw 	dpr:pof(@ms_tout),#-1
 248      0000
 249 012c 6B32     		jxz  	.L88
 250 012e A5E320   		tm   	@P3DR,#32
 251 0131 EBF3     		jxnz 	.L62
 252              	.L61:
 253 0133 36910000 		cpw 	dpr:pof(@ms_tout),#0
 253      0000
 254 0139 6B25     		jxz  	.L88
 255              	.LMM27:
 142:../src/mouse.c **** 
 143:../src/mouse.c **** 	/* Line control bit: Mouse pulls data low on correct reception */
 144:../src/mouse.c **** 	parity = DATA_IS_HIGH() ;
 257 013b 28E3     		ld  	r2,@P3DR
 258 013d 15D210   		and 	r2,#16
 259              	.LMM28:
 145:../src/mouse.c **** 	WAIT_CLK_HIGH() ;
 261 0140 36F101FF 		ldw  	dpr:pof(@ms_tout),#511
 261      0000
 262 0146 A5E320   		tm   	@P3DR,#32
 263 0149 EB0D     		jxnz 	.L68
 264              	.L69:
 265 014b 3641FFFF 		addw 	dpr:pof(@ms_tout),#-1
 265      0000
 266 0151 6B0D     		jxz  	.L88
 267 0153 A5E320   		tm   	@P3DR,#32
 268 0156 6BF3     		jxz  	.L69
 269              	.L68:
 270 0158 36910000 		cpw 	dpr:pof(@ms_tout),#0
 270      0000
 271 015e EB03     		jxnz 	.L73
 272              	.L88:
 273 0160 1C01     		ld  	r1,#1
 274 0162 46       		ret
 275              	.L73:
 276              	.LMM29:
 146:../src/mouse.c **** 
 147:../src/mouse.c **** 	if( !parity)
 278 0163 0222     		or 	r2,r2
 279 0165 EB18     		jxnz 	.L74
 280              	.LMM30:
 148:../src/mouse.c **** 	{
 149:../src/mouse.c **** 	/* Inhibit io */
 150:../src/mouse.c **** 		CLK_LOW() ;
 282 0167 F5E3DF   		ld  	@P3DR,#-33
 283              	.LMM31:
 151:../src/mouse.c **** 		ei() ;
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s 			page 8


⌨️ 快捷键说明

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