📄 main.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 903] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\main.o --depend=.\Obj\main.d --device=DARMSTM --apcs=interwork -O2 -I..\..\..\FWLib\library\inc -I..\..\include -IC:\Keil\ARM\INC\ST\STM32F10x -D__MICROLIB -DVECT_TAB_FLASH --omf_browse=.\Obj\main.crf ..\..\source\main.c]
THUMB
AREA ||i.Delay||, CODE, READONLY, ALIGN=2
Delay PROC
000000 b510 PUSH {r4,lr}
000002 4c08 LDR r4,|L1.36|
000004 6060 STR r0,[r4,#4] ; TimingDelay
000006 2001 MOVS r0,#1
000008 f7fff7ff BL SysTick_CounterCmd
|L1.12|
00000c 6860 LDR r0,[r4,#4] ; TimingDelay
00000e 2800 CMP r0,#0
000010 d1fc BNE |L1.12|
000012 1e80 SUBS r0,r0,#2
000014 f7fff7ff BL SysTick_CounterCmd
000018 e8bde8bd POP {r4,lr}
00001c 2000 MOVS r0,#0
00001e f7fff7ff B.W SysTick_CounterCmd
ENDP
000022 0000 DCW 0x0000
|L1.36|
000024 00000000 DCD ||.data||
AREA ||i.SysTick_Config||, CODE, READONLY, ALIGN=2
SysTick_Config PROC
000000 b510 PUSH {r4,lr}
000002 2004 MOVS r0,#4
000004 f7fff7ff BL SysTick_CLKSourceConfig
000008 4803 LDR r0,|L2.24|
00000a f7fff7ff BL SysTick_SetReload
00000e e8bde8bd POP {r4,lr}
000012 2001 MOVS r0,#1
000014 f7fff7ff B.W SysTick_ITConfig
ENDP
|L2.24|
000018 000afc80 DCD 0x000afc80
AREA ||i.main||, CODE, READONLY, ALIGN=2
main PROC
;;;57 int main(void)
;;;58 {
000000 e92de92d PUSH {r1-r11,lr}
;;;59 SC_State SCState = SC_POWER_OFF;
000004 2005 MOVS r0,#5
;;;60
;;;61 #ifdef DEBUG
;;;62 debug();
;;;63 #endif
;;;64
;;;65 /* System Clocks Configuration */
;;;66 RCC_Configuration();
000006 9002 STR r0,[sp,#8]
000008 f7fff7ff BL RCC_Configuration
00000c 2100 MOVS r1,#0
00000e f04ff04f MOV r0,#0x8000000
000012 f7fff7ff BL NVIC_SetVectorTable
000016 f44ff44f MOV r0,#0x600
00001a f7fff7ff BL NVIC_PriorityGroupConfig
00001e 2028 MOVS r0,#0x28
000020 f7fff7ff BL NVIC_ClearIRQChannelPendingBit
000024 2028 MOVS r0,#0x28
000026 f88df88d STRB r0,[sp,#4]
00002a 2400 MOVS r4,#0
00002c f88df88d STRB r4,[sp,#5]
000030 f88df88d STRB r4,[sp,#6]
000034 2501 MOVS r5,#1
000036 f88df88d STRB r5,[sp,#7]
00003a a801 ADD r0,sp,#4
00003c f7fff7ff BL NVIC_Init
000040 2027 MOVS r0,#0x27
000042 f88df88d STRB r0,[sp,#4]
000046 f88df88d STRB r5,[sp,#5]
00004a a801 ADD r0,sp,#4
00004c f7fff7ff BL NVIC_Init
;;;67
;;;68 /* NVIC configuration */
;;;69 NVIC_Configuration();
;;;70
;;;71 /* SysTick configuration */
;;;72 SysTick_Config();
000050 f7fff7ff BL SysTick_Config
000054 f44ff44f MOV r0,#0x3c0
000058 f8adf8ad STRH r0,[sp,#4]
00005c 2003 MOVS r0,#3
00005e f88df88d STRB r0,[sp,#6]
000062 2010 MOVS r0,#0x10
000064 f88df88d STRB r0,[sp,#7]
000068 a901 ADD r1,sp,#4
00006a 48cc LDR r0,|L3.924|
00006c f7fff7ff BL GPIO_Init
000070 03ae LSLS r6,r5,#14
000072 f8adf8ad STRH r6,[sp,#4]
000076 2004 MOVS r0,#4
000078 f88df88d STRB r0,[sp,#7]
00007c a901 ADD r1,sp,#4
00007e 48c8 LDR r0,|L3.928|
000080 f7fff7ff BL GPIO_Init
000084 210e MOVS r1,#0xe
000086 2004 MOVS r0,#4
000088 f7fff7ff BL GPIO_EXTILineConfig
00008c 4630 MOV r0,r6
00008e f7fff7ff BL EXTI_ClearITPendingBit
000092 f88df88d STRB r4,[sp,#4]
000096 2008 MOVS r0,#8
000098 f88df88d STRB r0,[sp,#5]
00009c 9600 STR r6,[sp,#0]
00009e f88df88d STRB r5,[sp,#6]
0000a2 4668 MOV r0,sp
0000a4 f7fff7ff BL EXTI_Init
0000a8 f8dff8df LDR r11,|L3.932|
0000ac 4fbe LDR r7,|L3.936|
0000ae f04ff04f MOV r8,#0xa4
0000b2 f04ff04f MOV r9,#2
0000b6 26a0 MOVS r6,#0xa0
0000b8 f44ff44f MOV r10,#0x9000
0000bc f1abf1ab SUB r5,r11,#0x1a
|L3.192|
;;;73
;;;74 /* Configure the GPIO ports */
;;;75 GPIO_Configuration();
;;;76
;;;77 /* Configure the EXTI Controller */
;;;78 EXTI_Configuration();
;;;79
;;;80 /*-------------------------------- Idle task ---------------------------------*/
;;;81 while(1)
;;;82 {
;;;83 /* Loop while no Smartcard is detected */
;;;84 while(CardInserted == 0)
0000c0 68b8 LDR r0,[r7,#8] ; CardInserted
0000c2 2800 CMP r0,#0
0000c4 d0fc BEQ |L3.192|
;;;85 {
;;;86 }
;;;87
;;;88 /* Start SC Demo ---------------------------------------------------------*/
;;;89
;;;90 /* Wait A2R --------------------------------------------------------------*/
;;;91 SCState = SC_POWER_ON;
;;;92
;;;93 SC_ADPU.Header.CLA = 0x00;
0000c6 9402 STR r4,[sp,#8]
0000c8 702c STRB r4,[r5,#0] ; SC_ADPU
;;;94 SC_ADPU.Header.INS = SC_GET_A2R;
0000ca 706c STRB r4,[r5,#1] ; SC_ADPU
;;;95 SC_ADPU.Header.P1 = 0x00;
0000cc 70ac STRB r4,[r5,#2] ; SC_ADPU
;;;96 SC_ADPU.Header.P2 = 0x00;
0000ce 70ec STRB r4,[r5,#3] ; SC_ADPU
;;;97 SC_ADPU.Body.LC = 0x00;
0000d0 712c STRB r4,[r5,#4] ; SC_ADPU
|L3.210|
;;;98
;;;99 while(SCState != SC_ACTIVE_ON_T0)
;;;100 {
;;;101 SC_Handler(&SCState, &SC_ADPU, &SC_Responce);
0000d2 4ab4 LDR r2,|L3.932|
0000d4 a802 ADD r0,sp,#8
0000d6 f1a2f1a2 SUB r1,r2,#0x1a
0000da f7fff7ff BL SC_Handler
0000de f89df89d LDRB r0,[sp,#8]
0000e2 2804 CMP r0,#4
0000e4 d1f5 BNE |L3.210|
;;;102 }
;;;103
;;;104 /* Apply the Procedure Type Selection (PTS) */
;;;105 SC_PTSConfig();
0000e6 f7fff7ff BL SC_PTSConfig
;;;106
;;;107 /* Inserts delay(400ms) for Smartcard clock resynchronisation */
;;;108 Delay(40);
0000ea 2028 MOVS r0,#0x28
0000ec f7fff7ff BL Delay
;;;109
;;;110 /* Select MF -------------------------------------------------------------*/
;;;111 SC_ADPU.Header.CLA = SC_CLA_GSM11;
0000f0 702e STRB r6,[r5,#0] ; SC_ADPU
;;;112 SC_ADPU.Header.INS = SC_SELECT_FILE;
0000f2 f885f885 STRB r8,[r5,#1] ; SC_ADPU
;;;113 SC_ADPU.Header.P1 = 0x00;
0000f6 70ac STRB r4,[r5,#2] ; SC_ADPU
;;;114 SC_ADPU.Header.P2 = 0x00;
0000f8 70ec STRB r4,[r5,#3] ; SC_ADPU
;;;115 SC_ADPU.Body.LC = 0x02;
0000fa f885f885 STRB r9,[r5,#4] ; SC_ADPU
;;;116
;;;117 for(i = 0; i < SC_ADPU.Body.LC; i++)
0000fe 4bab LDR r3,|L3.940|
000100 613c STR r4,[r7,#0x10] ; i
|L3.258|
;;;118 {
;;;119 SC_ADPU.Body.Data[i] = MasterRoot[i];
000102 6938 LDR r0,[r7,#0x10] ; i
000104 5c19 LDRB r1,[r3,r0]
000106 182a ADDS r2,r5,r0
000108 7151 STRB r1,[r2,#5]
00010a 1c40 ADDS r0,r0,#1
00010c 6138 STR r0,[r7,#0x10] ; i
00010e 7929 LDRB r1,[r5,#4] ; SC_ADPU
000110 4281 CMP r1,r0
000112 d8f6 BHI |L3.258|
000114 e003 B |L3.286|
|L3.278|
;;;120 }
;;;121 while(i < LCmax)
;;;122 {
;;;123 SC_ADPU.Body.Data[i++] = 0;
000116 1829 ADDS r1,r5,r0
000118 714c STRB r4,[r1,#5]
00011a 1c40 ADDS r0,r0,#1
00011c 6138 STR r0,[r7,#0x10] ; i
|L3.286|
00011e 2814 CMP r0,#0x14
000120 d3f9 BCC |L3.278|
;;;124 }
;;;125 SC_ADPU.Body.LE = 0;
;;;126
;;;127 SC_Handler(&SCState, &SC_ADPU, &SC_Responce);
000122 4aa0 LDR r2,|L3.932|
000124 766c STRB r4,[r5,#0x19] ; SC_ADPU
000126 f1a2f1a2 SUB r1,r2,#0x1a
00012a a802 ADD r0,sp,#8
00012c f7fff7ff BL SC_Handler
;;;128
;;;129 /* Get Response on MF ----------------------------------------------------*/
;;;130 if(SC_Responce.SW1 == SC_DF_SELECTED)
000130 f89bf89b LDRB r0,[r11,#0x14] ; SC_Responce
000134 289f CMP r0,#0x9f
000136 d10e BNE |L3.342|
;;;131 {
;;;132 SC_ADPU.Header.CLA = SC_CLA_GSM11;
000138 702e STRB r6,[r5,#0] ; SC_ADPU
;;;133 SC_ADPU.Header.INS = SC_GET_RESPONCE;
00013a 20c0 MOVS r0,#0xc0
00013c 7068 STRB r0,[r5,#1] ; SC_ADPU
;;;134 SC_ADPU.Header.P1 = 0x00;
00013e 70ac STRB r4,[r5,#2] ; SC_ADPU
;;;135 SC_ADPU.Header.P2 = 0x00;
000140 70ec STRB r4,[r5,#3] ; SC_ADPU
;;;136 SC_ADPU.Body.LC = 0x00;
000142 712c STRB r4,[r5,#4] ; SC_ADPU
;;;137 SC_ADPU.Body.LE = SC_Responce.SW2;
000144 f89bf89b LDRB r0,[r11,#0x15] ; SC_Responce
;;;138
;;;139 SC_Handler(&SCState, &SC_ADPU, &SC_Responce);
000148 4a96 LDR r2,|L3.932|
00014a 7668 STRB r0,[r5,#0x19] ; SC_ADPU
00014c f1a2f1a2 SUB r1,r2,#0x1a
000150 a802 ADD r0,sp,#8
000152 f7fff7ff BL SC_Handler
|L3.342|
;;;140 }
;;;141
;;;142 /* Select ICCID ----------------------------------------------------------*/
;;;143 if(((SC_Responce.SW1 << 8) | (SC_Responce.SW2)) == SC_OP_TERMINATED)
000156 f8bbf8bb LDRH r0,[r11,#0x14] ; SC_Responce
00015a ba40 REV16 r0,r0
00015c 4550 CMP r0,r10
00015e d126 BNE |L3.430|
;;;144 {
;;;145 /* Check if the CHV1 is enabled */
;;;146 if((SC_Responce.Data[13] & 0x80) == 0x00)
000160 f89bf89b LDRB r0,[r11,#0xd] ; SC_Responce
000164 0600 LSLS r0,r0,#24
000166 d401 BMI |L3.364|
;;;147 {
;;;148 CHV1Status = 0x01;
000168 2001 MOVS r0,#1
00016a 60f8 STR r0,[r7,#0xc] ; CHV1Status
|L3.364|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -