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

📄 xllp_keypad.cod

📁 pxa270为硬件平台的wince操作系统XLLP驱动源码
💻 COD
📖 第 1 页 / 共 3 页
字号:
  0002c	e3a0207f	 mov         r2, #0x7F
  00030	e3a0e07f	 mov         lr, #0x7F

; 297  : 			*key	= SCAN_CODE_SCROLL_UP;					// Scroll Up

  00034	e5802010	 str         r2, [r0, #0x10]
  00038	e583e000	 str         lr, [r3]
  0003c	e5c14000	 strb        r4, [r1]

; 316  : 		{
; 317  : 			*key	= SCAN_CODE_ACTION;						// Action Key		
; 318  : 		}
; 319  : 
; 320  : 		retval = XLLP_TRUE;									// Signal availability

  00040	e3a00001	 mov         r0, #1

; 325  : 	}
; 326  : 
; 327  : 	return(retval);
; 328  : }

  00044	e8bd4010	 ldmia       sp!, {r4, lr}
  00048	e12fff1e	 bx          lr
  0004c		 |$L787|

; 298  : 		}
; 299  : 		else if(SaveKpRotaryEncoderCountReg & UNDERFLOW_ROTARY_ENC_0)

  0004c	e3120901	 tst         r2, #1, 18

; 300  : 		{
; 301  : 			v_pKeyPadRegs->kpRotaryEncoderCountReg = START_VALUE;
; 302  : 			PrevCount	= START_VALUE;
; 303  : 			*key	= SCAN_CODE_SCROLL_DOWN;				// Scroll Down

  00050	13a0400b	 movne       r4, #0xB
  00054	1afffff3	 bne         |$L912|

; 304  : 		}
; 305  : 		else if(CurrCount > PrevCount)

  00058	e59f2050	 ldr         r2, [pc, #0x50]
  0005c	e592e000	 ldr         lr, [r2]
  00060	e153000e	 cmp         r3, lr
  00064	9a000005	 bls         |$L909|

; 306  : 		{
; 307  : 			*key	= SCAN_CODE_SCROLL_UP;

  00068	e3a0000a	 mov         r0, #0xA
  0006c		 |$L911|
  0006c	e5c10000	 strb        r0, [r1]

; 316  : 		{
; 317  : 			*key	= SCAN_CODE_ACTION;						// Action Key		
; 318  : 		}
; 319  : 
; 320  : 		retval = XLLP_TRUE;									// Signal availability

  00070	e3a00001	 mov         r0, #1
  00074	e5823000	 str         r3, [r2]

; 325  : 	}
; 326  : 
; 327  : 	return(retval);
; 328  : }

  00078	e8bd4010	 ldmia       sp!, {r4, lr}
  0007c	e12fff1e	 bx          lr
  00080		 |$L909|

; 311  : 		{
; 312  : 			*key	= SCAN_CODE_SCROLL_DOWN;

  00080	33a0000b	 movcc       r0, #0xB

; 308  : 			PrevCount	= CurrCount;						// Scroll Up
; 309  : 		}
; 310  : 		else if(CurrCount < PrevCount)

  00084	3afffff8	 bcc         |$L911|

; 313  : 			PrevCount	= CurrCount;						// Scroll Down
; 314  : 		}
; 315  : 		else if(v_pKeyPadRegs->kpDirectKeyReg & DIRECT_KEY_IN_2)

  00088	e5903008	 ldr         r3, [r0, #8]

; 316  : 		{
; 317  : 			*key	= SCAN_CODE_ACTION;						// Action Key		
; 318  : 		}
; 319  : 
; 320  : 		retval = XLLP_TRUE;									// Signal availability

  0008c	e3a00001	 mov         r0, #1
  00090	e3130004	 tst         r3, #4
  00094	13a0300c	 movne       r3, #0xC
  00098	15c13000	 strneb      r3, [r1]

; 325  : 	}
; 326  : 
; 327  : 	return(retval);
; 328  : }

  0009c	e8bd4010	 ldmia       sp!, {r4, lr}
  000a0	e12fff1e	 bx          lr
  000a4		 |$L786|

