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

📄 smartcard.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
00019e  7528              STRB     r0,[r5,#0x14]
;;;449            i = 11;
0001a0  e002              B        |L8.424|
                  |L8.418|
;;;450          }
;;;451          else
;;;452          {
;;;453            i++;
0001a2  1c64              ADDS     r4,r4,#1
0001a4  2c0a              CMP      r4,#0xa               ;444
0001a6  d3f2              BCC      |L8.398|
                  |L8.424|
;;;454          }
;;;455        }
;;;456        /* Wait SW2 ------------------------------------------------------------*/   
;;;457        i = 0;
0001a8  2400              MOVS     r4,#0
                  |L8.426|
;;;458        while(i < 10)
;;;459        {
;;;460          if(USART_ByteReceive(&locData, SC_Receive_Timeout) == SUCCESS)
0001aa  4631              MOV      r1,r6
0001ac  4668              MOV      r0,sp
0001ae  f7fffffe          BL       USART_ByteReceive
0001b2  2801              CMP      r0,#1
0001b4  d104              BNE      |L8.448|
;;;461          {
;;;462            SC_ResponceStatus->SW2 = locData;
0001b6  f89d0000          LDRB     r0,[sp,#0]
0001ba  7568              STRB     r0,[r5,#0x15]
                  |L8.444|
;;;463            i = 11;
;;;464          }
;;;465          else
;;;466          {
;;;467            i++;
;;;468          }
;;;469        }
;;;470      }
;;;471    }
0001bc  e8bd8ff8          POP      {r3-r11,pc}
                  |L8.448|
0001c0  1c64              ADDS     r4,r4,#1              ;467
0001c2  2c0a              CMP      r4,#0xa               ;458
0001c4  d3f1              BCC      |L8.426|
0001c6  e7f9              B        |L8.444|
;;;472    
                          ENDP

                  |L8.456|
                          DCD      0x40004800
                  |L8.460|
                          DCD      ||.data||

                          AREA ||i.SC_decode_Answer2reset||, CODE, READONLY, ALIGN=2

                  SC_decode_Answer2reset PROC
;;;551    *******************************************************************************/
;;;552    static u8 SC_decode_Answer2reset(u8 *card)
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;553    {
;;;554      u32 i = 0, flag = 0, buf = 0, protocol = 0;
;;;555    
;;;556      SC_A2R.TS = card[0];  /* Initial character */
000004  4f3b              LDR      r7,|L9.244|
000006  7802              LDRB     r2,[r0,#0]
000008  703a              STRB     r2,[r7,#0]
;;;557      SC_A2R.T0 = card[1];  /* Format character */
00000a  7842              LDRB     r2,[r0,#1]
00000c  2100              MOVS     r1,#0                 ;554
00000e  707a              STRB     r2,[r7,#1]
;;;558    
;;;559      SC_A2R.Hlength = SC_A2R.T0 & (u8)0x0F;
000010  f002040f          AND      r4,r2,#0xf
000014  f887402b          STRB     r4,[r7,#0x2b]
000018  460b              MOV      r3,r1                 ;554
;;;560    
;;;561      if ((SC_A2R.T0 & (u8)0x80) == 0x80)
00001a  0614              LSLS     r4,r2,#24
00001c  d500              BPL      |L9.32|
;;;562      {
;;;563        flag = 1;
00001e  2301              MOVS     r3,#1
                  |L9.32|
;;;564      }
;;;565    
;;;566      for (i = 0; i < 4; i++)
;;;567      {
;;;568        SC_A2R.Tlength = SC_A2R.Tlength + (((SC_A2R.T0 & (u8)0xF0) >> (4 + i)) & (u8)0x1);
000020  f00205f0          AND      r5,r2,#0xf0
                  |L9.36|
000024  1d0a              ADDS     r2,r1,#4
000026  fa25f202          LSR      r2,r5,r2
00002a  f897402a          LDRB     r4,[r7,#0x2a]  ; SC_A2R
00002e  f0020201          AND      r2,r2,#1
000032  4422              ADD      r2,r2,r4
000034  1c49              ADDS     r1,r1,#1              ;566
000036  f887202a          STRB     r2,[r7,#0x2a]
00003a  2904              CMP      r1,#4                 ;566
00003c  d3f2              BCC      |L9.36|
;;;569      }
;;;570    
;;;571      for (i = 0; i < SC_A2R.Tlength; i++)
00003e  2100              MOVS     r1,#0
000040  e004              B        |L9.76|
                  |L9.66|
;;;572      {
;;;573        SC_A2R.T[i] = card[i + 2];
000042  1842              ADDS     r2,r0,r1
000044  187c              ADDS     r4,r7,r1
000046  7892              LDRB     r2,[r2,#2]
000048  70a2              STRB     r2,[r4,#2]
00004a  1c49              ADDS     r1,r1,#1              ;571
                  |L9.76|
00004c  f897202a          LDRB     r2,[r7,#0x2a]         ;571  ; SC_A2R
000050  428a              CMP      r2,r1                 ;571
000052  d8f6              BHI      |L9.66|
;;;574      }
;;;575    
;;;576      protocol = SC_A2R.T[SC_A2R.Tlength - 1] & (u8)0x0F;
000054  f8dfe09c          LDR      lr,|L9.244|
000058  f897102a          LDRB     r1,[r7,#0x2a]  ; SC_A2R
00005c  f10e0e01          ADD      lr,lr,#1
000060  f811100e          LDRB     r1,[r1,lr]
000064  f001080f          AND      r8,r1,#0xf
;;;577    
;;;578      while (flag)
000068  e030              B        |L9.204|
;;;579      {
;;;580        if ((SC_A2R.T[SC_A2R.Tlength - 1] & (u8)0x80) == 0x80)
00006a  bf00              NOP      
                  |L9.108|
00006c  f897202a          LDRB     r2,[r7,#0x2a]  ; SC_A2R
000070  f812100e          LDRB     r1,[r2,lr]
000074  0609              LSLS     r1,r1,#24
000076  d501              BPL      |L9.124|
;;;581        {
;;;582          flag = 1;
000078  2301              MOVS     r3,#1
00007a  e000              B        |L9.126|
                  |L9.124|
;;;583        }
;;;584        else
;;;585        {
;;;586          flag = 0;
00007c  2300              MOVS     r3,#0
                  |L9.126|
;;;587        }
;;;588    
;;;589        buf = SC_A2R.Tlength;
;;;590        SC_A2R.Tlength = 0;
00007e  2100              MOVS     r1,#0
000080  f887102a          STRB     r1,[r7,#0x2a]
;;;591    
;;;592        for (i = 0; i < 4; i++)
;;;593        {
;;;594          SC_A2R.Tlength = SC_A2R.Tlength + (((SC_A2R.T[buf - 1] & (u8)0xF0) >> (4 + i)) & (u8)0x1);
000084  eb070c02          ADD      r12,r7,r2
                  |L9.136|
000088  f89c6001          LDRB     r6,[r12,#1]
00008c  1d0c              ADDS     r4,r1,#4
00008e  f00606f0          AND      r6,r6,#0xf0
000092  40e6              LSRS     r6,r6,r4
000094  f897502a          LDRB     r5,[r7,#0x2a]  ; SC_A2R
000098  f0060401          AND      r4,r6,#1
00009c  442c              ADD      r4,r4,r5
00009e  1c49              ADDS     r1,r1,#1              ;592
0000a0  f887402a          STRB     r4,[r7,#0x2a]
0000a4  2904              CMP      r1,#4                 ;592
0000a6  d3ef              BCC      |L9.136|
;;;595        }
;;;596    	
;;;597        for (i = 0;i < SC_A2R.Tlength; i++)
0000a8  2100              MOVS     r1,#0
0000aa  e006              B        |L9.186|
                  |L9.172|
;;;598        {
;;;599          SC_A2R.T[buf + i] = card[i + 2 + buf];
0000ac  188c              ADDS     r4,r1,r2
0000ae  1855              ADDS     r5,r2,r1
0000b0  4404              ADD      r4,r4,r0
0000b2  78a4              LDRB     r4,[r4,#2]
0000b4  443d              ADD      r5,r5,r7
0000b6  70ac              STRB     r4,[r5,#2]
0000b8  1c49              ADDS     r1,r1,#1              ;597
                  |L9.186|
0000ba  f897402a          LDRB     r4,[r7,#0x2a]         ;597  ; SC_A2R
0000be  428c              CMP      r4,r1                 ;597
0000c0  d8f4              BHI      |L9.172|
;;;600        }
;;;601        SC_A2R.Tlength += (u8)buf;
0000c2  f897102a          LDRB     r1,[r7,#0x2a]  ; SC_A2R
0000c6  4411              ADD      r1,r1,r2
0000c8  f887102a          STRB     r1,[r7,#0x2a]
                  |L9.204|
0000cc  2b00              CMP      r3,#0                 ;578
0000ce  d1cd              BNE      |L9.108|
;;;602      }
;;;603    
;;;604      for (i = 0; i < SC_A2R.Hlength; i++)
0000d0  2100              MOVS     r1,#0
0000d2  e007              B        |L9.228|
                  |L9.212|
;;;605      {
;;;606        SC_A2R.H[i] = card[i + 2 + SC_A2R.Tlength];
0000d4  f897302a          LDRB     r3,[r7,#0x2a]  ; SC_A2R
0000d8  1c8a              ADDS     r2,r1,#2
0000da  4403              ADD      r3,r3,r0
0000dc  5c9a              LDRB     r2,[r3,r2]
0000de  187b              ADDS     r3,r7,r1
0000e0  759a              STRB     r2,[r3,#0x16]
0000e2  1c49              ADDS     r1,r1,#1              ;604
                  |L9.228|
0000e4  f897202b          LDRB     r2,[r7,#0x2b]         ;604  ; SC_A2R
0000e8  428a              CMP      r2,r1                 ;604
0000ea  d8f3              BHI      |L9.212|
;;;607      }
;;;608    
;;;609      return (u8)protocol;
0000ec  f00800ff          AND      r0,r8,#0xff
;;;610    }
0000f0  e8bd81f0          POP      {r4-r8,pc}
;;;611    
                          ENDP

                  |L9.244|
                          DCD      ||.bss||

                          AREA ||i.USART_ByteReceive||, CODE, READONLY, ALIGN=2

                  USART_ByteReceive PROC
;;;791    *******************************************************************************/
;;;792    static ErrorStatus USART_ByteReceive(u8 *Data, u32 TimeOut)
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;793    {
000004  4606              MOV      r6,r0
000006  460d              MOV      r5,r1
;;;794      u32 Counter = 0;
000008  2400              MOVS     r4,#0
;;;795    
;;;796      while((USART_GetFlagStatus(USART3, USART_FLAG_RXNE) == RESET) && (Counter != TimeOut))
00000a  4f0a              LDR      r7,|L10.52|
00000c  e000              B        |L10.16|
                  |L10.14|
;;;797      {
;;;798        Counter++;
00000e  1c64              ADDS     r4,r4,#1
                  |L10.16|
000010  2120              MOVS     r1,#0x20              ;796
000012  4638              MOV      r0,r7                 ;796
000014  f7fffffe          BL       USART_GetFlagStatus
000018  b908              CBNZ     r0,|L10.30|
00001a  42ac              CMP      r4,r5                 ;796
00001c  d1f7              BNE      |L10.14|
                  |L10.30|
;;;799      }
;;;800    
;;;801      if(Counter != TimeOut)
00001e  42ac              CMP      r4,r5
000020  d006              BEQ      |L10.48|
;;;802      {
;;;803        *Data = (u8)USART_ReceiveData(USART3);
000022  4638              MOV      r0,r7
000024  f7fffffe          BL       USART_ReceiveData
000028  7030              STRB     r0,[r6,#0]
;;;804        return SUCCESS;    
00002a  2001              MOVS     r0,#1
                  |L10.44|
;;;805      }
;;;806      else 
;;;807      {
;;;808        return ERROR;
;;;809      }
;;;810    }
00002c  e8bd81f0          POP      {r4-r8,pc}
                  |L10.48|
000030  2000              MOVS     r0,#0                 ;808
000032  e7fb              B        |L10.44|
;;;811    
                          ENDP

                  |L10.52|
                          DCD      0x40004800

                          AREA ||.bss||, DATA, NOINIT, ALIGN=0

                  SC_A2R
                          %        44
                  SC_ATR_Table
                          %        40

                          AREA ||.data||, DATA, ALIGN=2

                  SCData
000000  00000000          DCB      0x00,0x00,0x00,0x00
                  F_Table
                          DCD      0x00000000
                          DCD      0x00000174
                          DCD      0x0000022e
                          DCD      0x000002e8
                          DCD      0x0000045c
                          DCD      0x000005d0
                          DCD      0x00000744
                          DCD      0x00000000
                          DCD      0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -