📄 key.txt
字号:
; generated by ARM C/C++ Compiler, 4.1 [Build 481]
; commandline ArmCC [--debug -c --asm --interleave -o.\OBJ\key.o --depend=.\OBJ\key.d --cpu=Cortex-M3 --apcs=interwork -O0 -I..\Demo -I.\HARDWARE\EXTI -I.\HARDWARE\KEY -I.\HARDWARE\LCD -I.\HARDWARE\LED -I.\HARDWARE\TIMER -I.\HARDWARE\WDG -I.\SYSTEM\delay -I.\SYSTEM\sys -I.\SYSTEM\usart -I.\USER -IC:\Keil\ARM\INC -IC:\Keil\ARM\INC\ST\STM32F10x --omf_browse=.\OBJ\key.crf HARDWARE\KEY\key.c]
THUMB
AREA ||.text||, CODE, READONLY, ALIGN=2
KEY_Init PROC
;;;11 //PA0.13.15 设置成输入
;;;12 void KEY_Init(void)
000000 483a LDR r0,|L1.236|
;;;13 {
;;;14 RCC->APB2ENR|=1<<2; //使能PORTA时钟
000002 6980 LDR r0,[r0,#0x18]
000004 f0400004 ORR r0,r0,#4
000008 4938 LDR r1,|L1.236|
00000a 6188 STR r0,[r1,#0x18]
;;;15 GPIOA->CRL&=0XFFFFFFF0;//PA0设置成输入
00000c 4838 LDR r0,|L1.240|
00000e 6800 LDR r0,[r0,#0]
000010 f020000f BIC r0,r0,#0xf
000014 4937 LDR r1,|L1.244|
000016 f8c10800 STR r0,[r1,#0x800]
;;;16 GPIOA->CRL|=0X00000008;
00001a 4608 MOV r0,r1
00001c f8d00800 LDR r0,[r0,#0x800]
000020 f0400008 ORR r0,r0,#8
000024 f8c10800 STR r0,[r1,#0x800]
;;;17 GPIOA->CRH&=0X0F0FFFFF;//PA13,15设置成输入
000028 4833 LDR r0,|L1.248|
00002a 6800 LDR r0,[r0,#0]
00002c 4933 LDR r1,|L1.252|
00002e ea000001 AND r0,r0,r1
000032 4930 LDR r1,|L1.244|
000034 f8c10804 STR r0,[r1,#0x804]
;;;18 GPIOA->CRH|=0X80800000;
000038 482f LDR r0,|L1.248|
00003a 6800 LDR r0,[r0,#0]
00003c 4930 LDR r1,|L1.256|
00003e ea400001 ORR r0,r0,r1
000042 492c LDR r1,|L1.244|
000044 f8c10804 STR r0,[r1,#0x804]
;;;19 GPIOA->ODR|=1<<13; //PA13上拉,PA0默认下拉
000048 4608 MOV r0,r1
00004a f8d0080c LDR r0,[r0,#0x80c]
00004e f4405000 ORR r0,r0,#0x2000
000052 f8c1080c STR r0,[r1,#0x80c]
;;;20 GPIOA->ODR|=1<<15; //PA15上拉
000056 4608 MOV r0,r1
000058 f8d0080c LDR r0,[r0,#0x80c]
00005c f4404000 ORR r0,r0,#0x8000
000060 f8c1080c STR r0,[r1,#0x80c]
;;;21 }
000064 4770 BX lr
;;;22 //按键处理函数
ENDP
KEY_Scan PROC
;;;28 //注意此函数有响应优先级,KEY0>KEY1>KEY2!!
;;;29 u8 KEY_Scan(void)
000066 b510 PUSH {r4,lr}
;;;30 {
;;;31 static u8 key_up=1;//按键按松开标志
;;;32 JTAG_Set(JTAG_SWD_DISABLE);
000068 2002 MOVS r0,#2
00006a f7fffffe BL JTAG_Set
;;;33 if(key_up&&(KEY0==0||KEY1==0||KEY2==1))
00006e 4825 LDR r0,|L1.260|
000070 7800 LDRB r0,[r0,#0] ; key_up
000072 b338 CBZ r0,|L1.196|
000074 4824 LDR r0,|L1.264|
000076 6800 LDR r0,[r0,#0]
000078 b130 CBZ r0,|L1.136|
00007a 4824 LDR r0,|L1.268|
00007c 6800 LDR r0,[r0,#0]
00007e b118 CBZ r0,|L1.136|
000080 4823 LDR r0,|L1.272|
000082 6800 LDR r0,[r0,#0]
000084 2801 CMP r0,#1
000086 d11d BNE |L1.196|
|L1.136|
;;;34 {
;;;35 delay_ms(10);//去抖动
000088 200a MOVS r0,#0xa
00008a f7fffffe BL delay_ms
;;;36 key_up=0;
00008e 2000 MOVS r0,#0
000090 491c LDR r1,|L1.260|
000092 7008 STRB r0,[r1,#0]
;;;37 if(KEY0==0)
000094 481c LDR r0,|L1.264|
000096 6800 LDR r0,[r0,#0]
000098 b920 CBNZ r0,|L1.164|
;;;38 {
;;;39 JTAG_Set(SWD_ENABLE);
00009a 2001 MOVS r0,#1
00009c f7fffffe BL JTAG_Set
;;;40 return 1;
0000a0 2001 MOVS r0,#1
|L1.162|
;;;41 }
;;;42 else if(KEY1==0)
;;;43 {
;;;44 JTAG_Set(SWD_ENABLE);
;;;45 return 2;
;;;46 }
;;;47 else if(KEY2==1)
;;;48 {
;;;49 JTAG_Set(SWD_ENABLE);
;;;50 return 3;
;;;51 }
;;;52 }else if(KEY0==1&&KEY1==1&&KEY2==0)key_up=1;
;;;53 JTAG_Set(SWD_ENABLE);
;;;54 return 0;// 无按键按下
;;;55 }
0000a2 bd10 POP {r4,pc}
|L1.164|
0000a4 4819 LDR r0,|L1.268|
0000a6 6800 LDR r0,[r0,#0] ;42
0000a8 b920 CBNZ r0,|L1.180|
0000aa 2001 MOVS r0,#1 ;44
0000ac f7fffffe BL JTAG_Set
0000b0 2002 MOVS r0,#2 ;45
0000b2 e7f6 B |L1.162|
|L1.180|
0000b4 4816 LDR r0,|L1.272|
0000b6 6800 LDR r0,[r0,#0] ;47
0000b8 2801 CMP r0,#1 ;47
0000ba d111 BNE |L1.224|
0000bc f7fffffe BL JTAG_Set
0000c0 2003 MOVS r0,#3 ;50
0000c2 e7ee B |L1.162|
|L1.196|
0000c4 4810 LDR r0,|L1.264|
0000c6 6800 LDR r0,[r0,#0] ;52
0000c8 2801 CMP r0,#1 ;52
0000ca d109 BNE |L1.224|
0000cc 480f LDR r0,|L1.268|
0000ce 6800 LDR r0,[r0,#0] ;52
0000d0 2801 CMP r0,#1 ;52
0000d2 d105 BNE |L1.224|
0000d4 480e LDR r0,|L1.272|
0000d6 6800 LDR r0,[r0,#0] ;52
0000d8 b910 CBNZ r0,|L1.224|
0000da 2001 MOVS r0,#1 ;52
0000dc 4909 LDR r1,|L1.260|
0000de 7008 STRB r0,[r1,#0] ;52
|L1.224|
0000e0 2001 MOVS r0,#1 ;53
0000e2 f7fffffe BL JTAG_Set
0000e6 2000 MOVS r0,#0 ;54
0000e8 e7db B |L1.162|
;;;56
ENDP
0000ea 0000 DCW 0x0000
|L1.236|
DCD 0x40021000
|L1.240|
DCD 0x40010800
|L1.244|
DCD 0x40010000
|L1.248|
DCD 0x40010804
|L1.252|
DCD 0x0f0fffff
|L1.256|
DCD 0x80800000
|L1.260|
DCD key_up
|L1.264|
DCD 0x42210134
|L1.268|
DCD 0x4221013c
|L1.272|
DCD 0x42210100
AREA ||.data||, DATA, ALIGN=0
key_up
000000 01 DCB 0x01
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -