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

📄 tc.ls1

📁 mifarea卡程序mifarea卡程序mifarea卡程序
💻 LS1
📖 第 1 页 / 共 5 页
字号:
0000                 220     ?_TcCommand?BYTE:
0000                 221             cmd?141:   DS   3
0003                 222             ORG  3
0003                 223             len?142:   DS   2
0005                 224             ORG  5
0005                 225               i?143:   DS   2
0007                 226             ORG  7
0007                 227              ci?144:   DS   1
                     228     
----                 229             RSEG  ?XD?CardSlot?TC
0000                 230     ?CardSlot?BYTE:
0000                 231             buf?246:   DS   3
                     232     
----                 233             RSEG  ?BI?TC
0000                 234         fCardIn?245:   DBIT   1
0001                 235            fWaitCmd:   DBIT   1
                     236     
----                 237             RSEG  ?XD?TC
0000                 238             cnt?247:   DS   1
0001                 239                 FWI:   DS   1
0002                 240         WaitCmdTime:   DS   2
                     241     
----                 242             RSEG  ?C_INITSEG
0000 41              243             DB      041H
0001 0000     F      244             DW      FWI
0003 05              245             DB      005H
                     246     
0004 C100     F      247             DB      0C1H, fWaitCmd + 000H   ; bit-init
                     248     
0006 C100     F      249             DB      0C1H, fCardIn?245 + 000H        ; bit-init
                     250     
0008 41              251             DB      041H
0009 0000     F      252             DW      cnt?247
000B 00              253             DB      000H
                     254     
                     255     ; /****************************************
A51 MACRO ASSEMBLER  TC                                                                   03/13/2009 15:44:58 PAGE     5

                     256     ;  * tc.c                                 *
                     257     ;  * excute touched card command          *
                     258     ;  * designed by liulixun                 *
                     259     ;  * last update: 05-01-2007              *
                     260     ;  ****************************************/
                     261     ; #include "includes.h"
                     262     ; 
                     263     ; static bit fWaitCmd = 0;            // flag of waiting for host command
                     264     ; static unsigned int WaitCmdTime;    // time before a host command come
                     265     ; 
                     266     ; void TcInit(void)
                     267     
----                 268             RSEG  ?PR?TcInit?TC
0000                 269     TcInit:
                     270             USING   0
                     271                             ; SOURCE LINE # 12
                     272     ; {
                     273                             ; SOURCE LINE # 13
                     274     ;     int ch;
                     275     ; 
                     276     ;     ch = ParaRead(PARA_SWITCHS);
                     277                             ; SOURCE LINE # 16
0000 7FFE            278             MOV     R7,#0FEH
0002 120000   F      279             LCALL   _ParaRead
                     280     ;---- Variable 'ch?040' assigned to Register 'R6/R7' ----
                     281     ; 
                     282     ;     if(ch >= 0)
                     283                             ; SOURCE LINE # 18
0005 C3              284             CLR     C
0006 EE              285             MOV     A,R6
0007 6480            286             XRL     A,#080H
0009 9480            287             SUBB    A,#080H
000B 400B            288             JC      ?C0001
                     289     ;     {
                     290                             ; SOURCE LINE # 19
                     291     ;         fNotice = ch & F_NOTICE;
                     292                             ; SOURCE LINE # 20
000D EF              293             MOV     A,R7
000E A2E3            294             MOV     C,ACC.3
0010 9200     F      295             MOV     fNotice,C
                     296     ;         fStopOnACK = ch & F_SNOA;
                     297                             ; SOURCE LINE # 21
0012 A2E4            298             MOV     C,ACC.4
0014 9200     F      299             MOV     fStopOnACK,C
                     300     ;     }
                     301                             ; SOURCE LINE # 22
0016 8004            302             SJMP    ?C0002
0018                 303     ?C0001:
                     304     ;     else
                     305     ;     {
                     306                             ; SOURCE LINE # 24
                     307     ;         fNotice = 1;
                     308                             ; SOURCE LINE # 25
0018 D200     F      309             SETB    fNotice
                     310     ;         fStopOnACK = 1;
                     311                             ; SOURCE LINE # 26
001A D200     F      312             SETB    fStopOnACK
                     313     ;     }
                     314                             ; SOURCE LINE # 27
001C                 315     ?C0002:
                     316     ; 
                     317     ;     // IC card
                     318     ;     IccInit();
                     319                             ; SOURCE LINE # 30
001C 120000   F      320             LCALL   IccInit
                     321     ;     IccSetTimeout(1200);
A51 MACRO ASSEMBLER  TC                                                                   03/13/2009 15:44:58 PAGE     6

                     322                             ; SOURCE LINE # 31
001F 7FB0            323             MOV     R7,#0B0H
0021 7E04            324             MOV     R6,#04H
0023 020000   F      325             LJMP    _IccSetTimeout
                     326     ; END OF TcInit
                     327     
                     328     ; }
                     329     ; 
                     330     ; // ticc command
                     331     ; unsigned int TcCommand(unsigned char *cmd, unsigned int len)
                     332     
----                 333             RSEG  ?PR?_TcCommand?TC
0000                 334     _TcCommand:
                     335             USING   0
                     336                             ; SOURCE LINE # 35
