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

📄 sle4442_b.lst

📁 IC卡购电软件实现
💻 LST
📖 第 1 页 / 共 2 页
字号:
 221   1      
 222   1        rst_ans();
 223   1        sendcommand(0x30,0x20,0);
 224   1        for(i=0;i<0x20;i++)
 225   1        ICDATA[i]=cardrbyte();
 226   1      }
 227          /********************************************************************
 228          函 数 名:rdpm()
 229          功    能:读保护存储区
 230          说    明: 
 231          入口参数:
 232          返 回 值:
 233          设    计:蓝海微芯           
 234          ***********************************************************************/
 235          void rdpm()
 236          {
 237   1        uchar i;
 238   1      
 239   1        rst_ans();
 240   1        sendcommand(0x34,0,0);
 241   1        for(i=0;i<0x4;i++)
C51 COMPILER V7.08   SLE4442_B                                                             09/27/2006 09:14:02 PAGE 5   

 242   1        ICDATA[i]=cardrbyte();
 243   1      }
 244          /********************************************************************
 245          函 数 名:wrmm()
 246          功    能:写主存储区
 247          说    明: 
 248          入口参数:
 249          返 回 值:
 250          设    计:蓝海微芯           
 251          ***********************************************************************/
 252          void wrmm()
 253          {
 254   1        uchar i,j;
 255   1        uchar addr=0;
 256   1      
 257   1        rst_ans();
 258   1        for(i=0;i<0x20;i++)
 259   1        {
 260   2          addr=0x20+i;
 261   2          sendcommand(0x38,addr,ICDATA[i]);
 262   2          for(j=0xff;j>0;j--)                      /*256个时钟脉冲擦除数据*/
 263   2          cardpulse();   
 264   2        } 
 265   1      }
 266          /********************************************************************
 267          函 数 名:wrpm()
 268          功    能:写保护存储区
 269          说    明: 
 270          入口参数:
 271          返 回 值:
 272          设    计:蓝海微芯           
 273          ***********************************************************************/
 274          void wrpm()
 275          {
 276   1        uchar i;
 277   1      
 278   1        rst_ans();
 279   1        for(i=0;i<0x20;i++)
 280   1        {
 281   2          sendcommand(0x3c,i,ICDATA[i]);
 282   2          for(i=0;i<0xff;i++)                     /*256个时钟脉冲擦除数据*/
 283   2          cardpulse();
 284   2        }  
 285   1      }
 286          /********************************************************************
 287          函 数 名:rdsm()
 288          功    能:读保密存储区
 289          说    明:
 290          入口参数:
 291          返 回 值:
 292          设    计:蓝海微芯           
 293          ***********************************************************************/
 294          void rdsm()
 295          {
 296   1        uchar i;
 297   1      
 298   1        rst_ans();
 299   1        for(i=0;i<0x20;i++)
 300   1        sendcommand(0x31,0,0);
 301   1        for(i=0;i<0x4;i++)
 302   1        ICDATA[i]=cardrbyte();
 303   1      }
C51 COMPILER V7.08   SLE4442_B                                                             09/27/2006 09:14:02 PAGE 6   

 304          /********************************************************************
 305          函 数 名:rdsm_ec()
 306          功    能:读错误计数器
 307          说    明:
 308          入口参数:
 309          返 回 值:erro
 310          设    计:蓝海微芯           
 311          ***********************************************************************/
 312          uchar rdsm_ec()
 313          {
 314   1        uchar erro;
 315   1      
 316   1        rst_ans();                            /*RSTANSER[]={0xa2,0x13,0x10,0x91}*/
 317   1        sendcommand(0x31,0,0);
 318   1        erro=cardrbyte();
 319   1        return erro;
 320   1      }
 321          /********************************************************************
 322          函 数 名:wrsm()
 323          功    能:更新保密存储区
 324          说    明:
 325          入口参数:uchar ec
 326          返 回 值:
 327          设    计:蓝海微芯           
 328          ***********************************************************************/
 329          void wrsm(uchar ec)
 330          {
 331   1        uchar i;
 332   1      
 333   1        rst_ans();
 334   1        sendcommand(0x39,0,ec);
 335   1        for(i=0xff;i>0;i--)                            /*256个时钟脉冲擦除数据*/
 336   1        cardpulse();
 337   1      }
 338          /********************************************************************
 339          函 数 名:updatepsc()
 340          功    能:更新密码
 341          说    明:
 342          入口参数:
 343          返 回 值:
 344          设    计:蓝海微芯           
 345          ***********************************************************************/
 346          void updatepsc()
 347          {
 348   1        uchar i;
 349   1        uchar j;
 350   1      
 351   1        rst_ans();
 352   1        for(i=0;i<0x03;i++)
 353   1        {
 354   2          sendcommand(0x39,(i+1),ICCODE[i]);
 355   2          for(j=0xff;j>0;j--)                         /*256个时钟脉冲擦除数据*/
 356   2          cardpulse();
 357   2        }
 358   1      }
 359          /********************************************************************
 360          函 数 名:sendpsc()
 361          功    能:比较校验数据
 362          说    明: 
 363          入口参数:
 364          返 回 值:
 365          设    计:蓝海微芯           
C51 COMPILER V7.08   SLE4442_B                                                             09/27/2006 09:14:02 PAGE 7   

 366          ***********************************************************************/
 367          void sendpsc()
 368          {
 369   1        uchar i;
 370   1        uchar j;
 371   1      
 372   1        uchar adrs=0;
 373   1        rst_ans();
 374   1        for(i=0;i<0x03;i++)
 375   1        {
 376   2          adrs=i+1;
 377   2          sendcommand(0x33,adrs,ICCODE[i]);
 378   2          for(j=123;j>0;j--)                         
 379   2          cardpulse();
 380   2        }
 381   1      }
 382          /********************************************************************
 383          函 数 名:verifi()
 384          功    能:校验密码
 385          说    明: 
 386          入口参数:
 387          返 回 值:uchar EC
 388          设    计:蓝海微芯           
 389          ***********************************************************************/
 390          uchar  verifi()
 391          {
 392   1        uchar EC=0;
 393   1        uchar temp;
 394   1      
 395   1        EC=rdsm_ec();         /*读错误计数器*/
 396   1        EC=EC&0x07;
 397   1         
 398   1        switch(EC)
 399   1        {
 400   2          case  0x00:         
 401   2          break;
 402   2          case  0x07:
 403   2          temp=0x03;
 404   2          break;
 405   2          case  0x06:
 406   2          temp=0x02;
 407   2          break;
 408   2          case  0x05:
 409   2          temp=0x01;
 410   2          break;
 411   2          case  0x04:
 412   2          temp=0x00;
 413   2          break;
 414   2          case  0x03:
 415   2          temp=0x01;
 416   2          break;
 417   2          temp=0;
 418   2         }
 419   1        if(!EC==0)
 420   1        {
 421   2          wrsm(temp);       /*更新保密存储区*/
 422   2          sendpsc();        /*比较验证数据*/
 423   2          wrsm(0x07);       /*更新保密存储区*/
 424   2          EC=rdsm_ec();     /*读错误计数器*/
 425   2          EC=EC&0x07;
 426   2        }
 427   1         return  EC;
C51 COMPILER V7.08   SLE4442_B                                                             09/27/2006 09:14:02 PAGE 8   

 428   1      }
 429          
 430          
 431          
 432          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    477    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     46       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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