📄 smartcard.txt
字号:
;;;245 SCData = (u8)0xFF^(u8)0x10^(u8)SC_A2R.T[0];
000098 78b8 LDRB r0,[r7,#2] ; SC_A2R
00009a f080f080 EOR r0,r0,#0xef
00009e f888f888 STRB r0,[r8,#0] ; SCData
;;;246 USART_SendData(USART3, SCData);
0000a2 f898f898 LDRB r1,[r8,#0] ; SCData
0000a6 4648 MOV r0,r9
0000a8 f7fff7ff BL USART_SendData
|L9.172|
;;;247 while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET)
0000ac 2140 MOVS r1,#0x40
0000ae 4648 MOV r0,r9
0000b0 f7fff7ff BL USART_GetFlagStatus
0000b4 2800 CMP r0,#0
0000b6 d0f9 BEQ |L9.172|
;;;248 {
;;;249 }
;;;250
;;;251 /* Disable the DMA Receive (Reset DMAR bit only) */
;;;252 USART_DMACmd(USART3, USART_DMAReq_Rx, DISABLE);
0000b8 2200 MOVS r2,#0
0000ba 2140 MOVS r1,#0x40
0000bc 4648 MOV r0,r9
0000be f7fff7ff BL USART_DMACmd
;;;253
;;;254 if((USART_ByteReceive(&locData, SC_Receive_Timeout)) == SUCCESS)
0000c2 f44ff44f MOV r8,#0x4000
0000c6 4641 MOV r1,r8
0000c8 a807 ADD r0,sp,#0x1c
0000ca f7fff7ff BL USART_ByteReceive
0000ce 2801 CMP r0,#1
0000d0 d104 BNE |L9.220|
;;;255 {
;;;256 if(locData != 0xFF)
0000d2 f89df89d LDRB r0,[sp,#0x1c]
0000d6 28ff CMP r0,#0xff
0000d8 d000 BEQ |L9.220|
;;;257 {
;;;258 PTSConfirmStatus = 0x00;
0000da 2400 MOVS r4,#0
|L9.220|
;;;259 }
;;;260 }
;;;261 if((USART_ByteReceive(&locData, SC_Receive_Timeout)) == SUCCESS)
0000dc 4641 MOV r1,r8
0000de a807 ADD r0,sp,#0x1c
0000e0 f7fff7ff BL USART_ByteReceive
0000e4 2801 CMP r0,#1
0000e6 d104 BNE |L9.242|
;;;262 {
;;;263 if(locData != 0x10)
0000e8 f89df89d LDRB r0,[sp,#0x1c]
0000ec 2810 CMP r0,#0x10
0000ee d000 BEQ |L9.242|
;;;264 {
;;;265 PTSConfirmStatus = 0x00;
0000f0 2400 MOVS r4,#0
|L9.242|
;;;266 }
;;;267 }
;;;268 if((USART_ByteReceive(&locData, SC_Receive_Timeout)) == SUCCESS)
0000f2 4641 MOV r1,r8
0000f4 a807 ADD r0,sp,#0x1c
0000f6 f7fff7ff BL USART_ByteReceive
0000fa 2801 CMP r0,#1
0000fc d105 BNE |L9.266|
;;;269 {
;;;270 if(locData != SC_A2R.T[0])
0000fe 78b8 LDRB r0,[r7,#2] ; SC_A2R
000100 f89df89d LDRB r1,[sp,#0x1c]
000104 4288 CMP r0,r1
000106 d000 BEQ |L9.266|
;;;271 {
;;;272 PTSConfirmStatus = 0x00;
000108 2400 MOVS r4,#0
|L9.266|
;;;273 }
;;;274 }
;;;275 if((USART_ByteReceive(&locData, SC_Receive_Timeout)) == SUCCESS)
00010a 4641 MOV r1,r8
00010c a807 ADD r0,sp,#0x1c
00010e f7fff7ff BL USART_ByteReceive
000112 2801 CMP r0,#1
000114 d13c BNE |L9.400|
;;;276 {
;;;277 if(locData != ((u8)0xFF^(u8)0x10^(u8)SC_A2R.T[0]))
000116 78b8 LDRB r0,[r7,#2] ; SC_A2R
000118 f89df89d LDRB r2,[sp,#0x1c]
00011c f080f080 EOR r1,r0,#0xef
000120 4291 CMP r1,r2
000122 d135 BNE |L9.400|
;;;278 {
;;;279 PTSConfirmStatus = 0x00;
;;;280 }
;;;281 }
;;;282 else
;;;283 {
;;;284 PTSConfirmStatus = 0x00;
;;;285 }
;;;286 /* PTS Confirm */
;;;287 if(PTSConfirmStatus == 0x01)
000124 2c01 CMP r4,#1
000126 d133 BNE |L9.400|
;;;288 {
;;;289 workingbaudrate = apbclock * D_Table[(SC_A2R.T[0] & (u8)0x0F)];
000128 4a1d LDR r2,|L9.416|
00012a f000f000 AND r1,r0,#0xf
00012e 3244 ADDS r2,r2,#0x44
000130 f852f852 LDR r1,[r2,r1,LSL #2]
000134 4369 MULS r1,r5,r1
;;;290 workingbaudrate /= F_Table[((SC_A2R.T[0] >> 4) & (u8)0x0F)];
000136 e000 B |L9.314|
|L9.312|
000138 e02a B |L9.400|
|L9.314|
00013a 0900 LSRS r0,r0,#4
00013c 3a40 SUBS r2,r2,#0x40
00013e f852f852 LDR r0,[r2,r0,LSL #2]
;;;291
;;;292 USART_ClockInitStructure.USART_Clock = USART_Clock_Enable;
;;;293 USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;
;;;294 USART_ClockInitStructure.USART_CPHA = USART_CPHA_1Edge;
000142 f8adf8ad STRH r6,[sp,#8]
000146 fbb1fbb1 UDIV r4,r1,r0 ;290
00014a f44ff44f MOV r0,#0x800 ;292
00014e f8adf8ad STRH r0,[sp,#4] ;292
;;;295 USART_ClockInitStructure.USART_LastBit = USART_LastBit_Enable;
000152 10c0 ASRS r0,r0,#3
000154 f8adf8ad STRH r0,[sp,#0xa]
000158 f8adf8ad STRH r6,[sp,#6] ;293
;;;296 USART_ClockInit(USART3, &USART_ClockInitStructure);
00015c a901 ADD r1,sp,#4
00015e 4648 MOV r0,r9
000160 f7fff7ff BL USART_ClockInit
;;;297
;;;298 USART_InitStructure.USART_BaudRate = workingbaudrate;
;;;299 USART_InitStructure.USART_WordLength = USART_WordLength_9b;
000164 f44ff44f MOV r0,#0x1000
000168 f8adf8ad STRH r0,[sp,#0x10]
;;;300 USART_InitStructure.USART_StopBits = USART_StopBits_1_5;
00016c f44ff44f MOV r0,#0x3000
000170 f8adf8ad STRH r0,[sp,#0x12]
;;;301 USART_InitStructure.USART_Parity = USART_Parity_Even;
000174 f44ff44f MOV r0,#0x400
000178 f8adf8ad STRH r0,[sp,#0x14]
;;;302 USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
00017c 200c MOVS r0,#0xc
00017e f8adf8ad STRH r0,[sp,#0x16]
000182 9403 STR r4,[sp,#0xc] ;299
;;;303 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
000184 f8adf8ad STRH r6,[sp,#0x18]
;;;304 USART_Init(USART3, &USART_InitStructure);
000188 a903 ADD r1,sp,#0xc
00018a 4648 MOV r0,r9
00018c f7fff7ff BL USART_Init
|L9.400|
;;;305 }
;;;306 }
;;;307 }
;;;308 }
000190 b00d ADD sp,sp,#0x34
000192 e8bde8bd POP {r4-r9,pc}
;;;309
ENDP
000196 0000 DCW 0x0000
|L9.408|
000198 40004818 DCD 0x40004818
|L9.412|
00019c 00000000 DCD ||.bss||
|L9.416|
0001a0 00000000 DCD ||.data||
AREA ||i.SC_AnswerReq||, CODE, READONLY, ALIGN=1
SC_AnswerReq PROC
000000 e92de92d PUSH {r3-r9,lr}
000004 4607 MOV r7,r0
000006 2000 MOVS r0,#0
000008 4605 MOV r5,r0
00000a 9000 STR r0,[sp,#0]
00000c 7838 LDRB r0,[r7,#0]
00000e 460c MOV r4,r1
000010 4616 MOV r6,r2
000012 f04ff04f MOV r8,#3
000016 f44ff44f MOV r9,#0x4000
00001a 2801 CMP r0,#1
00001c d018 BEQ |L10.80|
00001e 2802 CMP r0,#2
000020 d022 BEQ |L10.104|
000022 2803 CMP r0,#3
000024 d008 BEQ |L10.56|
000026 2805 CMP r0,#5
000028 f04ff04f MOV r0,#1
00002c d137 BNE |L10.158|
00002e f7fff7ff BL SC_Reset
000032 2000 MOVS r0,#0
000034 f7fff7ff BL SC_PowerCmd
|L10.56|
000038 e8bde8bd POP {r3-r9,pc}
|L10.60|
00003c 4649 MOV r1,r9
00003e 4668 MOV r0,sp
000040 f7fff7ff BL USART_ByteReceive
000044 2801 CMP r0,#1
000046 d102 BNE |L10.78|
000048 f89df89d LDRB r0,[sp,#0]
00004c 5560 STRB r0,[r4,r5]
|L10.78|
00004e 1c6d ADDS r5,r5,#1
|L10.80|
000050 42b5 CMP r5,r6
000052 d3f3 BCC |L10.60|
000054 7820 LDRB r0,[r4,#0]
000056 b128 CBZ r0,|L10.100|
000058 f887f887 STRB r8,[r7,#0]
00005c 2001 MOVS r0,#1
00005e f7fff7ff BL SC_Reset
000062 e7e9 B |L10.56|
|L10.100|
000064 2002 MOVS r0,#2
000066 e018 B |L10.154|
|L10.104|
000068 2001 MOVS r0,#1
00006a f7fff7ff BL SC_Reset
00006e e009 B |L10.132|
|L10.112|
000070 4649 MOV r1,r9
000072 4668 MOV r0,sp
000074 f7fff7ff BL USART_ByteReceive
000078 2801 CMP r0,#1
00007a d103 BNE |L10.132|
00007c f89df89d LDRB r0,[sp,#0]
000080 f804f804 STRB r0,[r4],#1
|L10.132|
000084 0030 MOVS r0,r6
000086 f1a6f1a6 SUB r6,r6,#1
00008a b2f6 UXTB r6,r6
00008c d1f0 BNE |L10.112|
00008e 7820 LDRB r0,[r4,#0]
000090 b110 CBZ r0,|L10.152|
000092 f887f887 STRB r8,[r7,#0]
000096 e7cf B |L10.56|
|L10.152|
000098 2005 MOVS r0,#5
|L10.154|
00009a 7038 STRB r0,[r7,#0]
00009c e7cc B |L10.56|
|L10.158|
00009e e7fc B |L10.154|
ENDP
AREA ||.data||, DATA, ALIGN=2
SCData
000000 00000000 DCB 0x00,0x00,0x00,0x00
F_Table
000004 00000000 DCD 0x00000000
000008 00000174 DCD 0x00000174
00000c 0000022e DCD 0x0000022e
000010 000002e8 DCD 0x000002e8
000014 0000045c DCD 0x0000045c
000018 000005d0 DCD 0x000005d0
00001c 00000744 DCD 0x00000744
000020 00000000 DCD 0x00000000
000024 00000000 DCD 0x00000000
000028 00000200 DCD 0x00000200
00002c 00000300 DCD 0x00000300
000030 00000400 DCD 0x00000400
000034 00000600 DCD 0x00000600
000038 00000800 DCD 0x00000800
00003c 00000000 DCD 0x00000000
000040 00000000 DCD 0x00000000
D_Table
000044 00000000 DCD 0x00000000
000048 00000001 DCD 0x00000001
00004c 00000002 DCD 0x00000002
000050 00000004 DCD 0x00000004
000054 00000008 DCD 0x00000008
000058 00000010 DCD 0x00000010
00005c 00000000 DCD 0x00000000
000060 00000000 DCD 0x00000000
AREA ||.bss||, DATA, NOINIT, ALIGN=0
SC_A2R
% 44
SC_ATR_Table
% 40
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -