ZLG500应用实例
#define __SRC
#include "main.h"
#undef __SRC
#include "LED.h"
#include "zlg500.h"
sbit zlg500_RST=P2^1;
uchar code Nkey_a[6] = {0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5};
uchar code Nkey_b[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
uchar code Nkey_new[6] = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55};
main()
{
uchar idata state=2; //0 初始化 1 增值 2 减值
uchar idata card_snr[8];
uchar idata databuf[16];
long idata value=1;
long idata sumdata;
uchar i,j;
uchar tempdata[8];
zlg500_RST=1;
for(i=255;i>0;i--)
for(j=255;j>0;j--);
zlg500_RST=0;
for(i=255;i>0;i--)
for(j=255;j>0;j--);
spi_init();
EA=1;
i=mifs_config();
i=mifs_get_info(databuf);
i=mifs_clr_control_bit();
i=mifs_set_control_bit();
i=mifs_read_E2(0x10,16,databuf);
databuf[0]=0x01;
mifs_load_key(KEYA,5,Nkey_new); //装载新密码
while(1)
{
while(mifs_request(IDLE,databuf)!=MI_OK);
if(mifs_cascanticoll(ANTICOLL1,0,card_snr)!=MI_OK) continue;
if(mifs_cascselect(ANTICOLL1,card_snr,&i)!=MI_OK) continue;
if(i&0x04)
{
if(mifs_cascanticoll(ANTICOLL2,0,card_snr+4)!=MI_OK) continue;
if(mifs_cascselect(ANTICOLL2,card_snr+4,&i)!=MI_OK) continue;
}
switch(state)
{
case 0: mifs_load_key(KEYA,5,Nkey_b); //用旧密码进行论证
if(mifs_authentication(KEYA,5)!=0) continue;
if(mifs_read(0x17,databuf)!=0) continue; //读出该区的块4
for(i=0;i<6;i++)
{
databuf[i]=Nkey_new[i]; //设置新密码
}
if(mifs_write(0x17,databuf)!=0) continue; //写进新密码
databuf[0]=0xE8;
databuf[1]=0x03;
databuf[4]=~0xE8;
databuf[5]=~0x03;
databuf[8]=0xE8;
databuf[9]=0x03;
for(i=2;i<4;i++)
{
databuf[i]=0x00;
databuf[4+i]=0xff;
databuf[8+i]=0x00; //初始化卡
}
databuf[12]=0x14;
databuf[13]=~0x14;
databuf[14]=0x14;
databuf[15]=~0x14;
if(mifs_write(0x14,databuf)!=0) continue;
break;
case 1:
if(mifs_authentication(KEYA,5)!=0) continue;
if(mifs_value(PICC_INCREMENT,0x14,&value,0x14)!=0) continue;
break;
case 2: if(mifs_authentication(KEYA,5)!=0) continue;
if(mifs_value(PICC_DECREMENT,0x14,&value,0x14)!=0) continue;
break;
}
if(mifs_read(0x14,databuf)!=0) continue;
mifs_buzzer(250,20);
sumdata=databuf[3]*256*256*256+databuf[2]*256*256+databuf[1]*256+databuf[0];
for(i=0;i<8;i++)
{
tempdata[7-i]=sumdata%10;
sumdata=sumdata/10;
}
for(j=0;j<50;j++)
disp_led(tempdata);
disp_cls();
mifs_halt();
mifs_clr_control_bit();
while(mifs_set_control_bit()!=0);
}
}
#include "main.h"
#undef __SRC
#include "LED.h"
#include "zlg500.h"
sbit zlg500_RST=P2^1;
uchar code Nkey_a[6] = {0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5};
uchar code Nkey_b[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
uchar code Nkey_new[6] = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55};
main()
{
uchar idata state=2; //0 初始化 1 增值 2 减值
uchar idata card_snr[8];
uchar idata databuf[16];
long idata value=1;
long idata sumdata;
uchar i,j;
uchar tempdata[8];
zlg500_RST=1;
for(i=255;i>0;i--)
for(j=255;j>0;j--);
zlg500_RST=0;
for(i=255;i>0;i--)
for(j=255;j>0;j--);
spi_init();
EA=1;
i=mifs_config();
i=mifs_get_info(databuf);
i=mifs_clr_control_bit();
i=mifs_set_control_bit();
i=mifs_read_E2(0x10,16,databuf);
databuf[0]=0x01;
mifs_load_key(KEYA,5,Nkey_new); //装载新密码
while(1)
{
while(mifs_request(IDLE,databuf)!=MI_OK);
if(mifs_cascanticoll(ANTICOLL1,0,card_snr)!=MI_OK) continue;
if(mifs_cascselect(ANTICOLL1,card_snr,&i)!=MI_OK) continue;
if(i&0x04)
{
if(mifs_cascanticoll(ANTICOLL2,0,card_snr+4)!=MI_OK) continue;
if(mifs_cascselect(ANTICOLL2,card_snr+4,&i)!=MI_OK) continue;
}
switch(state)
{
case 0: mifs_load_key(KEYA,5,Nkey_b); //用旧密码进行论证
if(mifs_authentication(KEYA,5)!=0) continue;
if(mifs_read(0x17,databuf)!=0) continue; //读出该区的块4
for(i=0;i<6;i++)
{
databuf[i]=Nkey_new[i]; //设置新密码
}
if(mifs_write(0x17,databuf)!=0) continue; //写进新密码
databuf[0]=0xE8;
databuf[1]=0x03;
databuf[4]=~0xE8;
databuf[5]=~0x03;
databuf[8]=0xE8;
databuf[9]=0x03;
for(i=2;i<4;i++)
{
databuf[i]=0x00;
databuf[4+i]=0xff;
databuf[8+i]=0x00; //初始化卡
}
databuf[12]=0x14;
databuf[13]=~0x14;
databuf[14]=0x14;
databuf[15]=~0x14;
if(mifs_write(0x14,databuf)!=0) continue;
break;
case 1:
if(mifs_authentication(KEYA,5)!=0) continue;
if(mifs_value(PICC_INCREMENT,0x14,&value,0x14)!=0) continue;
break;
case 2: if(mifs_authentication(KEYA,5)!=0) continue;
if(mifs_value(PICC_DECREMENT,0x14,&value,0x14)!=0) continue;
break;
}
if(mifs_read(0x14,databuf)!=0) continue;
mifs_buzzer(250,20);
sumdata=databuf[3]*256*256*256+databuf[2]*256*256+databuf[1]*256+databuf[0];
for(i=0;i<8;i++)
{
tempdata[7-i]=sumdata%10;
sumdata=sumdata/10;
}
for(j=0;j<50;j++)
disp_led(tempdata);
disp_cls();
mifs_halt();
mifs_clr_control_bit();
while(mifs_set_control_bit()!=0);
}
}
浙公网安备 33010602011771号