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

📄 maxkey.cod

📁 max7347的键盘驱动在wince下的键盘模型
💻 COD
📖 第 1 页 / 共 5 页
字号:
  00034	eb000000	 bl          XllpI2cInit
  00038	e3500000	 cmp         r0, #0

; 171  : 	{
; 172  : 		return FALSE;

  0003c	13a00000	 movne       r0, #0

; 176  : }

  00040	18bd4010	 ldmneia     sp!, {r4, lr}

; 173  : 	}
; 174  : 
; 175  : 	return TRUE;

  00044	03a00001	 moveq       r0, #1

; 176  : }

  00048	08bd4010	 ldmeqia     sp!, {r4, lr}
  0004c	e12fff1e	 bx          lr
  00050		 |$L31162|
  00050	00000000	 DCD         |?gs_pi2cregs@@3PAUXLLP_I2C_T@@A|
  00054		 |$M31158|

			 ENDP  ; |?I2CInit@@YAHXZ|, I2CInit

	IMPORT	|UnmapViewOfFile|
	IMPORT	|CloseHandle|
	IMPORT	|MmUnmapIoSpace|

  00000			 AREA	 |.text| { |?I2CDeinit@@YAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?I2CDeinit@@YAHXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?I2CDeinit@@YAHXZ| } ; comdat associative
|$T31170| DCD	|$L31169|
	DCD	0x40003601
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?I2CDeinit@@YAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?I2CDeinit@@YAHXZ| PROC		; I2CDeinit

; 178  : {

  00000		 |$L31169|
  00000	e92d4010	 stmdb       sp!, {r4, lr}
  00004		 |$M31167|

; 179  : 	if (gs_pClockRegs)

  00004	e59f40c8	 ldr         r4, [pc, #0xC8]
  00008	e5940008	 ldr         r0, [r4, #8]
  0000c	e3500000	 cmp         r0, #0
  00010	0a000003	 beq         |$L30733|

; 180  :     {
; 181  :         MmUnmapIoSpace((PVOID)gs_pClockRegs, sizeof(XLLP_CLKMGR_T));

  00014	e3a01018	 mov         r1, #0x18
  00018	eb000000	 bl          MmUnmapIoSpace

; 182  :         gs_pClockRegs = NULL;

  0001c	e3a03000	 mov         r3, #0
  00020	e5843008	 str         r3, [r4, #8]
  00024		 |$L30733|

; 183  :     }
; 184  : 
; 185  :     if (gs_pi2cregs)

  00024	e5940004	 ldr         r0, [r4, #4]
  00028	e3500000	 cmp         r0, #0
  0002c	0a000003	 beq         |$L30736|

; 186  :     {
; 187  :         MmUnmapIoSpace((PVOID)gs_pi2cregs, sizeof(XLLP_I2C_T));

  00030	e3a01024	 mov         r1, #0x24
  00034	eb000000	 bl          MmUnmapIoSpace

; 188  :         gs_pi2cregs = NULL;

  00038	e3a03000	 mov         r3, #0
  0003c	e5843004	 str         r3, [r4, #4]
  00040		 |$L30736|

; 189  :     }
; 190  : 
; 191  :     if (gs_pOstRegs)

  00040	e5940000	 ldr         r0, [r4]
  00044	e3500000	 cmp         r0, #0
  00048	0a000003	 beq         |$L30739|

; 192  :     {
; 193  :         MmUnmapIoSpace((PVOID)gs_pOstRegs, sizeof(XLLP_OST_T));

  0004c	e3a010e0	 mov         r1, #0xE0
  00050	eb000000	 bl          MmUnmapIoSpace

; 194  :         gs_pOstRegs = NULL;

  00054	e3a03000	 mov         r3, #0
  00058	e5843000	 str         r3, [r4]
  0005c		 |$L30739|

; 195  :     }
; 196  : 	 if (gs_pGpioRegs)

  0005c	e594000c	 ldr         r0, [r4, #0xC]
  00060	e3500000	 cmp         r0, #0
  00064	0a000003	 beq         |$L30742|

; 197  :     {
; 198  :         MmUnmapIoSpace((PVOID)gs_pGpioRegs, sizeof(XLLP_GPIO_T));

  00068	e3a01d13	 mov         r1, #0x13, 26
  0006c	eb000000	 bl          MmUnmapIoSpace

; 199  :         gs_pGpioRegs = NULL;

  00070	e3a03000	 mov         r3, #0
  00074	e584300c	 str         r3, [r4, #0xC]
  00078		 |$L30742|

; 200  :     }
; 201  : 
; 202  :     if (mfp_reg)

  00078	e5940010	 ldr         r0, [r4, #0x10]
  0007c	e3500000	 cmp         r0, #0
  00080	0a000003	 beq         |$L30745|

; 203  :     {
; 204  :         MmUnmapIoSpace((PVOID)mfp_reg, sizeof(XLLP_VUINT32_T));

  00084	e3a01004	 mov         r1, #4
  00088	eb000000	 bl          MmUnmapIoSpace

; 205  :         mfp_reg = NULL;

  0008c	e3a03000	 mov         r3, #0
  00090	e5843010	 str         r3, [r4, #0x10]
  00094		 |$L30745|

; 206  :     }
; 207  : 
; 208  : 	if(g_pMfpRMDb)

  00094	e5943014	 ldr         r3, [r4, #0x14]
  00098	e3530000	 cmp         r3, #0
  0009c	0a000003	 beq         |$L30748|

; 209  : 	{
; 210  : 		UnmapViewOfFile(g_pMfpRMDb);

  000a0	e5940014	 ldr         r0, [r4, #0x14]
  000a4	eb000000	 bl          UnmapViewOfFile

; 211  : 		g_pMfpRMDb = NULL;

  000a8	e3a03000	 mov         r3, #0
  000ac	e5843014	 str         r3, [r4, #0x14]
  000b0		 |$L30748|

; 212  : 	}
; 213  : 
; 214  : 	if(g_hMfpRMDHandle)

  000b0	e5940018	 ldr         r0, [r4, #0x18]
  000b4	e3500000	 cmp         r0, #0
  000b8	0a000002	 beq         |$L30749|

; 215  : 	{
; 216  : 		CloseHandle(g_hMfpRMDHandle);

  000bc	eb000000	 bl          CloseHandle

; 217  : 		g_hMfpRMDHandle = NULL;

  000c0	e3a03000	 mov         r3, #0
  000c4	e5843018	 str         r3, [r4, #0x18]
  000c8		 |$L30749|

; 218  : 	}
; 219  : 	return TRUE;

  000c8	e3a00001	 mov         r0, #1

; 220  : }

  000cc	e8bd4010	 ldmia       sp!, {r4, lr}
  000d0	e12fff1e	 bx          lr
  000d4		 |$L31172|
  000d4	00000000	 DCD         |?gs_pOstRegs@@3PAUXLLP_OST_T@@A|
  000d8		 |$M31168|

			 ENDP  ; |?I2CDeinit@@YAHXZ|, I2CDeinit

	IMPORT	|XllpI2CWrite|
	IMPORT	|XllpI2CRead|

  00000			 AREA	 |.text| { |?I2CRead@@YA?AW4XLLP_STATUS_T@@PAUXLLP_I2C_T@@PAUXLLP_OST_T@@EPAE@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?I2CRead@@YA?AW4XLLP_STATUS_T@@PAUXLLP_I2C_T@@PAUXLLP_OST_T@@EPAE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?I2CRead@@YA?AW4XLLP_STATUS_T@@PAUXLLP_I2C_T@@PAUXLLP_OST_T@@EPAE@Z| } ; comdat associative
|$T31195| DCD	|$L31194|
	DCD	0x40002404
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?I2CRead@@YA?AW4XLLP_STATUS_T@@PAUXLLP_I2C_T@@PAUXLLP_OST_T@@EPAE@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?I2CRead@@YA?AW4XLLP_STATUS_T@@PAUXLLP_I2C_T@@PAUXLLP_OST_T@@EPAE@Z| PROC ; I2CRead

; 223  : {

  00000		 |$L31194|
  00000	e1a0c00d	 mov         r12, sp
  00004	e92d000f	 stmdb       sp!, {r0 - r3}
  00008	e92d53f0	 stmdb       sp!, {r4 - r9, r12, lr}
  0000c	e24dd008	 sub         sp, sp, #8
  00010		 |$M31192|
  00010	e1a08003	 mov         r8, r3
  00014	e1a06001	 mov         r6, r1
  00018	e1a07000	 mov         r7, r0

; 224  :     XLLP_STATUS_T status;
; 225  : 	I2CLock();

  0001c	e59f5068	 ldr         r5, [pc, #0x68]
  00020	e3e01000	 mvn         r1, #0
  00024	e5950000	 ldr         r0, [r5]
  00028	eb000000	 bl          WaitForSingleObject

; 226  : 	status = XllpI2CWrite(i2cRegs, ostRegs, SLAVE_ADDRESS, &reg, 1, XLLP_TRUE); 

  0002c	e3a09001	 mov         r9, #1
  00030	e28d3030	 add         r3, sp, #0x30
  00034	e3a02038	 mov         r2, #0x38
  00038	e1a01006	 mov         r1, r6
  0003c	e1a00007	 mov         r0, r7
  00040	e58d9004	 str         r9, [sp, #4]
  00044	e58d9000	 str         r9, [sp]
  00048	eb000000	 bl          XllpI2CWrite
  0004c	e1b04000	 movs        r4, r0

; 227  : 	if (status != XLLP_STATUS_SUCCESS) 
; 228  : 	{
; 229  : 		I2CUnlock();
; 230  : 		return status;

  00050	1a000007	 bne         |$L31191|

; 231  : 	}
; 232  : 	status = XllpI2CRead(i2cRegs, ostRegs, SLAVE_ADDRESS, val, 1, XLLP_TRUE);

  00054	e1a03008	 mov         r3, r8
  00058	e3a02038	 mov         r2, #0x38
  0005c	e1a01006	 mov         r1, r6
  00060	e1a00007	 mov         r0, r7
  00064	e58d9004	 str         r9, [sp, #4]
  00068	e58d9000	 str         r9, [sp]
  0006c	eb000000	 bl          XllpI2CRead
  00070	e1a04000	 mov         r4, r0
  00074		 |$L31191|

; 233  : 	I2CUnlock();

  00074	e5950000	 ldr         r0, [r5]
  00078	eb000000	 bl          ReleaseMutex
  0007c	e1a00004	 mov         r0, r4

; 234  : 	return status;	
; 235  : }

  00080	e28dd008	 add         sp, sp, #8
  00084	e89d63f0	 ldmia       sp, {r4 - r9, sp, lr}
  00088	e12fff1e	 bx          lr
  0008c		 |$L31197|
  0008c	00000000	 DCD         |g_hI2CMutex|
  00090		 |$M31193|

			 ENDP  ; |?I2CRead@@YA?AW4XLLP_STATUS_T@@PAUXLLP_I2C_T@@PAUXLLP_OST_T@@EPAE@Z|, I2CRead


  00000			 AREA	 |.text| { |?I2CWrite@@YA?AW4XLLP_STATUS_T@@PAUXLLP_I2C_T@@PAUXLLP_OST_T@@EE@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?I2CWrite@@YA?AW4XLLP_STATUS_T@@PAUXLLP_I2C_T@@PAUXLLP_OST_T@@EE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?I2CWrite@@YA?AW4XLLP_STATUS_T@@PAUXLLP_I2C_T@@PAUXLLP_OST_T@@EE@Z| } ; comdat associative
|$T31216| DCD	|$L31215|
	DCD	0x40001b02
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?I2CWrite@@YA?AW4XLLP_STATUS_T@@PAUXLLP_I2C_T@@PAUXLLP_OST_T@@EE@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?I2CWrite@@YA?AW4XLLP_STATUS_T@@PAUXLLP_I2C_T@@PAUXLLP_OST_T@@EE@Z| PROC ; I2CWrite

; 238  : {

  00000		 |$L31215|
  00000	e92d4070	 stmdb       sp!, {r4 - r6, lr}
  00004	e24dd00c	 sub         sp, sp, #0xC
  00008		 |$M31213|
  00008	e1a04001	 mov         r4, r1
  0000c	e1a05000	 mov         r5, r0

; 239  :     XLLP_STATUS_T status;
; 240  :     XLLP_UINT8_T buf[2];
; 241  : 	buf[0] = reg;
; 242  :     buf[1] = val;
; 243  : 	I2CLock();

  00010	e59f6050	 ldr         r6, [pc, #0x50]
  00014	e3e01000	 mvn         r1, #0
  00018	e5cd2008	 strb        r2, [sp, #8]
  0001c	e5960000	 ldr         r0, [r6]
  00020	e5cd3009	 strb        r3, [sp, #9]
  00024	eb000000	 bl          WaitForSingleObject

; 244  :     status = XllpI2CWrite(i2cRegs, ostRegs, SLAVE_ADDRESS, buf, 2, XLLP_TRUE); 

  00028	e3a03001	 mov         r3, #1
  0002c	e3a02002	 mov         r2, #2
  00030	e58d3004	 str         r3, [sp, #4]
  00034	e58d2000	 str         r2, [sp]
  00038	e28d3008	 add         r3, sp, #8
  0003c	e3a02038	 mov         r2, #0x38
  00040	e1a01004	 mov         r1, r4
  00044	e1a00005	 mov         r0, r5
  00048	eb000000	 bl          XllpI2CWrite
  0004c	e1a04000	 mov         r4, r0

; 245  : 	I2CUnlock();

  00050	e5960000	 ldr         r0, [r6]
  00054	eb000000	 bl          ReleaseMutex

; 246  :     return status;

  00058	e1a00004	 mov         r0, r4

; 247  : }

  0005c	e28dd00c	 add         sp, sp, #0xC
  00060	e8bd4070	 ldmia       sp!, {r4 - r6, lr}
  00064	e12fff1e	 bx          lr
  00068		 |$L31218|
  00068	00000000	 DCD         |g_hI2CMutex|
  0006c		 |$M31214|

			 ENDP  ; |?I2CWrite@@YA?AW4XLLP_STATUS_T@@PAUXLLP_I2C_T@@PAUXLLP_OST_T@@EE@Z|, I2CWrite


  00000			 AREA	 |.text| { |?I2CReadReg@@YAHPAUXLLP_I2C_T@@PAUXLLP_OST_T@@EPAE@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?I2CReadReg@@YAHPAUXLLP_I2C_T@@PAUXLLP_OST_T@@EPAE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?I2CReadReg@@YAHPAUXLLP_I2C_T@@PAUXLLP_OST_T@@EPAE@Z| } ; comdat associative
|$T31254| DCD	|$L31253|
	DCD	0x40002702
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?I2CReadReg@@YAHPAUXLLP_I2C_T@@PAUXLLP_OST_T@@EPAE@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?I2CReadReg@@YAHPAUXLLP_I2C_T@@PAUXLLP_OST_T@@EPAE@Z| PROC ; I2CReadReg

; 250  : {

  00000		 |$L31253|
  00000	e92d43f0	 stmdb       sp!, {r4 - r9, lr}
  00004	e24dd00c	 sub         sp, sp, #0xC
  00008		 |$M31251|
  00008	e1a06003	 mov         r6, r3
  0000c	e1a07001	 mov         r7, r1
  00010	e1a08000	 mov         r8, r0

; 251  : 	XLLP_UINT8_T buf[2];
; 252  : 	XLLP_STATUS_T status;
; 253  : 	
; 254  :     status = I2CRead(pI2C, pOST, reg, buf);

  00014	e59f507c	 ldr         r5, [pc, #0x7C]
  00018	e3e01000	 mvn         r1, #0
  0001c	e5cd2008	 strb        r2, [sp, #8]
  00020	e5950000	 ldr         r0, [r5]
  00024	eb000000	 bl          WaitForSingleObject
  00028	e3a09001	 mov         r9, #1
  0002c	e28d3008	 add         r3, sp, #8
  00030	e3a02038	 mov         r2, #0x38
  00034	e1a01007	 mov         r1, r7
  00038	e1a00008	 mov         r0, r8
  0003c	e58d9004	 str         r9, [sp, #4]
  00040	e58d9000	 str         r9, [sp]
  00044	eb000000	 bl          XllpI2CWrite
  00048	e1b04000	 movs        r4, r0
  0004c	1a000007	 bne         |$L31250|
  00050	e28d300a	 add         r3, sp, #0xA
  00054	e3a02038	 mov         r2, #0x38
  00058	e1a01007	 mov         r1, r7
  0005c	e1a00008	 mov         r0, r8
  00060	e58d9004	 str         r9, [sp, #4]
  00064	e58d9000	 str         r9, [sp]
  00068	eb000000	 bl          XllpI2CRead
  0006c	e1a04000	 mov         r4, r0
  00070		 |$L31250|
  00070	e5950000	 ldr         r0, [r5]
  00074	eb000000	 bl          ReleaseMutex

; 255  : 	
; 256  : 	if (XLLP_STATUS_SUCCESS == status)

  00078	e3540000	 cmp         r4, #0

⌨️ 快捷键说明

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