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

📄 board_type.lst

📁 单片机程序代码,经过很详细的测试.呵呵,硬件相关.
💻 LST
📖 第 1 页 / 共 4 页
字号:
 686          
 687          void report_loss_OTB(void){
 688   1      //F02上报MCP OTB盘丢失
 689   1              report_loss_board(4,4);
 690   1      }
 691          
 692          void read_soft_version(void){
 693   1      //V00读取MCU软件版本号
 694   1              if (!GetResRdyTbl(50))
 695   1                      SetResRdyTbl(50); 
 696   1      }
 697          
 698          void report_soft_version(void){
 699   1      //V00回复命令
 700   1              tx_buf[0] = '$';
 701   1              tx_buf[1] = '2';
 702   1              tx_buf[2] = '1';
 703   1              tx_buf[3] = 0x56;
 704   1              tx_buf[4] = 0x30;
 705   1              tx_buf[5] = 0x30;
 706   1              tx_buf[6] = '0';
 707   1              tx_buf[7] = '0';
 708   1              tx_buf[8] = '0';
 709   1              tx_buf[9] = '7';
 710   1              tx_buf[10] = '0';
 711   1              tx_buf[11] = '0';
 712   1              tx_buf[12] = '1';
 713   1              tx_buf[13] = '0';
 714   1              tx_buf[14] = '1';
 715   1              tx_buf[15] = '0';
 716   1              tx_buf[16] = '3';
 717   1              tx_buf[17] = '*';
 718   1              tx_buf_pointer = 0;     
 719   1              while(tx_buf[tx_buf_pointer] != '*'){
 720   2                      SBUF = tx_buf[tx_buf_pointer];
 721   2                      while(tx_done == 0);
 722   2                      tx_done = 0;
 723   2                      tx_buf_pointer++;
 724   2              }
 725   1              SBUF = tx_buf[tx_buf_pointer];          //发送最后一个字符'*'
 726   1              while(tx_done == 0);
 727   1              tx_done = 0;
 728   1      }
 729          
 730          void read_hard_version(void){
 731   1      //V01读取MCU硬件版本号
 732   1              if (!GetResRdyTbl(51))
 733   1                      SetResRdyTbl(51); 
 734   1      }
 735          
 736          void report_hard_version(void){
C51 COMPILER V7.50   BOARD_TYPE                                                            03/10/2006 16:35:30 PAGE 13  

 737   1      //V01回复命令
 738   1              tx_buf[0] = '$';
 739   1              tx_buf[1] = '2';
 740   1              tx_buf[2] = '1';
 741   1              tx_buf[3] = 0x56;
 742   1              tx_buf[4] = 0x30;
 743   1              tx_buf[5] = 0x31;
 744   1              tx_buf[6] = '0';
 745   1              tx_buf[7] = '0';
 746   1              tx_buf[8] = '0';
 747   1              tx_buf[9] = '7';
 748   1              tx_buf[10] = '0';
 749   1              tx_buf[11] = '0';
 750   1              tx_buf[12] = '1';
 751   1              tx_buf[13] = '0';
 752   1              tx_buf[14] = '0';
 753   1              tx_buf[15] = '0';
 754   1              tx_buf[16] = '2';
 755   1              tx_buf[17] = '*';
 756   1              tx_buf_pointer = 0;     
 757   1              while(tx_buf[tx_buf_pointer] != '*'){
 758   2                      SBUF = tx_buf[tx_buf_pointer];
 759   2                      while(tx_done == 0);
 760   2                      tx_done = 0;
 761   2                      tx_buf_pointer++;
 762   2              }
 763   1              SBUF = tx_buf[tx_buf_pointer];          //发送最后一个字符'*'
 764   1              while(tx_done == 0);
 765   1              tx_done = 0;
 766   1      }
 767          
 768          
 769          unsigned char read_register(struct cmd_para_save *read_reg){
 770   1      //T00专为读取寄存器值的命令
 771   1      unsigned char xdata read_board;
 772   1      unsigned int  xdata read_address;
 773   1      unsigned char xdata *point;
 774   1      unsigned char xdata porth;
 775   1      unsigned char xdata portl;
 776   1      unsigned char xdata return_value;
 777   1      
 778   1              read_board = read_reg -> test_read_board;
 779   1              read_address = read_reg -> test_read_address;
 780   1              point = read_address;
 781   1              porth = (unsigned char) (read_address >> 8);
 782   1              portl = (unsigned char) (read_address & 0x00FF);
 783   1              
 784   1              switch (read_board){
 785   2                      case 5: return_value = *point;
 786   2                                      break;
 787   2                      case 4: if (porth >= 0x10){
 788   3                                              read_address &= 0x0FFF;
 789   3                                              return_value = f2rc7860_rd(read_address);
 790   3                                      }
 791   2                                      else    
 792   2                                              return_value = f2rc7820_rd(portl);
 793   2                                      break;
 794   2                      case 3: 
 795   2                      case 2: 
 796   2                      case 1: if (porth < 0x80)
 797   2                                              return_value = se0111_reg_rd(porth,portl,read_board);
 798   2                                      else if (porth == 0xA4)
C51 COMPILER V7.50   BOARD_TYPE                                                            03/10/2006 16:35:30 PAGE 14  

 799   2                                      {
 800   3                                              switch(read_board)
 801   3                                              {
 802   4                                                      case 1: P1 = 0x20;
 803   4                                                                      break;
 804   4                                                      case 2: P1 = 0x60;
 805   4                                                                      break;
 806   4                                                      case 3: P1 = 0x40;
 807   4                                                                      break;
 808   4                                                      default:break;
 809   4                                              }
 810   3                                              return_value = XBYTE[0xA400];
 811   3                                              P1 = 0xFF;
 812   3                                      }
 813   2                                      else return_value = se0121_reg_rd(portl,read_board);
 814   2                                      break;
 815   2                      default:return_value = 2;
 816   2                                      break;
 817   2              }
 818   1              if (!GetResRdyTbl(40))
 819   1                      SetResRdyTbl(40); 
 820   1              return (return_value);
 821   1      }
 822          
 823          void report_regiester_value(unsigned char value){
 824   1      unsigned char xdata temp;
 825   1      
 826   1              tx_buf[0] = '$';
 827   1              tx_buf[1] = '2';
 828   1              tx_buf[2] = '1';
 829   1              tx_buf[3] = 0x54;
 830   1              tx_buf[4] = 0x30;
 831   1              tx_buf[5] = 0x30;
 832   1              tx_buf[6] = '0';
 833   1              tx_buf[7] = '0';
 834   1              tx_buf[8] = '0';
 835   1              tx_buf[9] = '2';
 836   1              temp = value >> 4;
 837   1              if (temp > 9)
 838   1                      tx_buf[10] = temp + 0x37;
 839   1              else tx_buf[10] = temp + 0x30;
 840   1              temp = value & 0x0F;
 841   1              if (temp > 9)
 842   1                      tx_buf[11] = temp + 0x37;
 843   1              else tx_buf[11] = temp + 0x30;
 844   1              tx_buf[12] = '*';
 845   1              tx_buf_pointer = 0;     
 846   1              while(tx_buf[tx_buf_pointer] != '*'){
 847   2                      SBUF = tx_buf[tx_buf_pointer];
 848   2                      while(tx_done == 0);
 849   2                      tx_done = 0;
 850   2                      tx_buf_pointer++;
 851   2              }
 852   1              SBUF = tx_buf[tx_buf_pointer];          //发送最后一个字符'*'
 853   1              while(tx_done == 0);
 854   1              tx_done = 0;
 855   1      }
 856          
 857          
 858          unsigned char write_register(struct cmd_para_save *write_reg){
 859   1      //T01专为写寄存器值的命令
 860   1      unsigned char xdata write_board;
C51 COMPILER V7.50   BOARD_TYPE                                                            03/10/2006 16:35:30 PAGE 15  

 861   1      unsigned int  xdata write_address;
 862   1      unsigned char xdata write_value;
 863   1      unsigned char xdata *point;
 864   1      unsigned char xdata porth;
 865   1      unsigned char xdata portl;
 866   1      unsigned char xdata return_value;
 867   1      
 868   1              commandid = 0x00543031;
 869   1              write_board = write_reg -> test_write_board;
 870   1              write_address = write_reg -> test_write_address;
 871   1              write_value = write_reg -> test_write_value;
 872   1              point = write_address;
 873   1              porth = (unsigned char) (write_address >> 8);
 874   1              portl = (unsigned char) (write_address & 0x00FF);
 875   1              
 876   1              switch (write_board){
 877   2                      case 5: *point = write_value;
 878   2                                      return_value = 0;
 879   2                                      break;
 880   2                      case 4: if (porth >= 0x10){
 881   3                                              write_address &= 0x0FFF;
 882   3                                              f2rc7860_wr(write_address,write_value);
 883   3                                              return_value = 0;
 884   3                                      }
 885   2                                      else    
 886   2                                              f2rc7820_wr(portl,write_value);
 887   2                                              return_value = 0;
 888   2                                      break;
 889   2                      case 3: 
 890   2                      case 2: 
 891   2                      case 1: if (porth < 0x80)
 892   2                                              se0111_reg_wr(porth,portl,write_value,write_board);
 893   2                                      else se0121_reg_wr(portl,write_value,write_board);
 894   2                                      return_value = 0;
 895   2                                      break;
 896   2                      default:return_value = 2;
 897   2                                      break;
 898   2              }
 899   1              if (!GetResRdyTbl(1))
 900   1                      SetResRdyTbl(1); 
 901   1              return (return_value);
 902   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   3528    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     24      17
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   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 + -