📄 control_match.txt
字号:
; generated by ARM C/C++ Compiler, 4.1 [Build 481]
; commandline ArmCC [--debug -c --asm --interleave -o.\OBJ\control_match.o --depend=.\OBJ\control_match.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\control_match.crf USER\Control_Match.c]
THUMB
AREA ||.text||, CODE, READONLY, ALIGN=2
ControlKeyInit PROC
;;;11
;;;12 void ControlKeyInit(void)
000000 4864 LDR r0,|L1.404|
;;;13 {
;;;14 //RCC->APB2ENR|= BIT(2);
;;;15
;;;16 GPIOA->CRL &= 0x00FFFFFF; //PA 6 7 8 11 12
000002 6800 LDR r0,[r0,#0]
000004 f020407f BIC r0,r0,#0xff000000
000008 4963 LDR r1,|L1.408|
00000a f8c10800 STR r0,[r1,#0x800]
;;;17 GPIOA->CRL |= 0x88000000;
00000e 4608 MOV r0,r1
000010 f8d00800 LDR r0,[r0,#0x800]
000014 f0404008 ORR r0,r0,#0x88000000
000018 f8c10800 STR r0,[r1,#0x800]
;;;18
;;;19 GPIOA->CRH &= 0xFFF00FF0;
00001c 485f LDR r0,|L1.412|
00001e 6800 LDR r0,[r0,#0]
000020 495f LDR r1,|L1.416|
000022 ea000001 AND r0,r0,r1
000026 495c LDR r1,|L1.408|
000028 f8c10804 STR r0,[r1,#0x804]
;;;20 GPIOA->CRH |= 0x00088008;
00002c 485b LDR r0,|L1.412|
00002e 6800 LDR r0,[r0,#0]
000030 495c LDR r1,|L1.420|
000032 ea400001 ORR r0,r0,r1
000036 4958 LDR r1,|L1.408|
000038 f8c10804 STR r0,[r1,#0x804]
;;;21
;;;22 GPIOA->ODR |= 0x19C0;
00003c 4608 MOV r0,r1
00003e f8d0080c LDR r0,[r0,#0x80c]
000042 f44050ce ORR r0,r0,#0x19c0
000046 f8c1080c STR r0,[r1,#0x80c]
;;;23 }
00004a 4770 BX lr
;;;24 void ContorlMatch(u8*pnrf2401, u8* pbuf)
ENDP
ContorlMatch PROC
00004c b530 PUSH {r4,r5,lr}
;;;25 {
;;;26 u8 i = 0;
00004e 2300 MOVS r3,#0
;;;27 u8 temp_dir = 0;
000050 2400 MOVS r4,#0
;;;28 s16 temp = 0;
000052 2200 MOVS r2,#0
;;;29 for(i = 3; i < 6; i ++)
000054 2303 MOVS r3,#3
000056 e003 B |L1.96|
|L1.88|
;;;30 {
;;;31 pbuf[i] = 0;
000058 2500 MOVS r5,#0
00005a 54cd STRB r5,[r1,r3]
00005c 1c5d ADDS r5,r3,#1 ;29
00005e b2eb UXTB r3,r5 ;29
|L1.96|
000060 2b06 CMP r3,#6 ;29
000062 dbf9 BLT |L1.88|
;;;32 }
;;;33
;;;34 //////////////////////////////////////////////
;;;35 //方向键->左边4个
;;;36 temp_dir = pnrf2401[DIR_BIT] & 0x0f; //屏蔽右方向键的高4位
000064 7945 LDRB r5,[r0,#5]
000066 f005040f AND r4,r5,#0xf
;;;37
;;;38 if(pnrf2401[DIR_BIT] == L_UP)
00006a 7945 LDRB r5,[r0,#5]
00006c b925 CBNZ r5,|L1.120|
;;;39 {
;;;40 pbuf[DATA_3] |= BIT(1); //1前进
00006e 794d LDRB r5,[r1,#5]
000070 f0450502 ORR r5,r5,#2
000074 714d STRB r5,[r1,#5]
000076 e026 B |L1.198|
|L1.120|
;;;41 }
;;;42 else if(pnrf2401[DIR_BIT] ==L_DN)
000078 7945 LDRB r5,[r0,#5]
00007a 2d04 CMP r5,#4
00007c d104 BNE |L1.136|
;;;43 {
;;;44 pbuf[DATA_3] |= BIT(0); //3后退
00007e 794d LDRB r5,[r1,#5]
000080 f0450501 ORR r5,r5,#1
000084 714d STRB r5,[r1,#5]
000086 e01e B |L1.198|
|L1.136|
;;;45 }
;;;46 else if(pnrf2401[DIR_BIT] == L_LEFT)
000088 7945 LDRB r5,[r0,#5]
00008a 2d06 CMP r5,#6
00008c d104 BNE |L1.152|
;;;47 {
;;;48 pbuf[DATA_3] |= BIT(2); //4右大转
00008e 794d LDRB r5,[r1,#5]
000090 f0450504 ORR r5,r5,#4
000094 714d STRB r5,[r1,#5]
000096 e016 B |L1.198|
|L1.152|
;;;49 }
;;;50 else if(pnrf2401[DIR_BIT] == L_RIGHT)
000098 7945 LDRB r5,[r0,#5]
00009a 2d02 CMP r5,#2
00009c d104 BNE |L1.168|
;;;51 {
;;;52 pbuf[DATA_3] |= BIT(4); //2左大转
00009e 794d LDRB r5,[r1,#5]
0000a0 f0450510 ORR r5,r5,#0x10
0000a4 714d STRB r5,[r1,#5]
0000a6 e00e B |L1.198|
|L1.168|
;;;53 }
;;;54 else if(pnrf2401[DIR_BIT] == L_LEFT_UP)
0000a8 7945 LDRB r5,[r0,#5]
0000aa 2d07 CMP r5,#7
0000ac d104 BNE |L1.184|
;;;55 {
;;;56 pbuf[DATA_3] |= BIT(3); //1+4右小转
0000ae 794d LDRB r5,[r1,#5]
0000b0 f0450508 ORR r5,r5,#8
0000b4 714d STRB r5,[r1,#5]
0000b6 e006 B |L1.198|
|L1.184|
;;;57 }
;;;58 else if(pnrf2401[DIR_BIT] == L_RIGHT_UP)
0000b8 7945 LDRB r5,[r0,#5]
0000ba 2d01 CMP r5,#1
0000bc d103 BNE |L1.198|
;;;59 {
;;;60 pbuf[DATA_3] |= BIT(5); //1+2左小转
0000be 794d LDRB r5,[r1,#5]
0000c0 f0450520 ORR r5,r5,#0x20
0000c4 714d STRB r5,[r1,#5]
|L1.198|
;;;61 }
;;;62
;;;63 //////////////////////////////////////////////
;;;64 //方向键->右边4个
;;;65 temp_dir = pnrf2401[DIR_BIT] & 0xf0; //屏蔽左方向键的低4位
0000c6 7945 LDRB r5,[r0,#5]
0000c8 f00504f0 AND r4,r5,#0xf0
;;;66 if(pnrf2401[DIR_BIT] == R_UP)
0000cc 7945 LDRB r5,[r0,#5]
0000ce 2d28 CMP r5,#0x28
0000d0 d104 BNE |L1.220|
;;;67 {
;;;68 pbuf[DATA_2] |= BIT(3); //5大臂伸展
0000d2 790d LDRB r5,[r1,#4]
0000d4 f0450508 ORR r5,r5,#8
0000d8 710d STRB r5,[r1,#4]
0000da e006 B |L1.234|
|L1.220|
;;;69 }
;;;70 else if(pnrf2401[DIR_BIT] == R_DN)
0000dc 7945 LDRB r5,[r0,#5]
0000de 2d48 CMP r5,#0x48
0000e0 d103 BNE |L1.234|
;;;71 {
;;;72 pbuf[DATA_2] |= BIT(2); //7大臂收缩
0000e2 790d LDRB r5,[r1,#4]
0000e4 f0450504 ORR r5,r5,#4
0000e8 710d STRB r5,[r1,#4]
|L1.234|
;;;73 }
;;;74
;;;75 if(pnrf2401[DIR_BIT] == R_LEFT)
0000ea 7945 LDRB r5,[r0,#5]
0000ec 2d18 CMP r5,#0x18
0000ee d104 BNE |L1.250|
;;;76 {
;;;77 pbuf[DATA_1] |= BIT(1); //6中臂伸展
0000f0 78cd LDRB r5,[r1,#3]
0000f2 f0450502 ORR r5,r5,#2
0000f6 70cd STRB r5,[r1,#3]
0000f8 e006 B |L1.264|
|L1.250|
;;;78 }
;;;79 else if(pnrf2401[DIR_BIT] == R_RIGHT)
0000fa 7945 LDRB r5,[r0,#5]
0000fc 2d88 CMP r5,#0x88
0000fe d103 BNE |L1.264|
;;;80 {
;;;81 pbuf[DATA_1] |= BIT(0); //8中臂收缩
000100 78cd LDRB r5,[r1,#3]
000102 f0450501 ORR r5,r5,#1
000106 70cd STRB r5,[r1,#3]
|L1.264|
;;;82 }
;;;83
;;;84 //////////////////////////////////////////////
;;;85 //左右摇杆
;;;86 temp = pnrf2401[L_YG_X_BIT] - YG_MID_VALUE;
000108 78c5 LDRB r5,[r0,#3]
00010a f1a50280 SUB r2,r5,#0x80
;;;87 if(temp > YG_MAX_VALUE)
00010e 2a23 CMP r2,#0x23
000110 dd04 BLE |L1.284|
;;;88 {
;;;89 pbuf[DATA_2] |= BIT(0); //9机械臂右旋转
000112 790d LDRB r5,[r1,#4]
000114 f0450501 ORR r5,r5,#1
000118 710d STRB r5,[r1,#4]
00011a e006 B |L1.298|
|L1.284|
;;;90 }
;;;91 else if(temp < YG_MIN_VALUE)
00011c f1120f23 CMN r2,#0x23
000120 da03 BGE |L1.298|
;;;92 {
;;;93 pbuf[DATA_2] |= BIT(1); //9机械臂左旋转
000122 790d LDRB r5,[r1,#4]
000124 f0450502 ORR r5,r5,#2
000128 710d STRB r5,[r1,#4]
|L1.298|
;;;94 }
;;;95
;;;96 temp = pnrf2401[R_YG_X_BIT] - YG_MID_VALUE;
00012a 7a05 LDRB r5,[r0,#8]
00012c f1a50280 SUB r2,r5,#0x80
;;;97 if(temp > YG_MAX_VALUE)
000130 2a23 CMP r2,#0x23
000132 dd04 BLE |L1.318|
;;;98 {
;;;99 pbuf[DATA_1] |= BIT(5); //10机械手左旋转
000134 78cd LDRB r5,[r1,#3]
000136 f0450520 ORR r5,r5,#0x20
00013a 70cd STRB r5,[r1,#3]
00013c e006 B |L1.332|
|L1.318|
;;;100 }
;;;101 else if(temp < YG_MIN_VALUE)
00013e f1120f23 CMN r2,#0x23
000142 da03 BGE |L1.332|
;;;102 {
;;;103 pbuf[DATA_1] |= BIT(4); //10机械手右旋转
000144 78cd LDRB r5,[r1,#3]
000146 f0450510 ORR r5,r5,#0x10
00014a 70cd STRB r5,[r1,#3]
|L1.332|
;;;104 }
;;;105 //////////////////////////////////////////////
;;;106 //正前方4键
;;;107 //左两键
;;;108 if(pnrf2401[LR_FNT_BIT] & L_FNT_UP)
00014c 7a45 LDRB r5,[r0,#9]
00014e f0150f01 TST r5,#1
000152 d004 BEQ |L1.350|
;;;109 {
;;;110 pbuf[DATA_1] |= BIT(2); //12小臂收缩
000154 78cd LDRB r5,[r1,#3]
000156 f0450504 ORR r5,r5,#4
00015a 70cd STRB r5,[r1,#3]
00015c e007 B |L1.366|
|L1.350|
;;;111 }
;;;112 else if(pnrf2401[LR_FNT_BIT] & L_FNT_DN)
00015e 7a45 LDRB r5,[r0,#9]
000160 f0150f04 TST r5,#4
000164 d003 BEQ |L1.366|
;;;113 {
;;;114 pbuf[DATA_1] |= BIT(3); //11小臂伸展
000166 78cd LDRB r5,[r1,#3]
000168 f0450508 ORR r5,r5,#8
00016c 70cd STRB r5,[r1,#3]
|L1.366|
;;;115 }
;;;116 //右两键
;;;117 if(pnrf2401[LR_FNT_BIT]& R_FNT_UP)
00016e 7a45 LDRB r5,[r0,#9]
000170 f0150f02 TST r5,#2
000174 d004 BEQ |L1.384|
;;;118 {
;;;119 pbuf[DATA_1] |= BIT(7); //13机械手闭合
000176 78cd LDRB r5,[r1,#3]
000178 f0450580 ORR r5,r5,#0x80
00017c 70cd STRB r5,[r1,#3]
00017e e007 B |L1.400|
|L1.384|
;;;120 }
;;;121 else if(pnrf2401[LR_FNT_BIT] & R_FNT_DN)
000180 7a45 LDRB r5,[r0,#9]
000182 f0150f08 TST r5,#8
000186 d003 BEQ |L1.400|
;;;122 {
;;;123 pbuf[DATA_1] |= BIT(6); //14机械手张开
000188 78cd LDRB r5,[r1,#3]
00018a f0450540 ORR r5,r5,#0x40
00018e 70cd STRB r5,[r1,#3]
|L1.400|
;;;124 }
;;;125
;;;126 }
000190 bd30 POP {r4,r5,pc}
;;;127
ENDP
000192 0000 DCW 0x0000
|L1.404|
DCD 0x40010800
|L1.408|
DCD 0x40010000
|L1.412|
DCD 0x40010804
|L1.416|
DCD 0xfff00ff0
|L1.420|
DCD 0x00088008
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -