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

📄 smartcard.txt

📁 基于cortex arm stm32f103RB的智能卡(SmartCard)程序。编译通过
💻 TXT
📖 第 1 页 / 共 4 页
字号:
;;;216      USART_DMACmd(USART3, USART_DMAReq_Rx, ENABLE);
000018  4e57              LDR      r6,|L9.376|
00001a  0609              LSLS     r1,r1,#24
00001c  0dc9              LSRS     r1,r1,#23
00001e  fbb0fbb0          UDIV     r5,r0,r1
000022  3e18              SUBS     r6,r6,#0x18
000024  2201              MOVS     r2,#1
000026  2140              MOVS     r1,#0x40
000028  4630              MOV      r0,r6
00002a  f7fff7ff          BL       USART_DMACmd
;;;217      
;;;218      if((SC_A2R.T0 & (u8)0x10) == 0x10)
00002e  4f53              LDR      r7,|L9.380|
000030  7878              LDRB     r0,[r7,#1]  ; SC_A2R
000032  06c0              LSLS     r0,r0,#27
000034  d57e              BPL      |L9.308|
;;;219      {
;;;220        if(SC_A2R.T[0] != 0x11)
000036  78b8              LDRB     r0,[r7,#2]  ; SC_A2R
000038  2811              CMP      r0,#0x11
00003a  d07b              BEQ      |L9.308|
;;;221        {
;;;222          /* Send PTSS */
;;;223          SCData = 0xFF;
00003c  f8dff8df          LDR      r8,|L9.384|
000040  20ff              MOVS     r0,#0xff
000042  f888f888          STRB     r0,[r8,#0]  ; SCData
;;;224          USART_SendData(USART3, SCData);
000046  f898f898          LDRB     r1,[r8,#0]  ; SCData
00004a  4630              MOV      r0,r6
00004c  f7fff7ff          BL       USART_SendData
                  |L9.80|
;;;225          while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET)
000050  2140              MOVS     r1,#0x40
000052  4630              MOV      r0,r6
000054  f7fff7ff          BL       USART_GetFlagStatus
000058  2800              CMP      r0,#0
00005a  d0f9              BEQ      |L9.80|
;;;226          {
;;;227          }
;;;228    
;;;229          /* Send PTS0 */
;;;230          SCData = 0x10;
00005c  2010              MOVS     r0,#0x10
00005e  f888f888          STRB     r0,[r8,#0]  ; SCData
;;;231          USART_SendData(USART3, SCData);
000062  f898f898          LDRB     r1,[r8,#0]  ; SCData
000066  4630              MOV      r0,r6
000068  f7fff7ff          BL       USART_SendData
                  |L9.108|
;;;232          while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET)
00006c  2140              MOVS     r1,#0x40
00006e  4630              MOV      r0,r6
000070  f7fff7ff          BL       USART_GetFlagStatus
000074  2800              CMP      r0,#0
000076  d0f9              BEQ      |L9.108|
;;;233          {
;;;234          }
;;;235    
;;;236          /* Send PTS1 */
;;;237          SCData = SC_A2R.T[0]; 
000078  78b8              LDRB     r0,[r7,#2]  ; SC_A2R
00007a  f888f888          STRB     r0,[r8,#0]  ; SCData
;;;238          USART_SendData(USART3, SCData);
00007e  f898f898          LDRB     r1,[r8,#0]  ; SCData
000082  4630              MOV      r0,r6
000084  f7fff7ff          BL       USART_SendData
                  |L9.136|
;;;239          while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET)
000088  2140              MOVS     r1,#0x40
00008a  4630              MOV      r0,r6
00008c  f7fff7ff          BL       USART_GetFlagStatus
000090  2800              CMP      r0,#0
000092  d0f9              BEQ      |L9.136|
;;;240          {
;;;241          }
;;;242    
;;;243          /* Send PCK */
;;;244          SCData = (u8)0xFF^(u8)0x10^(u8)SC_A2R.T[0]; 
000094  78b8              LDRB     r0,[r7,#2]  ; SC_A2R
000096  f080f080          EOR      r0,r0,#0xef
00009a  f888f888          STRB     r0,[r8,#0]  ; SCData
;;;245          USART_SendData(USART3, SCData);
00009e  f898f898          LDRB     r1,[r8,#0]  ; SCData
0000a2  4630              MOV      r0,r6
0000a4  f7fff7ff          BL       USART_SendData
                  |L9.168|
;;;246          while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET)
0000a8  2140              MOVS     r1,#0x40
0000aa  4630              MOV      r0,r6
0000ac  f7fff7ff          BL       USART_GetFlagStatus
0000b0  2800              CMP      r0,#0
0000b2  d0f9              BEQ      |L9.168|
;;;247          {
;;;248          }
;;;249    
;;;250          /* Disable the DMA Receive (Reset DMAR bit only) */  
;;;251          USART_DMACmd(USART3, USART_DMAReq_Rx, DISABLE);
0000b4  2200              MOVS     r2,#0
0000b6  2140              MOVS     r1,#0x40
0000b8  4630              MOV      r0,r6
0000ba  f7fff7ff          BL       USART_DMACmd
;;;252       
;;;253          if((USART_ByteReceive(&locData, SC_Receive_Timeout)) == SUCCESS)
0000be  f44ff44f          MOV      r8,#0x4000
0000c2  4641              MOV      r1,r8
0000c4  a806              ADD      r0,sp,#0x18
0000c6  f7fff7ff          BL       USART_ByteReceive
0000ca  2801              CMP      r0,#1
0000cc  d104              BNE      |L9.216|
;;;254          {
;;;255            if(locData != 0xFF)
0000ce  f89df89d          LDRB     r0,[sp,#0x18]
0000d2  28ff              CMP      r0,#0xff
0000d4  d000              BEQ      |L9.216|
;;;256            {
;;;257               PTSConfirmStatus = 0x00;
0000d6  2400              MOVS     r4,#0
                  |L9.216|
;;;258            }
;;;259          }
;;;260          if((USART_ByteReceive(&locData, SC_Receive_Timeout)) == SUCCESS)
0000d8  4641              MOV      r1,r8
0000da  a806              ADD      r0,sp,#0x18
0000dc  f7fff7ff          BL       USART_ByteReceive
0000e0  2801              CMP      r0,#1
0000e2  d104              BNE      |L9.238|
;;;261          {
;;;262            if(locData != 0x10)
0000e4  f89df89d          LDRB     r0,[sp,#0x18]
0000e8  2810              CMP      r0,#0x10
0000ea  d000              BEQ      |L9.238|
;;;263            {
;;;264               PTSConfirmStatus = 0x00;
0000ec  2400              MOVS     r4,#0
                  |L9.238|
;;;265            }
;;;266          }
;;;267          if((USART_ByteReceive(&locData, SC_Receive_Timeout)) == SUCCESS)
0000ee  4641              MOV      r1,r8
0000f0  a806              ADD      r0,sp,#0x18
0000f2  f7fff7ff          BL       USART_ByteReceive
0000f6  2801              CMP      r0,#1
0000f8  d105              BNE      |L9.262|
;;;268          {
;;;269            if(locData != SC_A2R.T[0])
0000fa  78b8              LDRB     r0,[r7,#2]  ; SC_A2R
0000fc  f89df89d          LDRB     r1,[sp,#0x18]
000100  4288              CMP      r0,r1
000102  d000              BEQ      |L9.262|
;;;270            {
;;;271               PTSConfirmStatus = 0x00;
000104  2400              MOVS     r4,#0
                  |L9.262|
;;;272            }
;;;273          }
;;;274          if((USART_ByteReceive(&locData, SC_Receive_Timeout)) == SUCCESS)
000106  4641              MOV      r1,r8
000108  a806              ADD      r0,sp,#0x18
00010a  f7fff7ff          BL       USART_ByteReceive
00010e  2801              CMP      r0,#1
000110  d12e              BNE      |L9.368|
;;;275          {
;;;276            if(locData != ((u8)0xFF^(u8)0x10^(u8)SC_A2R.T[0]))
000112  78b8              LDRB     r0,[r7,#2]  ; SC_A2R
000114  f89df89d          LDRB     r2,[sp,#0x18]
000118  f080f080          EOR      r1,r0,#0xef
00011c  4291              CMP      r1,r2
00011e  d127              BNE      |L9.368|
;;;277            {
;;;278               PTSConfirmStatus = 0x00;
;;;279            }
;;;280          }
;;;281          else
;;;282          {
;;;283            PTSConfirmStatus = 0x00;
;;;284          }
;;;285          /* PTS Confirm */
;;;286          if(PTSConfirmStatus == 0x01)
000120  2c01              CMP      r4,#1
000122  d125              BNE      |L9.368|
;;;287          {
;;;288            workingbaudrate = apbclock * D_Table[(SC_A2R.T[0] & (u8)0x0F)];
000124  4a16              LDR      r2,|L9.384|
000126  f000f000          AND      r1,r0,#0xf
00012a  3244              ADDS     r2,r2,#0x44
00012c  f852f852          LDR      r1,[r2,r1,LSL #2]
000130  4369              MULS     r1,r5,r1
;;;289            workingbaudrate /= F_Table[((SC_A2R.T[0] >> 4) & (u8)0x0F)];
000132  e000              B        |L9.310|
                  |L9.308|
000134  e01c              B        |L9.368|
                  |L9.310|
000136  0900              LSRS     r0,r0,#4
000138  3a40              SUBS     r2,r2,#0x40
00013a  f852f852          LDR      r0,[r2,r0,LSL #2]
00013e  fbb1fbb1          UDIV     r4,r1,r0
;;;290            USART_StructInit(&USART_InitStructure);
000142  4668              MOV      r0,sp
000144  f7fff7ff          BL       USART_StructInit
;;;291            USART_InitStructure.USART_BaudRate = workingbaudrate;
;;;292            USART_InitStructure.USART_WordLength = USART_WordLength_9b;
000148  f44ff44f          MOV      r0,#0x1000
00014c  f8adf8ad          STRH     r0,[sp,#4]
;;;293            USART_InitStructure.USART_StopBits = USART_StopBits_1_5;
000150  f44ff44f          MOV      r0,#0x3000
000154  f8adf8ad          STRH     r0,[sp,#6]
;;;294            USART_InitStructure.USART_Parity = USART_Parity_Even;
000158  f44ff44f          MOV      r0,#0x400
00015c  f8adf8ad          STRH     r0,[sp,#8]
;;;295            USART_InitStructure.USART_Clock = USART_Clock_Enable;
000160  0040              LSLS     r0,r0,#1
000162  f8adf8ad          STRH     r0,[sp,#0xe]
000166  9400              STR      r4,[sp,#0]
;;;296            USART_Init(USART3, &USART_InitStructure);
000168  4669              MOV      r1,sp
00016a  4630              MOV      r0,r6
00016c  f7fff7ff          BL       USART_Init
                  |L9.368|
;;;297          }
;;;298        }
;;;299      }  
;;;300    }
000170  b00c              ADD      sp,sp,#0x30
000172  e8bde8bd          POP      {r4-r8,pc}
                          ENDP

000176  0000              DCW      0x0000
                  |L9.376|
000178  40004818          DCD      0x40004818
                  |L9.380|
00017c  00000000          DCD      ||.bss||
                  |L9.384|
000180  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 + -