0000 900000   F      337             MOV     DPTR,#len?142
0003 EC              338             MOV     A,R4
0004 F0              339             MOVX    @DPTR,A
0005 A3              340             INC     DPTR
0006 ED              341             MOV     A,R5
0007 F0              342             MOVX    @DPTR,A
0008 900000   F      343             MOV     DPTR,#cmd?141
000B EB              344             MOV     A,R3
000C F0              345             MOVX    @DPTR,A
000D A3              346             INC     DPTR
000E EA              347             MOV     A,R2
000F F0              348             MOVX    @DPTR,A
0010 A3              349             INC     DPTR
0011 E9              350             MOV     A,R1
0012 F0              351             MOVX    @DPTR,A
                     352     ; {
                     353                             ; SOURCE LINE # 36
                     354     ;     int i;
                     355     ;     unsigned char ci;
                     356     ; 
                     357     ;     // todo: for every command, sync card should be thinking
                     358     ; 
                     359     ;     IccSelect(cmd[0]);
                     360                             ; SOURCE LINE # 42
0013 120000   F      361             LCALL   ?C?CLDPTR
0016 FF              362             MOV     R7,A
0017 120000   F      363             LCALL   _IccSelect
                     364     ; 
                     365     ;     if(cmd[0] == IC_USER)
                     366                             ; SOURCE LINE # 44
001A 900000   F      367             MOV     DPTR,#cmd?141
001D E0              368             MOVX    A,@DPTR
001E FB              369             MOV     R3,A
001F A3              370             INC     DPTR
0020 E0              371             MOVX    A,@DPTR
0021 FA              372             MOV     R2,A
0022 A3              373             INC     DPTR
0023 E0              374             MOVX    A,@DPTR
0024 F9              375             MOV     R1,A
0025 120000   F      376             LCALL   ?C?CLDPTR
0028 B40302          377             CJNE    A,#03H,?C0004
                     378     ;         fWaitCmd = 0;
                     379                             ; SOURCE LINE # 45
002B C200     F      380             CLR     fWaitCmd
002D                 381     ?C0004:
                     382     ; 
                     383     ;     if(cmd[1] == CMD_RESET)
                     384                             ; SOURCE LINE # 47
002D 900001          385             MOV     DPTR,#01H
0030 120000   F      386             LCALL   ?C?CLDOPTR
0033 703C            387             JNZ     ?C0005
A51 MACRO ASSEMBLER  TC                                                                   03/13/2009 15:44:58 PAGE     7

                     388     ;     {
                     389                             ; SOURCE LINE # 48
                     390     ;         if(len != 2)
                     391                             ; SOURCE LINE # 49
0035 900000   F      392             MOV     DPTR,#len?142
0038 E0              393             MOVX    A,@DPTR
0039 7004            394             JNZ     ?C0100
003B A3              395             INC     DPTR
003C E0              396             MOVX    A,@DPTR
003D 6402            397             XRL     A,#02H
003F                 398     ?C0100:
003F 6003            399             JZ      ?C0006
                     400     ;         {
                     401                             ; SOURCE LINE # 50
                     402     ;             cmd[0] = ERRORCMDLEN;
                     403                             ; SOURCE LINE # 51
                     404     ;             return 1;
                     405                             ; SOURCE LINE # 52
0041 020000   F      406             LJMP    ?C0163
                     407     ;         }
                     408                             ; SOURCE LINE # 53
0044                 409     ?C0006:
                     410     ;         else
                     411     ;         {
                     412                             ; SOURCE LINE # 55
                     413     ;             // send reset infomation to host
                     414     ;             i = IccOpen(cmd+1);
                     415                             ; SOURCE LINE # 57
0044 E9              416             MOV     A,R1
0045 2401            417             ADD     A,#01H
0047 F9              418             MOV     R1,A
0048 E4              419             CLR     A
0049 3A              420             ADDC    A,R2
004A FA              421             MOV     R2,A
004B 120000   F      422             LCALL   _IccOpen
004E 900000   F      423             MOV     DPTR,#i?143
0051 EE              424             MOV     A,R6
0052 F0              425             MOVX    @DPTR,A
0053 A3              426             INC     DPTR
0054 EF              427             MOV     A,R7
0055 F0              428             MOVX    @DPTR,A
                     429     ;             if(i > 0)
                     430                             ; SOURCE LINE # 58
0056 D3              431             SETB    C
0057 9400            432             SUBB    A,#00H
0059 EE              433             MOV     A,R6
005A 6480            434             XRL     A,#080H
005C 9480            435             SUBB    A,#080H
005E 900000   F      436             MOV     DPTR,#cmd?141
0061 E0              437             MOVX    A,@DPTR
0062 FB              438             MOV     R3,A
0063 A3              439             INC     DPTR
0064 E0              440             MOVX    A,@DPTR
0065 FA              441             MOV     R2,A
0066 A3              442             INC     DPTR
0067 E0              443             MOVX    A,@DPTR
0068 F9              444             MOV     R1,A
0069 4003            445             JC      ?C0009
                     446     ;             {
                     447                             ; SOURCE LINE # 59
                     448     ;                 cmd[0] = SUCCESS;

⌨️ 快捷键说明

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