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

📄 main.lst

📁 SPI接口读写模块c程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
 606   2                                                      
 607   2                              break;
 608   2      
 609   2      
 610   2                      case 0x25:      //钱包充值
 611   2                                              //数据内容“1 字节密钥标识+1 块号+6 字节密钥+4 字节增加值(低字节在前)”
 612   2                      
C51 COMPILER V8.02   MAIN                                                                  02/25/2008 12:13:54 PAGE 11  

 613   2                              
 614   2                                  cStatus =SPI_Write(g_cReceBuf);       // 发送命令
 615   2                                  delay_10ms(5);                                                // 延时等待模块执行命令
 616   2                                  cStatus =SPI_Read(cp);                // 读取并存入到cP
 617   2                                      if((cStatus==SUCCESS)&&(cp[1]==ADD_PURSE))      
 618   2                                      {              
 619   3                                              g_cReceBuf[0]=0x02;
 620   3                                                      g_cReceBuf[1]=cmd;                                              
 621   3                                                              
 622   3                                                      
 623   3                                      }
 624   2                                                      
 625   2                                  else
 626   2                                  {
 627   3                                                      g_cReceBuf[0]=0x02;
 628   3                                                      g_cReceBuf[1]=~cmd;
 629   3                                                              cStatus=1;
 630   3                                      }
 631   2                                                      
 632   2                  break;
 633   2                      
 634   2       
 635   2                      case 0x26:      //钱包扣款                                                      
 636   2                                              //数据内容“11 字节密钥标识+1 块号+6 字节密钥+4 字节增加值(低字节在前)”
 637   2                      
 638   2                              
 639   2                                  cStatus =SPI_Write(g_cReceBuf);       // 发送命令
 640   2                                  delay_10ms(5);                                                // 延时等待模块执行命令
 641   2                                  cStatus =SPI_Read(cp);                // 读取并存入到cP
 642   2                                      if((cStatus==SUCCESS)&&(cp[1]==DEC_PURSE))      
 643   2                                      {              
 644   3                                              g_cReceBuf[0]=0x02;
 645   3                                                      g_cReceBuf[1]=cmd;                                              
 646   3                                                              
 647   3                                              
 648   3                                      }
 649   2                                                      
 650   2                                  else
 651   2                                  {
 652   3                                                      g_cReceBuf[0]=0x02;
 653   3                                                      g_cReceBuf[1]=~cmd;
 654   3                                                              cStatus=1;
 655   3                                      }
 656   2                                                      
 657   2                  break;                      
 658   2              
 659   2                      case 0x30:    // EEPROM  read  max size:16
 660   2                              cStatus =SPI_Write(g_cReceBuf);   // 发送命令
 661   2                                  delay_10ms(2);                                                // 延时等待模块执行命令
 662   2                                  cStatus =SPI_Read(cp);                // 读取并存入到cP
 663   2                              if((cStatus==SUCCESS)&&(cp[1]==READ_E2))
 664   2                              {
 665   3                                      temp=g_cReceBuf[4];
 666   3                                      g_cReceBuf[0]=g_cReceBuf[4]+2;
 667   3                                      g_cReceBuf[1]=cmd;
 668   3                                      memcpy(&g_cReceBuf[2],&cp[2],temp);
 669   3                              }
 670   2                              else
 671   2                              {
 672   3                                      g_cReceBuf[0]=0x02;
 673   3                                      g_cReceBuf[1]=~cmd;
 674   3                                      cStatus=1;
C51 COMPILER V8.02   MAIN                                                                  02/25/2008 12:13:54 PAGE 12  

 675   3                              }
 676   2                      break;  
 677   2                              
 678   2                              case 0x31:    // EEPROM  write  max size:16
 679   2                                              cStatus =SPI_Write(g_cReceBuf);   // 发送命令
 680   2                                  delay_10ms(2);                                                // 延时等待模块执行命令
 681   2                                  cStatus =SPI_Read(cp);                // 读取并存入到cP
 682   2                                      if((cStatus==SUCCESS)&&(cp[1]==WRITE_E2))                                
 683   2      
 684   2                                      {
 685   3                                                              g_cReceBuf[0]=0x02;
 686   3                                                              g_cReceBuf[1]=cmd;                                                                                      
 687   3                                      
 688   3                                      }
 689   2                              
 690   2                                  else
 691   2                                  {
 692   3                                                      g_cReceBuf[0]=0x02;
 693   3                                                      g_cReceBuf[1]=~cmd;
 694   3                                                              cStatus=1;
 695   3                                      }
 696   2                      
 697   2                      break;  
 698   2           
 699   2                      default:
 700   2                              g_cReceBuf[0]=0x02;
 701   2                              g_cReceBuf[1]=~cmd;
 702   2                              cStatus=1;      
 703   2                          break;
 704   2      
 705   2              }
 706   1              return cStatus;
 707   1      }
 708          
 709          
 710          //-----Reset rf module -------//
 711          void Reset_HY502(void)
 712          {
 713   1              RST_HY=0;                         //Reset HY502 复位模块 
 714   1          delay_10ms(50);          
 715   1              RST_HY=1;     
 716   1      }
 717          
 718          /************************** main function start here *******************************/
 719          void main()
 720          {                       
 721   1              uchar idata cStatus;        
 722   1          
 723   1      
 724   1              InitializeSystem();                // 初始化系统        
 725   1      
 726   1              Reset_HY502();       
 727   1      //      LED_YELLOW=0;  //test led
 728   1              LED_GREEN=0;
 729   1              delay_10ms(50); 
 730   1      //    LED_YELLOW=1;     
 731   1          LED_GREEN=1;   //LED light 0.5s
 732   1              beep(2);        //test buzz
 733   1              //----- test key------//
 734   1              if(KEY1==0) splash(1);
 735   1              if(KEY2==0) splash(2);
 736   1              if(KEY3==0) splash(3);
C51 COMPILER V8.02   MAIN                                                                  02/25/2008 12:13:54 PAGE 13  

 737   1              if(KEY4==0) splash(4);  
 738   1      //-----------------main loop ---------------//  
 739   1      
 740   1              while (1)
 741   1              {
 742   2                      
 743   2                          LED_GREEN=sig;     // detect module inturrupt ,if there is a card in ,then sig=0,unless you colse th
             -e auto search.                                 
 744   2                           // KeyPress();     处理按键
 745   2                               // add your code here
 746   2                      //检查命令标志
 747   2                  if (g_bReceCommandOk)                       
 748   2                      {                                                                                               
 749   3                          g_bReceCommandOk = FALSE;                           
 750   3                              cStatus=uart_process();
 751   3                              if(cStatus)
 752   3                              {
 753   4                                      cStatus=0;
 754   4                              
 755   4                              }
 756   3                                              
 757   3                              UartSend(g_cReceBuf);   // Send data to uart.
 758   3                              // add your code here
 759   3              }        
 760   2              
 761   2              }
 762   1      }
 763          
 764          
 765          /*****************************************************************************
 766          *system initialize
 767          *UART baudrate = 19200bps, baud generator is T1
 768          *****************************************************************************/
 769          void InitializeSystem()
 770          {
 771   1        
 772   1                      ET2 = 0;
 773   1              T2CON = 0x04;
 774   1          PCON = 0x80;
 775   1          SCON = 0x70;
 776   1          TMOD = 0x21;        //TMOD = 0x22;
 777   1      
 778   1              TH1   = BAUD_19200;  //默认波特率
 779   1              TL1   = TH1;
 780   1              TR1   = TRUE;             // 波特率发生器
 781   1      
 782   1              ET1=0;
 783   1              EA=1;
 784   1              EX0=0;//1;
 785   1              IT0 = 1;
 786   1              TR2=0;
 787   1              ES = TRUE;
 788   1              g_bReceCommandOk=0;                                                             
 789   1              BUZ=0;
 790   1      }
 791          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1653    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
C51 COMPILER V8.02   MAIN                                                                  02/25/2008 12:13:54 PAGE 14  

   PDATA SIZE       =      4      13
   DATA SIZE        =     30       1
   IDATA SIZE       =     34       1
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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