📄 mcpu.c
字号:
#include "normal.h"
#include "mcpu.h"
unsigned char idata cddat[60];
void sound(bit Sond) //声音
{
uchar i;
SOUND = Sond;
for(i=0;i<20;i++)
{
delay_50us(2);
}
SOUND = 1;
for(i=0;i<20;i++)
{
delay_50us(2);
}
}
void getmifmm(unsigned char *Nkey_a) //设置密码
{
Nkey_a[0]=0xff;
Nkey_a[1]=0xff;
Nkey_a[2]=0xff;
Nkey_a[3]=0xff;
Nkey_a[4]=0xff;
Nkey_a[5]=0xff;
}
unsigned char FindCard(unsigned char *serial_num) //寻卡,得到卡号
{
unsigned char st;
st=mif_request2(0,&serial_num[0]);
if(st!=0) st=mif_request2(1,&serial_num[0]);
if(st!=0) return 1;
st=mif_anticoll(0,&serial_num[0]);
if(st!=0) return 2;
st=mif_select(&serial_num[0]);
if(st!=0) return 3;
return 0;
}
unsigned char ChPwd(unsigned char Snr,unsigned char *serial_num)
{
unsigned char st;
unsigned char Nkey_a[6];
getmifmm(&Nkey_a[0]);
st=mif_load_key(&Nkey_a[0]);
if(st!=0) return 5;
st=mif_authentication(1,Snr,&serial_num[0]);
if(st!=0) return 6;
return 0;
}
void InitRC500(bit Sond)
{
sound(Sond);
RFRST=1;
sound(Sond);
RFRST=0;
sound(Sond);
mif_config(); //模块初始化
}
void main( )
{
unsigned char idata st,s_num; //返回值和扇区号
unsigned char idata serial_num[5]; //有个校验字节
InitRC500(0);
while ( 1 )
{
s_num = 01;//读1号区数据
st=FindCard(&serial_num[0x00]);
if(st!=0)
{
sound(1);
continue;
}
st=ChPwd(s_num,&serial_num[0x00]);
if(st!=0)
{
sound(1);
continue;
}
st=mif_Read((s_num * 4 + 1),&cddat[5]);
if(st==0)
{
sound(0);
continue;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -