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

📄 cpu_com.lst

📁 keil下ISO7816规则的APDU程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
 471          /*小机器
 472          unsigned char cpu_Open(void)
 473          {
 474                          //unsigned char *data1;
 475                          //unsigned char *aa;
 476                          idata unsigned char i=0,z=0,ndata1[1];
 477                          //*aa = 0;
 478                          aa = aa|0X08;                                   //打开使能开关
 479                          //CPU卡复位置低、下电、关时钟
 480                          BT_RST = 0;                                             //设置为低              
 481                          aa &=0XEF;                                              //关闭时钟通道
 482                          aa &=0XBF;                                              //下电
 483                          delay();                                                //
 484                          aa |=0X10;                                              //为CPU卡上电并关时钟通道
 485                          aa &=0XDF;
 486                          aa |=0XBF;                                              //为CPU卡上电并开时钟通道
C51 COMPILER V7.50   CPU_COM                                                               05/16/2006 17:45:20 PAGE 9   

 487                          BT_REC = 1;                                             //准备接受
 488                          delay();
 489                          BT_RST = 1;                                             //设置为高
 490          //              read_ATR();
 491                          //delay();
 492                          if(GetChar(ndata1)==TRUE)
 493                          {
 494                                  ndata[0]=ndata1[0];
 495                                  for(i=1;i<255;i++)
 496                                  {
 497                                          //BT_REC = 1;
 498                                          if(GetChar(ndata1) == TRUE)
 499                                          {
 500                                                  ndata[i]=ndata1[0];
 501                                          }
 502                                          else
 503                                          {       
 504                                                  //n=101; 
 505                                                  break;
 506                                          }
 507                                   }
 508                          }
 509          }*/
 510          //触点激活子程序冷复位
 511          //税控器
 512          unsigned char cpu_Open(void)
 513          {
 514   1                      //unsigned char *data1;
 515   1                      //unsigned char *aa;
 516   1                      idata unsigned char i=0,z=0,ndata1[1],y = 0;
 517   1                      //*aa = 0;
 518   1                      aa = 0xF9;
 519   1                      //aa = aa|0X08;                                 //打开使能开关
 520   1                      aa = 0xF9;
 521   1                      //CPU卡复位置低、下电、关时钟
 522   1      cpuope:
 523   1                      BT_RST = 0;                                             //设置为低
 524   1                      //              
 525   1              //      aa = 0xEB;
 526   1      /*
 527   1                      aa &=0XEF;                                              //关闭时钟通道..........
 528   1                      //
 529   1      //              C_PWR = 1;                                              //下电
 530   1      //              CLOCK = 1;                                              //关闭时钟通道
 531   1                      //
 532   1                      aa &=0XBF;                                              //下电.................
 533   1              //      aa = 0xAB;
 534   1                      //
 535   1                      delay();                                                //
 536   1                      //
 537   1                      aa |=0X10;                                              //为CPU卡上电并关时钟通道...........
 538   1                      //aa = 0xBB;
 539   1                      //
 540   1      //              C_PWR = 0;
 541   1      //              V_SEL = 0;
 542   1                      //      
 543   1                      aa &=0XDF;
 544   1                      aa |=0XBF;                                              //为CPU卡上电并开时钟通道
 545   1                      //aa = 0x9B;
 546   1                      //aa = 0xBF;
 547   1                      //
 548   1      //              CLOCK = 0;
C51 COMPILER V7.50   CPU_COM                                                               05/16/2006 17:45:20 PAGE 10  

 549   1      */
 550   1                      aa = 0xE9;
 551   1                      aa = 0xA9;
 552   1                      delay();
 553   1                      aa = 0xB9;
 554   1                      aa = 0xD9;
 555   1                      BT_REC = 1;                                             //准备接受
 556   1                      delay();
 557   1                      BT_RST = 1;                                             //设置为高
 558   1      //              read_ATR();
 559   1                      if((i=read_ATR()) == FALSE)
 560   1                      {       
 561   2                              if(tck == 1)
 562   2                              {
 563   3                                      if(y == 4)
 564   3                                      {
 565   4                                              ndata[0] = 0xFF;
 566   4                                              SendCom(1,ndata);
 567   4                                      }
 568   3                                      else
 569   3                                      {
 570   4                                              y++;
 571   4                                              goto cpuope;
 572   4                                      }
 573   3                              }
 574   2                              else
 575   2                              {
 576   3                                      ndata[0] = 0xFF;
 577   3                                      SendCom(1,ndata);
 578   3                                      tck = 1;
 579   3                              }
 580   2                      }
 581   1                      else
 582   1                      {
 583   2                              SendCom(i,ndata);
 584   2                      }
 585   1                      //aa = 0x00;
 586   1                      //delay();
 587   1      /*              if(GetChar(ndata1)==TRUE)
 588   1                      {
 589   1                              ndata[0]=ndata1[0];
 590   1                              for(i=1;i<255;i++)
 591   1                              {
 592   1                                      //BT_REC = 1;
 593   1                                      if(GetChar(ndata1) == TRUE)
 594   1                                      {
 595   1                                              ndata[i]=ndata1[0];
 596   1                                      }
 597   1                                      else
 598   1                                      {       
 599   1                                              //n=101; 
 600   1                                              break;
 601   1                                      }
 602   1                               }
 603   1                      }
 604   1                      */
 605   1      }
