ZLG500应用实例

#define __SRC
 #include 
"main.h"
#undef __SRC
#include 
"LED.h"
#include 
"zlg500.h"


sbit zlg500_RST
=P2^1;

uchar code Nkey_a[
6]    = {0xA00xA10xA20xA30xA40xA5};
uchar code Nkey_b[
6]    = {0xFF0xFF0xFF0xFF0xFF0xFF};
uchar code Nkey_new[
6= {0x000x110x220x330x440x55};

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)!=0continue;   //写进新密码  
      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)!=0continue;
      
break;
      
case 1:
      
if(mifs_authentication(KEYA,5)!=0)   continue;
      
if(mifs_value(PICC_INCREMENT,0x14,&value,0x14)!=0)  continue;
      
break;
    
case 2if(mifs_authentication(KEYA,5)!=0)   continue;
      
if(mifs_value(PICC_DECREMENT,0x14,&value,0x14)!=0)  continue;
      
break;
   }
   
if(mifs_read(0x14,databuf)!=0continue;
   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); 
  
 }
}

posted on 2008-09-13 21:00  hanfigo  阅读(496)  评论(0)    收藏  举报

导航