📄 keypad_soft.txt
字号:
;;;113 {
000238 e92d4038 STMFD sp!,{r3-r5,lr}
;;;114 char key;
;;;115 //int Width_reg=10; //width=30 => 1msec,width=10 => 0.3msec
;;;116 int Width_reg=100; //width=30 => 1msec,width=10 => 0.3msec
00023c e3a04064 MOV r4,#0x64
;;;117 //int Width_reg=0x3fff; //width=30 => 1msec,width=10 => 0.3msec
;;;118
;;;119 rGPPU|=(0x3f<<19);
000240 e59f00b0 LDR r0,|L1.760|
000244 e5900010 LDR r0,[r0,#0x10]
000248 e380077e ORR r0,r0,#0x1f80000
00024c e59f10a4 LDR r1,|L1.760|
000250 e5810010 STR r0,[r1,#0x10]
;;;120 rGPCON_U |=(0x3ffff) ;
000254 e1a00001 MOV r0,r1
000258 e5900000 LDR r0,[r0,#0]
00025c e59f1098 LDR r1,|L1.764|
000260 e1800001 ORR r0,r0,r1
000264 e59f108c LDR r1,|L1.760|
000268 e5810000 STR r0,[r1,#0]
;;;121 rGPCON_M |=(3<<14) ;
00026c e1a00001 MOV r0,r1
000270 e5900004 LDR r0,[r0,#4]
000274 e3800cc0 ORR r0,r0,#0xc000
000278 e5810004 STR r0,[r1,#4]
;;;122 Uart_Printf("[KEY_PAD Test]\n");
00027c e28f007c ADR r0,|L1.768|
000280 ebfffffe BL _printf
;;;123
;;;124 Uart_Printf("Select Key filter clock...\n");
000284 e28f0084 ADR r0,|L1.784|
000288 ebfffffe BL _printf
;;;125 Uart_Printf("a. RTC Clock b. GCLK \n");
00028c e28f0098 ADR r0,|L1.812|
000290 ebfffffe BL _printf
;;;126 key=Uart_Getch();
000294 ebfffffe BL Uart_Getch
000298 e1a05000 MOV r5,r0
;;;127
;;;128 switch(key)
00029c e3550061 CMP r5,#0x61
0002a0 0a000002 BEQ |L1.688|
0002a4 e3550062 CMP r5,#0x62
0002a8 1a000010 BNE |L1.752|
0002ac ea000007 B |L1.720|
;;;129 {
;;;130 case 'a':
;;;131 Uart_Printf(" RTC clock is selected\n");
|L1.688|
0002b0 e28f008c ADR r0,|L1.836|
0002b4 ebfffffe BL _printf
;;;132 rKEYFLT0=(1<<1)|(0<<0); //RTC CLK
0002b8 e3a00002 MOV r0,#2
0002bc e51f1094 LDR r1,|L1.560|
0002c0 e5810008 STR r0,[r1,#8]
;;;133 rKEYFLT1=(Width_reg);
0002c4 e1c10000 BIC r0,r1,r0
0002c8 e580400c STR r4,[r0,#0xc]
;;;134 break;
0002cc ea000008 B |L1.756|
;;;135 case 'b':
;;;136 Uart_Printf(" GCLK clock is selected\n");
|L1.720|
0002d0 e28f0084 ADR r0,|L1.860|
0002d4 ebfffffe BL _printf
;;;137 rKEYFLT0=(1<<1)|(1<<0); // GCLK
0002d8 e3a00003 MOV r0,#3
0002dc e51f10b4 LDR r1,|L1.560|
0002e0 e5810008 STR r0,[r1,#8]
;;;138 rKEYFLT1=(Width_reg);
0002e4 e1c10000 BIC r0,r1,r0
0002e8 e580400c STR r4,[r0,#0xc]
;;;139 break;
0002ec ea000000 B |L1.756|
;;;140 default:
;;;141 break;
|L1.752|
0002f0 e1a00000 NOP
;;;142 }
;;;143
;;;144 }
|L1.756|
0002f4 e8bd8038 LDMFD sp!,{r3-r5,pc}
|L1.760|
0002f8 44800000 DCD 0x44800000
|L1.764|
0002fc 0003ffff DCD 0x0003ffff
|L1.768|
000300 59454b5b DCB "[KEY"
000304 4441505f DCB "_PAD"
000308 73655420 DCB " Tes"
00030c 000a5d74 DCB "t]\n\0"
|L1.784|
000310 656c6553 DCB "Sele"
000314 4b207463 DCB "ct K"
000318 66207965 DCB "ey f"
00031c 65746c69 DCB "ilte"
000320 6c632072 DCB "r cl"
000324 2e6b636f DCB "ock."
000328 000a2e2e DCB "..\n\0"
|L1.812|
00032c 52202e61 DCB "a. R"
000330 43204354 DCB "TC C"
000334 6b636f6c DCB "lock"
000338 2e622009 DCB "\t b."
00033c 4c434720 DCB " GCL"
000340 000a204b DCB "K \n\0"
|L1.836|
000344 43545220 DCB " RTC"
000348 6f6c6320 DCB " clo"
00034c 69206b63 DCB "ck i"
000350 65732073 DCB "s se"
000354 7463656c DCB "lect"
000358 000a6465 DCB "ed\n\0"
|L1.860|
00035c 4c434720 DCB " GCL"
000360 6c63204b DCB "K cl"
000364 206b636f DCB "ock "
000368 73207369 DCB "is s"
00036c 63656c65 DCB "elec"
000370 0a646574 DCB "ted\n"
000374 00000000 DCB "\0\0\0\0"
ENDP
Ch29_KEYPAD PROC
;;;20 void Ch29_KEYPAD(void)
;;;21 {
000378 e92d4038 STMFD sp!,{r3-r5,lr}
;;;22 int save_U,save_PU;
;;;23 save_U=rGPCON_U;
00037c e51f008c LDR r0,|L1.760|
000380 e5900000 LDR r0,[r0,#0]
000384 e1a04000 MOV r4,r0
;;;24 save_PU=rGPPU;
000388 e51f0098 LDR r0,|L1.760|
00038c e5900010 LDR r0,[r0,#0x10]
000390 e1a05000 MOV r5,r0
;;;25
;;;26 Key_pad_Init();
000394 ebfffffe BL Key_pad_Init
;;;27
;;;28 rKEYINTC=(1<<3)|(0x4);//Falling edge
000398 e3a0000c MOV r0,#0xc
00039c e51f1174 LDR r1,|L1.560|
0003a0 e5810004 STR r0,[r1,#4]
;;;29 //rKEYINTC=(1<<3)|(0x0);//Low level
;;;30 //rKEYINTC=(1<<3)|(0x2);//Rising edge
;;;31 //rKEYINTC=(1<<3)|(0x6);//Both edge
;;;32
;;;33 rKEYMAN=0x20;
0003a4 e3a00020 MOV r0,#0x20
0003a8 e1c11000 BIC r1,r1,r0
0003ac e5810010 STR r0,[r1,#0x10]
;;;34 rKEYDAT=(1<<6)|(1<<7);
0003b0 e3a000c0 MOV r0,#0xc0
0003b4 e1c11000 BIC r1,r1,r0
0003b8 e5810000 STR r0,[r1,#0]
;;;35
;;;36 pISR_KEYPAD = (int)Key_ISR;
0003bc e59f008c LDR r0,|L1.1104|
0003c0 e59f108c LDR r1,|L1.1108|
0003c4 e5810f44 STR r0,[r1,#0xf44]
;;;37 ClearPending(BIT_KEYPAD);
0003c8 e3a00f80 MOV r0,#0x200
0003cc e51f11a8 LDR r1,|L1.556|
0003d0 e5810000 STR r0,[r1,#0]
0003d4 e1c10000 BIC r0,r1,r0
0003d8 e5900010 LDR r0,[r0,#0x10]
0003dc e5810010 STR r0,[r1,#0x10]
0003e0 e1a00001 MOV r0,r1
0003e4 e5900010 LDR r0,[r0,#0x10]
;;;38 rINTMSK&= ~(BIT_KEYPAD);
0003e8 e1a00001 MOV r0,r1
0003ec e5900008 LDR r0,[r0,#8]
0003f0 e3c00f80 BIC r0,r0,#0x200
0003f4 e5810008 STR r0,[r1,#8]
;;;39
;;;40 Uart_Printf("keypad test start .......\n");
0003f8 e28f0058 ADR r0,|L1.1112|
0003fc ebfffffe BL _printf
;;;41
;;;42 while(!Uart_GetKey()); //Uart_Printf(".");
000400 e1a00000 NOP
|L1.1028|
000404 ebfffffe BL Uart_GetKey
000408 e3500000 CMP r0,#0
00040c 0afffffc BEQ |L1.1028|
;;;43
;;;44 ClearPending(BIT_KEYPAD);
000410 e3a00f80 MOV r0,#0x200
000414 e51f11f0 LDR r1,|L1.556|
000418 e5810000 STR r0,[r1,#0]
00041c e1c10000 BIC r0,r1,r0
000420 e5900010 LDR r0,[r0,#0x10]
000424 e5810010 STR r0,[r1,#0x10]
000428 e1a00001 MOV r0,r1
00042c e5900010 LDR r0,[r0,#0x10]
;;;45 rINTMSK |= BIT_KEYPAD; //Key Pad Int mask enable
000430 e1a00001 MOV r0,r1
000434 e5900008 LDR r0,[r0,#8]
000438 e3800f80 ORR r0,r0,#0x200
00043c e5810008 STR r0,[r1,#8]
;;;46 rGPCON_U= save_U;
000440 e2810646 ADD r0,r1,#0x4600000
000444 e5804000 STR r4,[r0,#0]
;;;47 rGPPU=save_PU;
000448 e5805010 STR r5,[r0,#0x10]
;;;48 }
00044c e8bd8038 LDMFD sp!,{r3-r5,pc}
|L1.1104|
000450 00000000 DCD Key_ISR
|L1.1108|
000454 13fff000 DCD 0x13fff000
|L1.1112|
000458 7079656b DCB "keyp"
00045c 74206461 DCB "ad t"
000460 20747365 DCB "est "
000464 72617473 DCB "star"
000468 2e2e2074 DCB "t .."
00046c 2e2e2e2e DCB "...."
000470 00000a2e DCB ".\n\0\0"
ENDP
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -