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

📄 control_match.txt

📁 STM32+ov7670
💻 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 + -