*** WARNING C173 IN LINE 605 OF CPU_COM.C: missing return-expression
*** WARNING C280 IN LINE 516 OF CPU_COM.C: 'ndata1': unreferenced local variable
 606          /*小机器
 607          void rest(void)
 608          {
C51 COMPILER V7.50   CPU_COM                                                               05/16/2006 17:45:20 PAGE 11  

 609                          //*aa = *aa|0X08;                               //打开使能开关
 610                          //CPU卡复位置低、下电、关时钟
 611                          idata unsigned char i=0,ndata1[1];
 612                          BT_RST = 0;                                             //设置为低
 613                          delay();
 614                          BT_RST = 1;                                             //设置为低      
 615                          read_ATR();     
 616          }
 617          *///税控器
 618          void rest(void)
 619          {
 620   1                      //*aa = *aa|0X08;                               //打开使能开关
 621   1                      //CPU卡复位置低、下电、关时钟
 622   1                      idata unsigned char i=0,ndata1[1],y = 0;
 623   1      resta1:
 624   1                      BT_RST = 0;                                             //设置为低
 625   1                      delay();
 626   1                      BT_RST = 1;                                             //设置为低      
 627   1                      if((i=read_ATR()) == FALSE)
 628   1                      {
 629   2                              if(tck == 1)
 630   2                              {
 631   3                                      if(y == 4)
 632   3                                      {
 633   4                                              ndata[0] = 0xFF;
 634   4                                              SendCom(1,ndata);
 635   4                                      }
 636   3                                      else
 637   3                                      {
 638   4                                              y++;
 639   4                                              goto resta1;
 640   4                                      }
 641   3                              }
 642   2                              else
 643   2                              {
 644   3                                      ndata[0] = 0xFF;
 645   3                                      SendCom(1,ndata);
 646   3                                      tck = 1;
 647   3                              }
 648   2                      }
 649   1                      else
 650   1                      {
 651   2                              SendCom(i,ndata);
 652   2                      }
 653   1      }
*** WARNING C280 IN LINE 622 OF CPU_COM.C: 'ndata1': unreferenced local variable
 654          //触点释放子程序
 655          void cpu_Close(void)
 656          {
 657   1        BT_RST = 0;                                                   //复位端置低
 658   1        //CLK置低         
 659   1        BT_SND = 0;                                                   //接收端置低
 660   1        delay();
 661   1      //  aa = 0X00;                                                  //下电并关闭所有
 662   1      }
 663          //复位子程序,将CPU卡复位,reset_flag为1则冷复位,为0热复位
 664          /*void Reset(unsigned char reset_flag)
 665          {
 666                          unsigned char a,*ndata1;
 667                          if(reset_flag)
 668                          {
 669                                          BT_RST = 1;//将复位信号置高
C51 COMPILER V7.50   CPU_COM                                                               05/16/2006 17:45:20 PAGE 12  

 670                                          BT_SND = 1;
 671                                          delay();
 672                          }
 673                          else
 674                          {
 675                                          BT_RST = 0;
 676                                          BT_SND = 1;
 677                                          delay1();
 678                                          BT_RST = 1;
 679                                          delay();                        
 680                          }
 681          }
 682          */
 683          //接收复位应答:返回TRUE正确,返回FALSE则错误应答信号装入ndata中
 684          /*unsigned char Reset_answer(unsigned *ndata)
 685          {
 686                          unsigned char *data1,len=0;
 687                          idata unsigned char i=0,ndata1[1];
 688                          xdata unsigned char ndata[255];
 689                          if(GetChar(ndata1)==TRUE)
 690                          {
 691                                  ndata[0]=ndata1[0];
 692                                  for(i=1;i<255;i++)
 693                                  {
 694                                      if(GetChar(ndata1)==TRUE)
 695                                                  {
 696                                                          ndata[i]=ndata1[0];
 697                                                  }
 698                                                  else
 699                                            {     
 700                                                                  //n=10000001; 
 701                                                                  break;
 702                                                  }
 703                                  }
 704                                  if(ndata[1]==(i-3))
 705                                  {
 706                                                  return TRUE;
 707                                  }

⌨️ 快捷键说明

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