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

📄 mfrc500uc.lis

📁 该程序是医院用的CPCR记录仪的终端控制程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module mfrc500uc.c
                        .area data(ram, con, rel)
 0000           _MpIsrInfo::
 0000                   .blkb 2
                        .area idata
 0000 0000              .word 0
                        .area data(ram, con, rel)
 0002                   .dbfile F:\yyjapp\yymk\software\mfrc500uc.c
 0002                   .dbstruct 0 10 .1
 0002                   .dbfield 0 cmd c
 0002                   .dbfield 1 status I
 0002                   .dbfield 3 nBytesSent c
 0002                   .dbfield 4 nBytesToSend c
 0002                   .dbfield 5 nBytesReceived c
 0002                   .dbfield 6 nBitsReceived s
 0002                   .dbfield 8 irqSource c
 0002                   .dbfield 9 collPos c
 0002                   .dbend
 0002                   .dbsym e MpIsrInfo _MpIsrInfo pS[.1]
 0002           _MpIsrOut::
 0002                   .blkb 2
                        .area idata
 0002 0000              .word 0
                        .area data(ram, con, rel)
 0004                   .dbfile F:\yyjapp\yymk\software\mfrc500uc.c
 0004                   .dbsym e MpIsrOut _MpIsrOut pc
 0004           _MpIsrIn::
 0004                   .blkb 2
                        .area idata
 0004 0000              .word 0
                        .area data(ram, con, rel)
 0006                   .dbfile F:\yyjapp\yymk\software\mfrc500uc.c
 0006                   .dbsym e MpIsrIn _MpIsrIn pc
 0006           _MFIFOLength::
 0006                   .blkb 1
                        .area idata
 0006 40                .byte 64
                        .area data(ram, con, rel)
 0007                   .dbfile F:\yyjapp\yymk\software\mfrc500uc.c
 0007                   .dbsym e MFIFOLength _MFIFOLength c
 0007           _mc500_time::
 0007                   .blkb 1
                        .area idata
 0007 00                .byte 0
                        .area data(ram, con, rel)
 0008                   .dbfile F:\yyjapp\yymk\software\mfrc500uc.c
 0008                   .dbsym e mc500_time _mc500_time c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\yyjapp\yymk\software\mfrc500uc.c
 0000                   .dbfunc e Mf500PcdConfig _Mf500PcdConfig fc
 0000           ;     CmdWaitCnt -> R20,R21
 0000           ;     RstLoopCnt -> R20,R21
 0000           ;         status -> R22,R23
 0000           ;              i -> R20
                        .even
 0000           _Mf500PcdConfig::
 0000 0E940000          xcall push_gset2
 0004                   .dbline -1
 0004                   .dbline 30
 0004           ; #include <string.h>
 0004           ; #include <stdio.h>
 0004           ; #include <f:\yyjapp\yymk\software\MfRc500.h>
 0004           ; #include <f:\yyjapp\yymk\software\main.h>
 0004           ; #include <iom128v.h>
 0004           ; unsigned char MLastSelectedSnr[5];
 0004           ; #define TCLFSDSNDMAX   8   ///< max. frame size send
 0004           ; #define TCLFSDRECMAX   8   ///< max. frame size rcv
 0004           ; #define TCLDSMAX       3   ///< max. baudrate divider PICC --> PCD
 0004           ; #define TCLDRMAX       3   ///< max. baudrate divider PCD --> PICC
 0004           ; #define TCLDSDFLT      0   ///< default baudrate divider PICC --> PCD
 0004           ; #define TCLDRDFLT      0   ///< default baudrate divider PCD --> PICC
 0004           ; unsigned char *MSndBuffer;
 0004           ; unsigned char *MRcvBuffer;
 0004           ; MfCmdInfo MInfo;
 0004           ; 
 0004           ; MfCmdInfo     *MpIsrInfo = 0; 
 0004           ; unsigned char *MpIsrOut = 0; 
 0004           ; unsigned char *MpIsrIn = 0;   
 0004           ; unsigned char CountDown;
 0004           ; unsigned char T2IR;
 0004           ; 
 0004           ; unsigned char RicRxTxBuffer[256];
 0004           ; unsigned char MFIFOLength = DEF_FIFO_LENGTH;
 0004           ; char Mf500PiccAuthState(unsigned char auth_mode,// PICC_AUTHENT1A, PICC_AUTHENT1B
 0004           ;                        unsigned char *snr,    // 4 byte serial number
 0004           ;                        unsigned char sector); // 0 <= sector <= 15
 0004           ; unsigned char mc500_time=0;
 0004           ; char Mf500PcdConfig(void)
 0004           ; {
 0004                   .dbline 32
 0004           ;    unsigned char i;
 0004           ;    int status = MI_RESETERR;
 0004 67EE              ldi R22,-25
 0006 7FEF              ldi R23,-1
 0008                   .dbline 33
 0008           ;    unsigned short RstLoopCnt = 0;
 0008 4427              clr R20
 000A 5527              clr R21
 000C                   .dbline 34
 000C           ;    unsigned short CmdWaitCnt = 0;
 000C                   .dbline 35
 000C           ;    MSndBuffer = RicRxTxBuffer;  // initialise send buffer 
 000C 80E0              ldi R24,<_RicRxTxBuffer
 000E 90E0              ldi R25,>_RicRxTxBuffer
 0010 90930F01          sts _MSndBuffer+1,R25
 0014 80930E01          sts _MSndBuffer,R24
 0018                   .dbline 36
 0018           ;    MRcvBuffer = RicRxTxBuffer;  // initialise receive buffer
 0018 90930D01          sts _MRcvBuffer+1,R25
 001C 80930C01          sts _MRcvBuffer,R24
 0020                   .dbline 37
 0020           ;    status = PcdReset();
 0020 A4D5              xcall _PcdReset
 0022 602F              mov R22,R16
 0024 7727              clr R23
 0026                   .dbline 38
 0026           ;    if (status == MI_OK)
 0026 6030              cpi R22,0
 0028 6707              cpc R22,R23
 002A 39F5              brne L3
 002C           X0:
 002C                   .dbline 39
 002C           ;    {
 002C                   .dbline 40
 002C           ;      WriteRC(RegClockQControl,0x0);
 002C 2227              clr R18
 002E 0FE1              ldi R16,31
 0030 0E94EB09          xcall _WriteRC
 0034                   .dbline 41
 0034 4427              clr R20
 0036 01C0              xjmp L8
 0038           L5:
 0038                   .dbline 41
 0038           L6:
 0038                   .dbline 41
 0038 4395              inc R20
 003A           L8:
 003A                   .dbline 41
 003A           ;        for(i=0;i<105;i++);
 003A 4936              cpi R20,105
 003C E8F3              brlo L5
 003E                   .dbline 42
 003E           ;      ClearBitMask(RegClockQControl,0x40); // clear bit ClkQCalib for 
 003E 20E4              ldi R18,64
 0040 0FE1              ldi R16,31
 0042 15D7              xcall _ClearBitMask
 0044                   .dbline 43
 0044           ;      WriteRC(RegBitPhase,0xAD);      
 0044 2DEA              ldi R18,173
 0046 0BE1              ldi R16,27
 0048 0E94EB09          xcall _WriteRC
 004C                   .dbline 44
 004C           ;      WriteRC(RegRxThreshold,0xFF);   
 004C 2FEF              ldi R18,255
 004E 0CE1              ldi R16,28
 0050 0E94EB09          xcall _WriteRC
 0054                   .dbline 45
 0054           ;      WriteRC(RegRxControl2,00);
 0054 2227              clr R18
 0056 0EE1              ldi R16,30
 0058 0E94EB09          xcall _WriteRC
 005C                   .dbline 46
 005C           ;      WriteRC(RegFIFOLevel,0x1A); // initialize to 26d 
 005C 2AE1              ldi R18,26
 005E 09E2              ldi R16,41
 0060 0E94EB09          xcall _WriteRC
 0064                   .dbline 47
 0064           ;      WriteRC(RegTimerControl,0x02);  // TStopRxEnd=0,TStopRxBeg=0,
 0064 22E0              ldi R18,2
 0066 0BE2              ldi R16,43
 0068 0E94EB09          xcall _WriteRC
 006C                   .dbline 48
 006C           ;      WriteRC(RegIRqPinConfig,0x3); // interrupt active low enable
 006C 23E0              ldi R18,3
 006E 0DE2              ldi R16,45
 0070 0E94EB09          xcall _WriteRC
 0074                   .dbline 49
 0074           ;      PcdRfReset(1);            // Rf - reset and enable output driver   
 0074 01E0              ldi R16,1
 0076 10E0              ldi R17,0
 0078 9BD6              xcall _PcdRfReset
 007A                   .dbline 50
 007A           ;    }
 007A           L3:
 007A                   .dbline 51
 007A           ;    return status;
 007A 062F              mov R16,R22
 007C                   .dbline -2
 007C           L2:
 007C 0E940000          xcall pop_gset2
 0080                   .dbline 0 ; func end
 0080 0895              ret
 0082                   .dbsym r CmdWaitCnt 20 s
 0082                   .dbsym r RstLoopCnt 20 s
 0082                   .dbsym r status 22 I
 0082                   .dbsym r i 20 c
 0082                   .dbend
 0082                   .dbfunc e Mf500PiccRequest _Mf500PiccRequest fc
 0082           ;            atq -> R22,R23
 0082           ;       req_code -> R20
                        .even
 0082           _Mf500PiccRequest::
 0082 0E940000          xcall push_gset2
 0086 B901              movw R22,R18
 0088 402F              mov R20,R16
 008A                   .dbline -1
 008A                   .dbline 57
 008A           ; }
 008A           ; 
 008A           ; char Mf500PiccRequest(unsigned char req_code, // request code ALL = 0x52 
 008A           ;                                            // or IDLE = 0x26 
 008A           ;                    unsigned char *atq)     // answer to request
 008A           ; {
 008A                   .dbline 58
 008A           ;   return Mf500PiccCommonRequest(req_code,atq);
 008A 9B01              movw R18,R22
 008C 042F              mov R16,R20
 008E 03D0              xcall _Mf500PiccCommonRequest
 0090                   .dbline -2
 0090           L9:
 0090 0E940000          xcall pop_gset2
 0094                   .dbline 0 ; func end
 0094 0895              ret
 0096                   .dbsym r atq 22 pc
 0096                   .dbsym r req_code 20 c
 0096                   .dbend
 0096                   .dbfunc e Mf500PiccCommonRequest _Mf500PiccCommonRequest fc
 0096           ;         status -> R20,R21
 0096           ;            atq -> R22,R23
 0096           ;       req_code -> R10
                        .even
 0096           _Mf500PiccCommonRequest::
 0096 0E940000          xcall push_gset3
 009A B901              movw R22,R18
 009C A02E              mov R10,R16
 009E 2497              sbiw R28,4
 00A0                   .dbline -1
 00A0                   .dbline 61
 00A0           ; }
 00A0           ; char Mf500PiccCommonRequest(unsigned char req_code,unsigned char *atq)
 00A0           ; {
 00A0                   .dbline 62
 00A0           ;       int status = MI_OK;
 00A0 4427              clr R20
 00A2 5527              clr R21
 00A4                   .dbline 64
 00A4           ;     //************* initialize ******************************
 00A4           ;         PcdSetTmo(106);
 00A4 0AE6              ldi R16,106
 00A6 10E0              ldi R17,0
 00A8 9AD6              xcall _PcdSetTmo
 00AA                   .dbline 65
 00AA           ;       WriteRC(RegChannelRedundancy,0x03); // RxCRC and TxCRC disable, parity enable
 00AA 23E0              ldi R18,3
 00AC 02E2              ldi R16,34
 00AE 0E94EB09          xcall _WriteRC
 00B2                   .dbline 66
 00B2           ;       ClearBitMask(RegControl,0x08);      // disable crypto 1 unit   
 00B2 28E0              ldi R18,8
 00B4 09E0              ldi R16,9
 00B6 DBD6              xcall _ClearBitMask
 00B8                   .dbline 67
 00B8           ;       WriteRC(RegBitFraming,0x07);        // set TxLastBits to 7 
 00B8 27E0              ldi R18,7
 00BA 0FE0              ldi R16,15
 00BC 0E94EB09          xcall _WriteRC
 00C0                   .dbline 68
 00C0           ;       ResetInfo(MInfo);   
 00C0 2224              clr R2
 00C2 20920201          sts _MInfo,R2
 00C6                   .dbline 68
 00C6 3324              clr R3
 00C8 30920401          sts _MInfo+1+1,R3
 00CC 20920301          sts _MInfo+1,R2
 00D0                   .dbline 68
 00D0 20920501          sts _MInfo+3,R2
 00D4                   .dbline 68
 00D4 20920601          sts _MInfo+4,R2
 00D8                   .dbline 68
 00D8 20920701          sts _MInfo+5,R2
 00DC                   .dbline 68
 00DC 30920901          sts _MInfo+6+1,R3
 00E0 20920801          sts _MInfo+6,R2
 00E4                   .dbline 68
 00E4 20920A01          sts _MInfo+8,R2
 00E8                   .dbline 68
 00E8 20920B01          sts _MInfo+9,R2
 00EC                   .dbline 68
 00EC                   .dbline 69
 00EC           ;       MSndBuffer[0] = req_code;
 00EC E0910E01          lds R30,_MSndBuffer
 00F0 F0910F01          lds R31,_MSndBuffer+1
 00F4 A082              std z+0,R10
 00F6                   .dbline 70
 00F6           ;       MInfo.nBytesToSend   = 1;   
 00F6 81E0              ldi R24,1
 00F8 80930601          sts _MInfo+4,R24
 00FC                   .dbline 71
 00FC           ;       status = PcdSingleResponseCmd(0x1e,MSndBuffer,MRcvBuffer,&MInfo);
 00FC 80E0              ldi R24,<_MInfo
 00FE 90E0              ldi R25,>_MInfo
 0100 9B83              std y+3,R25
 0102 8A83              std y+2,R24
 0104 20900C01          lds R2,_MRcvBuffer
 0108 30900D01          lds R3,_MRcvBuffer+1
 010C 3982              std y+1,R3
 010E 2882              std y+0,R2
 0110 20910E01          lds R18,_MSndBuffer
 0114 30910F01          lds R19,_MSndBuffer+1
 0118 0EE1              ldi R16,30
 011A D6D7              xcall _PcdSingleResponseCmd
 011C 402F              mov R20,R16
 011E 5527              clr R21
 0120                   .dbline 72
 0120           ;       if (status)      // error occured
 0120 4030              cpi R20,0
 0122 4507              cpc R20,R21
 0124 21F0              breq L19
 0126           X1:
 0126                   .dbline 73
 0126           ;       {

⌨️ 快捷键说明

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