; 321  : 	}
; 322  : 	else
; 323  : 	{
; 324  : 		retval = XLLP_FALSE;

  000a4	e3a00000	 mov         r0, #0

; 325  : 	}
; 326  : 
; 327  : 	return(retval);
; 328  : }

  000a8	e8bd4010	 ldmia       sp!, {r4, lr}
  000ac	e12fff1e	 bx          lr
  000b0		 |$L918|
  000b0	00000000	 DCD         |?PrevCount@?1??ReadDirectKeys@@9@9|
  000b4	00000000	 DCD         |KP_Status|
  000b8		 |$M914|

			 ENDP  ; |ReadDirectKeys|

	EXPORT	|XllpReadScanCode|

  00000			 AREA	 |.text| { |XllpReadScanCode| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$XllpReadScanCode|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpReadScanCode| } ; comdat associative
|$T929|	DCD	|$L928|
	DCD	0x40001402
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |XllpReadScanCode| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |XllpReadScanCode| PROC

; 337  : {

  00000		 |$L928|
  00000	e92d4030	 stmdb       sp!, {r4, r5, lr}
  00004	e24dd004	 sub         sp, sp, #4
  00008		 |$M926|
  00008	e1a05001	 mov         r5, r1
  0000c	e1a04000	 mov         r4, r0

; 338  : 	// Initialise to NO Key scan code, same as key UP
; 339  : 	XLLP_UINT8_T key = NO_KEY;

  00010	e3a030ff	 mov         r3, #0xFF

; 340  : 
; 341  : 	if(!ReadDirectKeys(v_pKeyPadRegs,&key))

  00014	e28d1000	 add         r1, sp, #0
  00018	e5cd3000	 strb        r3, [sp]
  0001c	eb000000	 bl          ReadDirectKeys
  00020	e3500000	 cmp         r0, #0

; 342  : 		ReadScanCodeAutomatically(v_pKeyPadRegs,&key);

  00024	028d1000	 addeq       r1, sp, #0
  00028	01a00004	 moveq       r0, r4
  0002c	0b000000	 bleq        ReadScanCodeAutomatically

; 343  : 
; 344  : 	// Assign the Key Here
; 345  : 	*pui8Data = key;

  00030	e5dd3000	 ldrb        r3, [sp]

; 346  : 
; 347  : 	if(*pui8Data == NO_KEY)

  00034	e35300ff	 cmp         r3, #0xFF

; 348  : 		return(XLLP_FALSE);

  00038	03a00000	 moveq       r0, #0

; 349  : 	else
; 350  : 		return(XLLP_TRUE);		// Enjoy

  0003c	13a00001	 movne       r0, #1
  00040	e5c53000	 strb        r3, [r5]

; 351  : }

  00044	e28dd004	 add         sp, sp, #4
  00048	e8bd4030	 ldmia       sp!, {r4, r5, lr}
  0004c	e12fff1e	 bx          lr
  00050		 |$M927|

			 ENDP  ; |XllpReadScanCode|

	EXPORT	|XllpSetUpKeyPadInterrupts|

  00000			 AREA	 |.text| { |XllpSetUpKeyPadInterrupts| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$XllpSetUpKeyPadInterrupts|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpSetUpKeyPadInterrupts| } ; comdat associative
|$T941|	DCD	|$L940|
	DCD	0x40001100
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |XllpSetUpKeyPadInterrupts| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |XllpSetUpKeyPadInterrupts| PROC

; 359  : {

  00000		 |$L940|
  00000		 |$M938|
  00000	e3510000	 cmp         r1, #0

; 360  : 	KP_Status = v_pKeyPadRegs->kpControlReg;

  00004	e59f2034	 ldr         r2, [pc, #0x34]
  00008	e5903000	 ldr         r3, [r0]
  0000c	e5823000	 str         r3, [r2]

; 361  : 
; 362  : 	if(fEnDis)
; 363  : 	{
; 364  : 		EN_DIRECT_KEYS_INTR();

  00010	e5903000	 ldr         r3, [r0]
  00014	13833001	 orrne       r3, r3, #1
  00018	15803000	 strne       r3, [r0]

; 365  : 		EN_MAT_KEYS_INTR();

  0001c	15903000	 ldrne       r3, [r0]
  00020	13833b02	 orrne       r3, r3, #2, 22

; 366  : 	}
; 367  : 	else
; 368  : 	{
; 369  : 		DISABLE_DIRECT_KEYS_INTR();
; 370  : 		DISABLE_MAT_KEYS_INTR();

  00024	03c33001	 biceq       r3, r3, #1
  00028	05803000	 streq       r3, [r0]
  0002c	05903000	 ldreq       r3, [r0]
  00030	03c33b02	 biceq       r3, r3, #2, 22
  00034	e5803000	 str         r3, [r0]

; 371  : 	}
; 372  : 	return(XLLP_TRUE);

  00038	e3a00001	 mov         r0, #1

; 373  : }

  0003c	e12fff1e	 bx          lr
  00040		 |$L943|
  00040	00000000	 DCD         |KP_Status|
  00044		 |$M939|

			 ENDP  ; |XllpSetUpKeyPadInterrupts|

	EXPORT	|XllpKeyPadConfigure|
	IMPORT	|XllpGpioSetDirectionIn|
	IMPORT	|XllpGpioSetDirectionOut|
	IMPORT	|XllpGpioSetOutput0|
	IMPORT	|XllpGpioSetAlternateFn|

  00000			 AREA	 |.text| { |XllpKeyPadConfigure| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$XllpKeyPadConfigure|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpKeyPadConfigure| } ; comdat associative
|$T954|	DCD	|$L953|
	DCD	0x40008602
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |XllpKeyPadConfigure| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |XllpKeyPadConfigure| PROC

; 404  : {

  00000		 |$L953|
  00000	e92d4ff0	 stmdb       sp!, {r4 - r11, lr}
  00004	e24dd0d4	 sub         sp, sp, #0xD4
  00008		 |$M951|
  00008	e1b04001	 movs        r4, r1
  0000c	e1a05000	 mov         r5, r0

; 405  : 	XLLP_BOOL_T retval=XLLP_FALSE;
; 406  : 	XLLP_UINT32_T GpioDirOutList[]={7,96,103,104,105,106,107,108};
; 407  : 	XLLP_UINT32_T GpioDirInList[]={9,93,94,95,97,98,99,100,101,102};
; 408  : 	XLLP_UINT32_T GpioAltFnPinList[]={16,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108};
; 409  : 	XLLP_UINT32_T GpioAltFnValList[]={16,1,1,3,3,3,3,3,1,1,1,2,2,2,2,2,2};

  00010	e3a03007	 mov         r3, #7
  00014	e58d3000	 str         r3, [sp]
  00018	e3a0305f	 mov         r3, #0x5F
  0001c	e58d302c	 str         r3, [sp, #0x2C]
  00020	e3a03061	 mov         r3, #0x61
  00024	e58d3030	 str         r3, [sp, #0x30]
  00028	e3a03062	 mov         r3, #0x62
  0002c	e58d3034	 str         r3, [sp, #0x34]
  00030	e3a03063	 mov         r3, #0x63
  00034	e58d3038	 str         r3, [sp, #0x38]
  00038	e3a03064	 mov         r3, #0x64
  0003c	e58d303c	 str         r3, [sp, #0x3C]
  00040	e3a03065	 mov         r3, #0x65
  00044	e58d3040	 str         r3, [sp, #0x40]
  00048	e3a03066	 mov         r3, #0x66
  0004c	e58d3044	 str         r3, [sp, #0x44]
  00050	e3a03010	 mov         r3, #0x10
  00054	e58d3090	 str         r3, [sp, #0x90]
  00058	e3a0305d	 mov         r3, #0x5D
  0005c	e58d3094	 str         r3, [sp, #0x94]
  00060	e3a0305e	 mov         r3, #0x5E
  00064	e58d3098	 str         r3, [sp, #0x98]
  00068	e3a0305f	 mov         r3, #0x5F
  0006c	e58d309c	 str         r3, [sp, #0x9C]
  00070	e3a03060	 mov         r3, #0x60
  00074	e58d30a0	 str         r3, [sp, #0xA0]
  00078	e3a03061	 mov         r3, #0x61
  0007c	e58d30a4	 str         r3, [sp, #0xA4]
  00080	e3a03062	 mov         r3, #0x62
  00084	e58d30a8	 str         r3, [sp, #0xA8]
  00088	e3a03063	 mov         r3, #0x63
  0008c	e58d30ac	 str         r3, [sp, #0xAC]
  00090	e3a03064	 mov         r3, #0x64
  00094	e58d30b0	 str         r3, [sp, #0xB0]
  00098	e3a03065	 mov         r3, #0x65
  0009c	e58d30b4	 str         r3, [sp, #0xB4]
  000a0	e3a03066	 mov         r3, #0x66
  000a4	e58d30b8	 str         r3, [sp, #0xB8]
  000a8	e3a03067	 mov         r3, #0x67
  000ac	e58d30bc	 str         r3, [sp, #0xBC]
  000b0	e3a03068	 mov         r3, #0x68
  000b4	e58d30c0	 str         r3, [sp, #0xC0]
  000b8	e3a03069	 mov         r3, #0x69
  000bc	e58d30c4	 str         r3, [sp, #0xC4]
  000c0	e3a0306a	 mov         r3, #0x6A
  000c4	e58d30c8	 str         r3, [sp, #0xC8]
  000c8	e3a0306b	 mov         r3, #0x6B
  000cc	e58d30cc	 str         r3, [sp, #0xCC]
  000d0	e3a0306c	 mov         r3, #0x6C
  000d4	e58d30d0	 str         r3, [sp, #0xD0]
  000d8	e3a03010	 mov         r3, #0x10
  000dc	e58d3048	 str         r3, [sp, #0x48]
  000e0	e3a03001	 mov         r3, #1
  000e4	e58d304c	 str         r3, [sp, #0x4C]
  000e8	e3a03001	 mov         r3, #1
  000ec	e58d3050	 str         r3, [sp, #0x50]
  000f0	e3a03003	 mov         r3, #3
  000f4	e3a02060	 mov         r2, #0x60
  000f8	e3a01067	 mov         r1, #0x67
  000fc	e3a00068	 mov         r0, #0x68
  00100	e3a0e069	 mov         lr, #0x69
  00104	e3a0606a	 mov         r6, #0x6A
  00108	e3a0706b	 mov         r7, #0x6B
  0010c	e3a0806c	 mov         r8, #0x6C
  00110	e3a09009	 mov         r9, #9
  00114	e3a0a05d	 mov         r10, #0x5D
  00118	e3a0b05e	 mov         r11, #0x5E
  0011c	e58d3054	 str         r3, [sp, #0x54]
  00120	e58d2004	 str         r2, [sp, #4]
  00124	e58d1008	 str         r1, [sp, #8]
  00128	e58d000c	 str         r0, [sp, #0xC]
  0012c	e58de010	 str         lr, [sp, #0x10]
  00130	e58d6014	 str         r6, [sp, #0x14]
  00134	e58d7018	 str         r7, [sp, #0x18]
  00138	e58d801c	 str         r8, [sp, #0x1C]
  0013c	e58d9020	 str         r9, [sp, #0x20]
  00140	e58da024	 str         r10, [sp, #0x24]
  00144	e58db028	 str         r11, [sp, #0x28]
  00148	e3a03003	 mov         r3, #3
  0014c	e58d3058	 str         r3, [sp, #0x58]
  00150	e3a03003	 mov         r3, #3
  00154	e58d305c	 str         r3, [sp, #0x5C]
  00158	e3a03002	 mov         r3, #2
  0015c	e58d3084	 str         r3, [sp, #0x84]
  00160	e3a03002	 mov         r3, #2
  00164	e3a02003	 mov         r2, #3
  00168	e3a01003	 mov         r1, #3
  0016c	e3a00001	 mov         r0, #1
  00170	e3a0e001	 mov         lr, #1
  00174	e3a07001	 mov         r7, #1
  00178	e3a08002	 mov         r8, #2
  0017c	e3a09002	 mov         r9, #2
  00180	e3a0a002	 mov         r10, #2
  00184	e3a0b002	 mov         r11, #2
  00188	e58d3088	 str         r3, [sp, #0x88]
  0018c	e3a06000	 mov         r6, #0
  00190	e58d2060	 str         r2, [sp, #0x60]
  00194	e58d1064	 str         r1, [sp, #0x64]
  00198	e58d0068	 str         r0, [sp, #0x68]
  0019c	e58de06c	 str         lr, [sp, #0x6C]
  001a0	e58d7070	 str         r7, [sp, #0x70]
  001a4	e58d8074	 str         r8, [sp, #0x74]
  001a8	e58d9078	 str         r9, [sp, #0x78]
  001ac	e58da07c	 str         r10, [sp, #0x7C]
  001b0	e58db080	 str         r11, [sp, #0x80]

; 410  : 	if(v_pGPIOReg != 0)

  001b4	0a00000c	 beq         |$L823|

; 411  : 	{
; 412  : 		XllpGpioSetDirectionIn(v_pGPIOReg, GpioDirInList);

  001b8	e28d1020	 add         r1, sp, #0x20
  001bc	e1a00004	 mov         r0, r4
  001c0	eb000000	 bl          XllpGpioSetDirectionIn

; 413  : 		XllpGpioSetDirectionOut(v_pGPIOReg, GpioDirOutList);

  001c4	e28d1000	 add         r1, sp, #0
  001c8	e1a00004	 mov         r0, r4
  001cc	eb000000	 bl          XllpGpioSetDirectionOut

; 414  :  		XllpGpioSetOutput0(v_pGPIOReg, GpioDirOutList);

  001d0	e28d1000	 add         r1, sp, #0
  001d4	e1a00004	 mov         r0, r4
  001d8	eb000000	 bl          XllpGpioSetOutput0

; 415  : 		XllpGpioSetAlternateFn(v_pGPIOReg, GpioAltFnPinList, GpioAltFnValList);

  001dc	e28d2048	 add         r2, sp, #0x48
  001e0	e28d1090	 add         r1, sp, #0x90
  001e4	e1a00004	 mov         r0, r4
  001e8	eb000000	 bl          XllpGpioSetAlternateFn
  001ec		 |$L823|

; 416  : 	}
; 417  : 
; 418  : 
; 419  : 	if(v_pKeyPadRegs != 0)

  001ec	e3550000	 cmp         r5, #0

; 420  : 	{
; 421  : 		// Init the control regs for direct keys
; 422  : 		v_pKeyPadRegs->kpControlReg = (MATRIX_KP_NUMBER_OF_ROWS |  MATRIX_KP_NUMBER_OF_COLUMNS |
; 423  : 										MAT_SCAN_LINE0 | MAT_SCAN_LINE1 | MAT_SCAN_LINE2 | 
; 424  : 										MAT_SCAN_LINE3 | MAT_SCAN_LINE4 | MAT_SCAN_LINE5 | 
; 425  : 										MAT_SCAN_LINE6 | MAT_SCAN_LINE7 | //IGNORE_MULTIPLE_KEY_PRESS |
; 426  : 										AUTO_SCAN_ON_ACTIVITY | MATRIX_INTR_ENABLE | 
; 427  :  										MATRIX_KP_ENABLE | ROTARY_ENCODER_ZERO_DEB |
; 428  :  										DIRECT_KP_INTR_ENABLE | DIRECT_KEY_NUMS |
; 429  :  										DIRECT_KP_ENABLE | ROTARY_ENCODER_0_ENABLE) ;	 //NMD

  001f0	159f301c	 ldrne       r3, [pc, #0x1C]

; 430  : 
; 431  : 	   	v_pKeyPadRegs->kpRotaryEncoderCountReg = START_VALUE;

  001f4	13a0207f	 movne       r2, #0x7F

; 432  : 
; 433  : 		retval = XLLP_TRUE;		

  001f8	13a06001	 movne       r6, #1
  001fc	15853000	 strne       r3, [r5]
  00200	15852010	 strne       r2, [r5, #0x10]

; 434  : 	}
; 435  : 	return(retval);

  00204	e1a00006	 mov         r0, r6

; 436  : }

  00208	e28dd0d4	 add         sp, sp, #0xD4
  0020c	e8bd4ff0	 ldmia       sp!, {r4 - r11, lr}
  00210	e12fff1e	 bx          lr
  00214		 |$L956|
  00214	3f1ff8d7	 DCD         0x3f1ff8d7
  00218		 |$M952|

			 ENDP  ; |XllpKeyPadConfigure|

	END

⌨️ 快捷键说明

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