这是51单片机并行口rc632读卡程序
单片机源程序如下:
- #include <reg52.h>
- #include <string.h>
- #include <intrins.h>
- #include "main.h"
- #include "slrc632.h"
- #include "iso14443a.h"
- #include "iso14443b.h"
- #include "iso15693.h"
- /*Declare SFR associated with the IAP */
- sfr IAP_DATA = 0xE2; //Flash data register
- sfr IAP_ADDRH = 0xE3; //Flash address HIGH
- sfr IAP_ADDRL = 0xE4; //Flash address LOW
- sfr IAP_CMD = 0xE5; //Flash command register
- sfr IAP_TRIG = 0xE6; //Flash command trigger
- sfr IAP_CONTR = 0xE7; //Flash control register
- //硬件版本号
- unsigned char code hardmodel[12] = {"SL601F-0512"};
- bit g_bReceOk; //正确接收到上位机指令标志
- bit g_bReceAA; //接收到上位机发送的AA字节标志
- bit g_bRc632Ok; //RC632复位正常标志
- bit g_bIblock;
- void outputconvery ();
- unsigned char Readcard_flag,start_flag=0,startnum=0;
- unsigned int idata g_cReceNum; //接收到上位机的字节数
- unsigned int data g_cCommand; //接收到的命令码
- unsigned char data g_cSNR[4]; //M1卡序列号
- unsigned char g_cIcdevH; //设备标记
- unsigned char g_cIcdevL; //设备标记
- unsigned char g_cFWI; //
- unsigned char idata g_cCidNad,huankuaiflag=0; //
- unsigned char idata g_cReceBuf[64]; //和上位机通讯时的缓冲区
- unsigned char idata canshu[5]={0x00,0x00,0x00,0x10,0x01};//0:扇区,1:块,2-3:卡号首尾位置,4:读卡方式
- unsigned char idata key[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};//密码
- unsigned char idata canshuflag=0,timenum=0,UID[4];
- struct TranSciveBuffer{unsigned char MfCommand;
- unsigned int MfLength;
- unsigned char MfData[64];
- };
- /***************************定时器0初始化********************************/
- void timer0init (void)//22.1184MHZ,20ms
- {
- TH0=0x70;
- TL0=0x00;
- ET0=1;
- TR0=1;
- TMOD=0x21;
- }
- /*****************************定时器0中断函数********************************/
- void timer0(void) interrupt 1
- {
- TH0=0x70;
- TL0=0x00;
- timenum++;
- if(timenum==100) canshuflag=1,timenum=0;
- }
-
- void gonggongdaima(void)
- {
- IAP_TRIG = 0x46;//发送46h到触发寄存器
- IAP_TRIG = 0xB9;//发送B9h到触发寄存器
- _nop_();//延时
- IAP_CONTR = 0;//关闭IAP功能
- IAP_CMD = 0;//清空命令寄存器
- IAP_TRIG = 0;//清空命令触发寄存器
- IAP_ADDRH = 0;//清空地址高位
- IAP_ADDRL = 0;//清空地址低位
- }
- /**************************字节读函数***************************************/
- unsigned char Byte_Read(unsigned int add)
- {
- IAP_DATA = 0x00;//清空数据
- IAP_CONTR = 0x81;//打开IAP,设置操作等待时间
- IAP_CMD = 0x01;//字节读命令
- IAP_ADDRH = add>>8;//设置高8位地址
- IAP_ADDRL = add&0x00ff;//设置低8位地址
- gonggongdaima();
- return (IAP_DATA);//返回读到的数据
- }
- /*****************************字节编程函数*****************************/
- void Byte_Program(unsigned int add, unsigned char dat)
- {
- IAP_CONTR = 0x81;//打开IAP,设置操作等待时间
- IAP_CMD = 0x02;//字节编程命令
- IAP_ADDRH = add>>8;//设置高8位地址
- IAP_ADDRL = add&0x00ff;//设置低8位地址
- IAP_DATA = dat;//要编程的数据先送进IAP_DATA寄存器
- gonggongdaima();
- }
- /*****************************扇区擦除函数****************************/
- void Sector_Erase(unsigned int add)
- {
- IAP_CONTR = 0x81;//打开IAP,设置操作等待时间
- IAP_CMD = 0x03;//扇区擦除命令
- IAP_ADDRH = add>>8;//设置高8位地址
- IAP_ADDRL = add&0x00ff;//设置低8位地?
- gonggongdaima();
- }
- /****************************读取参数函数************************/
- void Read_canshu(void)
- {
- canshu[0]=Byte_Read(0x8000);
- canshu[1]=Byte_Read(0x8001);
- canshu[2]=Byte_Read(0x8002);
- canshu[3]=Byte_Read(0x8003);
- canshu[4]=Byte_Read(0x8004);
- }
- void Read_Akey(void)
- {
- key[0]=Byte_Read(0x8200);
- key[1]=Byte_Read(0x8201);
- key[2]=Byte_Read(0x8202);
- key[3]=Byte_Read(0x8203);
- key[4]=Byte_Read(0x8204);
- key[5]=Byte_Read(0x8205);
- }
- void Read_Bkey(void)
- {
- key[0]=Byte_Read(0x8400);
- key[1]=Byte_Read(0x8401);
- key[2]=Byte_Read(0x8402);
- key[3]=Byte_Read(0x8403);
- key[4]=Byte_Read(0x8404);
- key[5]=Byte_Read(0x8405);
- }
- /****************************保存参数函数****************************/
- void Save_canshu(void)
- {
- Sector_Erase(0x8000);//擦除扇区
- Byte_Program(0x8000,canshu[0]);
- Byte_Program(0x8001,canshu[1]);
- Byte_Program(0x8002,canshu[2]);
- Byte_Program(0x8003,canshu[3]);
- Byte_Program(0x8004,canshu[4]);
- }
- void Save_Akey(void)
- {
- Sector_Erase(0x8200);//擦除扇区
- Byte_Program(0x8200,key[0]);
- Byte_Program(0x8201,key[1]);
- Byte_Program(0x8202,key[2]);
- Byte_Program(0x8203,key[3]);
- Byte_Program(0x8204,key[4]);
- Byte_Program(0x8205,key[5]);
- }
- void Save_Bkey(void)
- {
- Sector_Erase(0x8400);//擦除扇区
- Byte_Program(0x8400,key[0]);
- Byte_Program(0x8401,key[1]);
- Byte_Program(0x8402,key[2]);
- Byte_Program(0x8403,key[3]);
- Byte_Program(0x8404,key[4]);
- Byte_Program(0x8405,key[5]);
- }
- void delay(unsigned int i)
- {
- unsigned char j;
- while(i--) for(j=0;j<200;j++);
- }
- void BEEP(unsigned char i)
- {
- unsigned char k;
- k=100;
- sond = 0;
- redled = 1;
- blueled = 0;
- delay(k);
- sond =1;
- blueled = 1;
- redled = 0;
- }
- void REDON(void)
- {
- redled = 1;
- }
- void REDOFF(void)
- {
- redled = 0;
- }
- void BLUEON(void)
- {
- blueled = 1;
- }
- void BLUEOFF(void)
- {
- blueled = 0;
- }
-
- void main( )
- {
- InitializeSystem( );
- Rc632Ready( );
- PcdConfigISOType( '1' );
- BEEP(2);
- DelayMs(1000);
- RC632_CE=0;
- ComSetBound();//波特率
- RC632_CE=1;
- EA=1;
- g_cReceBuf[6]=0;
- RC632_CE=0;
- ComPcdAntenna();//天线
- RC632_CE=1;
- EA=1;
- RC632_CE=0;
- ComM632PcdConfigISOType();//ISO14443A/B或ISO15693
- RC632_CE=1;
- EA=1;
- Readcard_flag=0;
-
- timer0init ();
- while ( 1 )
- {
- if(canshuflag==1) Read_canshu(),Read_Akey(),BEEP(3),canshuflag=0,TR0=0;//读取参数
- if(Readcard_flag==0)
- {
- g_cReceBuf[6]=0;
- RC632_CE=0;
- ComPcdAntenna();
- RC632_CE=1;
- EA=1;
- }
-
- if(Readcard_flag==2)
- {
- RC632_CE=0;
- ComM632PcdConfigISOType();
- RC632_CE=1;
- EA=1;
- }
-
- if(Readcard_flag==3)
- {
- g_cReceBuf[6]=1;
- RC632_CE=0;
- ComPcdAntenna();
- RC632_CE=1;
- EA=1;
-
- }
-
- if(Readcard_flag==4)
- {
-
- RC632_CE=0;
- ComISO15693_Inventory16();
-
- RC632_CE=1;
- EA=1;
-
- }
-
-
-
-
- //
- // if(Readcard_flag==5)
- // {
- //
- // RC632_CE=0;
- //
- // ComISO15693_Select();
- // RC632_CE=1;
- // EA=1;
- //
- // }
-
-
-
- if(Readcard_flag==5)
- {
-
- RC632_CE=0;
- ComISO15693_Read_sm();
- RC632_CE=1;
- EA=1;
- }
-
-
-
-
-
-
-
- g_bReceOk=0;
- if (g_bReceOk)
- {
- g_bReceOk = 0;
- RC632_CE=0;
- switch(g_cCommand)
- {
-
- case 0x0101:
- ComSetBound(); break;
- case 0x0104:
- ComGetHardModel(); break;
- case 0x0108:
- ComM632PcdConfigISOType(); break;
- case 0x010C:
- ComPcdAntenna(); break;
-
- case 0x0201:
- ComRequestA(); break;
- case 0x0202:
- ComAnticoll(); break;
- case 0x0203:
- ComSelect(); break;
- case 0x0204:
- ComHlta(); break;
- case 0x0207:
- ComAuthentication(); break;
- case 0x0208:
- ComM1Read(); break;
- case 0x0209:
- ComM1Write(); break;
- case 0x020A:
- ComM1Initval(); break;
- case 0x020B:
- ComM1Readval(); break;
- case 0x020C:
- ComM1Decrement(); break;
- case 0x020D:
- ComM1Increment(); break;
- case 0x020E:
- ComM1Restore(); break;
- case 0x020F:
- ComM1Transfer(); break;
- case 0x0210:
- ComTypeARst(); break;
- case 0x0211:
- ComTypeACOS(); break;
- case 0x0212:
- ComUL_PcdAnticoll(); break;
- case 0x0213:
- ComUL_PcdWrite(); break;
- case 0x0301:
- ComTypeBRst(); break;
- // case 0x1E:
- // ComAttrib(); break;
- case 0x0302:
- ComHltb(); break;
- case 0x0303:
- ComCL_Deselect(); break;
- case 0x0401:
- ComRF020Check(); break;
- case 0x0402:
- ComRF020Read(); break;
- case 0x0403:
- ComRF020Write(); break;
- case 0x0404:
- ComRF020Lock(); break;
- case 0x0405:
- ComRF020Count(); break;
- case 0x0406:
- ComRF020Deselect(); break;
- case 0x0501:
- ComSelectSR(); break;
- case 0x0502:
- ComCompletionSR(); break;
- case 0x0503:
- ComReadSR176(); break;
- case 0x0504:
- ComWriteSR176(); break;
- case 0x0505:
- ComProtectSR176(); break;
- case 0x0506:
- ComReadSR4K(); break;
- case 0x0507:
- ComWriteSR4K(); break;
- case 0x0508:
- ComAuthSR4K(); break;
- case 0x0509:
- ComGetUIDSR4K(); break;
- case 0x050A:
- ComProtectSR4K(); break;
- case 0x1000:
- ComISO15693_Inventory16(); break;
- case 0x1001:
- ComISO15693_Inventory(); break;
- case 0x1002:
- ComISO15693_Stay_Quiet(); break;
- case 0x1003:
- ComISO15693_Select(); break;
- case 0x1004:
- ComISO15693_Reset_To_Ready();break;
- case 0x1005:
- ComISO15693_Read_sm(); break;
- case 0x1006:
- ComISO15693_Write_sm(); break;
- case 0x1007:
- ComISO15693_Lock_Block(); break;
- case 0x1008:
- ComISO15693_Write_AFI(); break;
- case 0x1009:
- ComISO15693_Lock_AFI(); break;
- case 0x100A:
- ComISO15693_Write_DSFID(); break;
- case 0x100B:
- ComISO15693_Lock_DSFID(); break;
- case 0x100C:
- ComISO15693_Get_System_Information(); break;
- case 0x100D:
- ComISO15693_Get_Multiple_Block_Security();break;
- default:
- AnswerErr( FAULT11 ); break;
- }
- REDOFF();
- BLUEON();
- sond = 1;
- sond_1 = 1;
- REDON();
- BLUEOFF();
- RC632_CE=1;
- ES = 1;
- EA=1;
- }
- }
- }
- /////////////////////////////////////////////////////////////////////
- //系统初始化
- /////////////////////////////////////////////////////////////////////
- void InitializeSystem()
- {
- TMOD &= 0x0F;
- TMOD |= 0x21;
- PCON |= 0x80;
- SCON = 0x50;
- TH1 = TL1 = BOUND19200;
- TR1=1;
- P0 = P1 = P2 = P3 = 0xFF;
- IE |= 0x90;
- }
- /////////////////////////////////////////////////////////////////////
- //初始化RC632
- /////////////////////////////////////////////////////////////////////
- void Rc632Ready()
- {
- char status;
- delay(100);
- status = PcdReset();
- if(status != MI_OK)
- {
- delay(10);
- status = PcdReset();
- }
- if(status != MI_OK)
- {
- delay(10);
- status = PcdReset();
- }
- if(status == MI_OK)
- {
- g_bRc632Ok = 1;
- }
- }
-
- /////////////////////////////////////////////////////////////////////
- //响应上位机发送的设置波特率命令
- /////////////////////////////////////////////////////////////////////
- void ComSetBound()
- {
- unsigned char bound =1;
- if (bound > 7)
- { Readcard_flag=1; }
- else
- {
- Readcard_flag=1;
- TR1 = 0;
-
- switch(bound)
- {
- case 0:
- TH1=TL1=BOUND4800;
- break;
- case 1:
- TH1=TL1=BOUND9600;
- break;
- case 2:
- TH1=TL1=BOUND14400;
- break;
- case 3:
- TH1=TL1=BOUND19200;
- break;
- case 4:
- TH1=TL1=BOUND28800;
- break;
- case 5:
- TH1=TL1=BOUND38400;
- break;
- case 6:
- TH1=TL1=BOUND57600;
- break;
- case 7:
- TH1=TL1=BOUND115200;
- break;
- default:
- break;
- }
- TR1 = 1;
- }
- }
- /////////////////////////////////////////////////////////////////////
- //响应上位机发送的读取硬件版本号命令
- /////////////////////////////////////////////////////////////////////
- void ComGetHardModel()
- {
- memcpy(&g_cReceBuf[0], &hardmodel[0], sizeof(hardmodel));
- AnswerOk(&g_cReceBuf[0], sizeof(hardmodel));
- }
-
- /////////////////////////////////////////////////////////////////////
- //响应上位机发送的设置RC632协议命令,ISO14443A/B或ISO15693
- /////////////////////////////////////////////////////////////////////
- void ComM632PcdConfigISOType()
- {
- if (MI_OK == PcdConfigISOType(49))
- { Readcard_flag=3; }
- else
- { Readcard_flag=0; }
- }
-
- /////////////////////////////////////////////////////////////////////
- //响应上位机发送的天线命令
- /////////////////////////////////////////////////////////////////////
- void ComPcdAntenna()
- {
- char status;
-
- if (!g_cReceBuf[6])
- {
- status = PcdAntennaOff();
- if (status == MI_OK)
- {
- Readcard_flag=2;
- }
- else
- {
- Readcard_flag=3;
- }
- }
- else
- {
- DelayMs(5);
- status = PcdAntennaOn();
- DelayMs(5);
- if (status == MI_OK)
- {
- Readcard_flag=4;
- }
- else
- {
- Readcard_flag=3;
- }
- }
-
- }
-
- /////////////////////////////////////////////////////////////////////
- //响应上位机发送的寻卡命令
- /////////////////////////////////////////////////////////////////////
- /*void ComRequestA()
- {
- unsigned char atq[2];
- char status;
- status = ISO15693_Inventory(0x7b,0x30,0x10);
- if (status != MI_OK)
- { status = ISO15693_Inventory(0x7b,0x30,0x10); }
- if (status == MI_OK)
- {
- if(start_flag==0)Readcard_flag=5;
- else
- {
- startnum=0;
- Readcard_flag=0;
- }
- }
- else
- {
- Readcard_flag=0;
- if(start_flag==1)
- {
- startnum++;
- if(startnum>=5)
- {
- start_flag=0;
- startnum=0;
- }
- }
-
- }
- }
- /////////////////////////////////////////////////////////////////////
- //响应上位机发送的A卡防冲撞命令
- /////////////////////////////////////////////////////////////////////
- void ComAnticoll()
- {
- if (MI_OK == ISO15693_Stay_Quiet(0x7b))
- {
- Readcard_flag=6;
- }
- else
- {
- Readcard_flag=0;
- }
- }
- /////////////////////////////////////////////////////////////////////
- //响应上位机发送的A卡锁定命令
- /////////////////////////////////////////////////////////////////////
- void ComSelect()
- {
- if (MI_OK == ISO15693_Select(0x7b))
- {
- Readcard_flag=7;
- }
- else
- {
- Readcard_flag=0;
- }
- }*/
- /////////////////////////////////////////////////////////////////////
- //响应上位机发送的A卡休眠命令
- /////////////////////////////////////////////////////////////////////
- void ComHlta()
- {
- if (MI_OK == PcdHalt())
- { Readcard_flag=9; }
- else
- { Readcard_flag=0; }
- }
- /////////////////////////////////////////////////////////////////////
- //响应上位机发送的A卡验证密钥命令
- /////////////////////////////////////////////////////////////////////
- void ComAuthentication()
- {
- char status = MI_COM_ERR;
- unsigned char *pkeys,*pSNR;
- pkeys = &g_cReceBuf[20];
- pSNR = &g_cSNR;
- if (MI_OK == ChangeCodeKey(&g_cReceBuf[8],pkeys)) //转换密钥格式
- {
- if (MI_OK == PcdAuthKey(pkeys)) //传送密钥到RC500FIFO
- {
- status = PcdAuthState(0x60, canshu[0]*4+3, pSNR); //验证密钥0x08表示2扇区1块
- }
- }
- if (status == MI_OK)
- {
- Readcard_flag=8;
- }
- else
- {
- Readcard_flag=4;
- }
- }
- /////////////////////////////////////////////////////////////////////
- //响应上位机读M1卡命令
- /////////////////////////////////////////////////////////////////////
- void ComM1Read()
- {
- if (PcdRead(g_cReceBuf[6], &g_cReceBuf[0]))
- {
- sond = 0;
- redled = 1;
- blueled = 0;
- AnswerOk(&g_cReceBuf[0], 16);
- Readcard_flag=4;
- if(TR0==0)start_flag=1;
- DelayMs(200);
- sond = 1;
- redled = 0;
- blueled = 1;
- }
- else
- {
- Readcard_flag=4;
- }
- }
- /////////////////////////////////////////////////////////////////////
- //响应上位机写M1卡命令
- /////////////////////////////////////////////////////////////////////
- void ComM1Write()
- {
- if (MI_OK == PcdWrite(g_cReceBuf[6], &g_cReceBuf[7]))
- { AnswerCommandOk(); }
- else
- { AnswerErr(FAULT24); }
- }
- /////////////////////////////////////////////////////////////////////
- //响应上位机初始化钱包命令
- /////////////////////////////////////////////////////////////////////
- void ComM1Initval()
- {
- g_cReceBuf[11]=~g_cReceBuf[7];g_cReceBuf[12]=~g_cReceBuf[8];
- g_cReceBuf[13]=~g_cReceBuf[9];g_cReceBuf[14]=~g_cReceBuf[10];
- g_cReceBuf[15]=g_cReceBuf[7];g_cReceBuf[16]=g_cReceBuf[8];
- g_cReceBuf[17]=g_cReceBuf[9];g_cReceBuf[18]=g_cReceBuf[10];
- g_cReceBuf[19]=g_cReceBuf[6];g_cReceBuf[20]=~g_cReceBuf[6];
- g_cReceBuf[21]=g_cReceBuf[6];g_cReceBuf[22]=~g_cReceBuf[6];
- if (MI_OK == PcdWrite(g_cReceBuf[6], &g_cReceBuf[7]))
- { AnswerCommandOk(); }
- else
- { AnswerErr(FAULT24); }
- }
- /////////////////////////////////////////////////////////////////////
- //响应上位机读钱包命令
- /////////////////////////////////////////////////////////////////////
- void ComM1Readval()
- {
- if (MI_OK == PcdRead(g_cReceBuf[6], &g_cReceBuf[0]))
- { AnswerOk(&g_cReceBuf[0], 4); }
- else
- { AnswerErr(FAULT23); }
- }
- /////////////////////////////////////////////////////////////////////
- //响应上位机扣款命令
- /////////////////////////////////////////////////////////////////////
- void ComM1Decrement()
- {
- if (MI_OK == PcdValue(PICC_DECREMENT, g_cReceBuf[6], &g_cReceBuf[7]))
- { AnswerCommandOk(); }
- else
- { AnswerErr(FAULT24); }
- }
-
- /////////////////////////////////////////////////////////////////////
- //响应上位机充值命令
- /////////////////////////////////////////////////////////////////////
- void ComM1Increment()
- {
- if (MI_OK == PcdValue(PICC_INCREMENT, g_cReceBuf[6], &g_cReceBuf[7]))
- { AnswerCommandOk(); }
- else
- { AnswerErr(FAULT24); }
- }
- /////////////////////////////////////////////////////////////////////
- //响应上位机M1卡回传命令
- /////////////////////////////////////////////////////////////////////
- void ComM1Restore()
- {
- if (MI_OK == PcdRestore(g_cReceBuf[6]))
- { AnswerCommandOk(); }
- else
- { AnswerErr(FAULT23); }
- }
- /////////////////////////////////////////////////////////////////////
- //响应上位机M1卡值传送命令
- /////////////////////////////////////////////////////////////////////
- void ComM1Transfer()
- {
- if (MI_OK == PcdTransfer(g_cReceBuf[6]))
- { AnswerCommandOk(); }
- else
- { AnswerErr(FAULT24); }
- }
- /////////////////////////////////////////////////////////////////////
- //响应上位机ultra light防冲撞命令
- /////////////////////////////////////////////////////////////////////
- void ComUL_PcdAnticoll()
- {
- if (MI_OK == UL_PcdAnticoll(&g_cReceBuf[0]))
- { AnswerOk(&g_cReceBuf[0], 7); }
- else
- { AnswerErr(FAULT10); }
- }
- /////////////////////////////////////////////////////////////////////
- //响应上位机ultra light写卡命令
- /////////////////////////////////////////////////////////////////////
- void ComUL_PcdWrite()
- {
- if (MI_OK == UL_PcdWrite(g_cReceBuf[6], &g_cReceBuf[7]))
- { AnswerCommandOk(); }
- else
- { AnswerErr(FAULT24); }
- }
- /////////////////////////////////////////////////////////////////////
- //响应上位机TYPEA卡高级复位命令
- /////////////////////////////////////////////////////////////////////
- void ComTypeARst()
- {
- unsigned char status,i;
- i = (FSDI << 4) & 0xF0;
- status = PcdRequest(g_cReceBuf[6], &g_cReceBuf[0]);
-
- if (status != MI_OK)
- { status = PcdRequest(g_cReceBuf[6], &g_cReceBuf[0]); }
- if (status == MI_OK)
- { status = PcdAnticoll(&g_cReceBuf[1]); }
-
- if (status == MI_OK)
- { status = PcdSelect(&g_cReceBuf[1], &g_cReceBuf[6]); }
- if (status == MI_OK)
- {
- g_cFWI = 0xff;//g_cReceBuf[8]>>4;
- g_cReceBuf[0] += 4;
- g_cCidNad = 0;//(g_cReceBuf[9] & 0x03) << 2;
- AnswerOk(&g_cReceBuf[1], g_cReceBuf[0]);
- }
- else
- { AnswerErr(FAULT21); }
- }
- void ComTypeACOS()
- {
- g_cReceBuf[0] -= 5;
- if (MI_OK == MifareProCom(g_cCidNad, g_cFWI, &g_cReceBuf[0], &g_cReceBuf[6]))
- { AnswerOk(&g_cReceBuf[6], g_cReceBuf[0]); }
- else
- { AnswerErr(FAULT10); }
- }
-
- /////////////////////////////////////////////////////////////////////
- //响应上位机高级复位TYPEB卡命令
- /////////////////////////////////////////////////////////////////////
- /*
- void ComTypeBRst()
- {
- unsigned char status;
-
- if ((status = M531PiccRequestB(g_cReceBuf[6], 0, 0, &g_cReceBuf[0])) == MI_OK)
- {
- g_cFWI = 0xFF;//g_cReceBuf[11] >> 4;
- g_cCidNad = 8;//((g_cReceBuf[11]&0x02)<<1) | ((g_cReceBuf[11]&0x01)<<3);
- // status = M531PiccAttrib(&g_cReceBuf[1], g_cReceBuf[10]&0x0F, &g_cReceBuf[12]);
- // }
- // if (status == MI_OK) {
- AnswerOk(&g_cReceBuf[0], 12); }
- else
- { AnswerErr(FAULT21); }
- }
- */
- void ComTypeBRst()
- {
- unsigned char status;
-
- if ((status = M531PiccRequestB(g_cReceBuf[6], 0, 0, &g_cReceBuf[0])) == MI_OK)
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
键盘口程序-15693.rar
(334.37 KB, 下载次数: 42)
|