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

📄 main.lst

📁 一个编程器的下位机固件
💻 LST
📖 第 1 页 / 共 4 页
字号:
 806   4                                        progcount = 0;
 807   4                                        ProgModeSet();
 808   4                                      }
 809   3      
 810   3                     PackLen = Mult(buffer[j + 8], buffer[j + 9]);        //packlen
 811   3                     ReadAddr = Mult(buffer[j + 10], buffer[j + 11]);     //addr to be read
 812   3                     ReadCounter = Mult(buffer[j + 12], buffer[j + 13]);  //bytes to be read
 813   3                     buffer[0] = buffer[j + 10];
 814   3                     buffer[1] = buffer[j + 11];   //address to be read
 815   3      
 816   3                     ProgCommandSet(PICCMD_LDCONFIG);   //send command.pointer to 0x2000
 817   3                     clock_vDelay(1);                   //delay
 818   3                                 for(i=0; i<16; i++)
 819   3                                 {
 820   4                                    PGDCLR();  //dat = 0
 821   4                                        PGCSET();   //clk = 1
 822   4                                    nop();
 823   4                                        nop();
 824   4                                        nop();
 825   4                                        PGCCLR();   //clk = 0        
 826   4                                 }
 827   3                     for(i=2; i<ReadCounter + 2;)
 828   3                                 {                          
 829   4                                    progdata = ProgReadCode();
 830   4                        buffer[i++] = (uchar)(progdata & 0x00ff);//LSB first////////get memory value
 831   4                        buffer[i++] = (uchar)(progdata >> 8);//MSB last////////get memory value
 832   4                        ProgIncAddr();
 833   4                                 }
 834   3                                 SendPackage(PackType-1, ReadCounter + 2, buffer);
 835   3                        break;
 836   3      
 837   3                ///////////////////////////////////////////////////////////////
 838   3                    case READ_PROGRAM:
 839   3                case VERIFY_PROGRAM:
 840   3                                      if(ProgStatus != PackType)
 841   3                                      { 
 842   4                                        ProgStatus = PackType;
 843   4                                        ProgModeCancle();
 844   4                                        progcount = 0;
 845   4                                        ProgModeSet();
 846   4                                      }
 847   3      
 848   3                     PackLen = Mult(buffer[j + 8], buffer[j + 9]);
 849   3                     ReadAddr = Mult(buffer[j + 10], buffer[j + 11]);
 850   3                     ReadCounter = Mult(buffer[j + 12], buffer[j + 13]);
 851   3      
 852   3                     buffer[0] = buffer[j + 10];
 853   3                     buffer[1] = buffer[j + 11];   //address to be read
 854   3      
 855   3                     for(i=2; i<ReadCounter + 2;)
 856   3                                 { 
 857   4                                    ////////get 2 byte/////////////////
 858   4                                    progdata = ProgReadCode();
 859   4                        buffer[i++] = (uchar)(progdata & 0x00ff);//LSB first////////get memory value
 860   4                        buffer[i++] = (uchar)(progdata >> 8);//MSB last////////get memory value
 861   4                        ProgIncAddr();
C51 COMPILER V7.50   MAIN                                                                  06/11/2008 14:41:36 PAGE 15  

 862   4                                 }
 863   3                     SendPackage(PackType-1, ReadCounter + 2, buffer);
 864   3                     break;
 865   3      
 866   3                        case READ_EEPROM:
 867   3                case VERIFY_EEPROM:
 868   3                                      if(ProgStatus != PackType)
 869   3                                      { 
 870   4                                        ProgStatus = PackType;
 871   4                                        ProgModeCancle();
 872   4                                        progcount = 0;
 873   4                                        ProgModeSet();
 874   4                                      }
 875   3      
 876   3                     PackLen = Mult(buffer[j + 8], buffer[j + 9]);
 877   3                     ReadAddr = Mult(buffer[j + 10], buffer[j + 11]);
 878   3                     ReadCounter = Mult(buffer[j + 12], buffer[j + 13]);
 879   3      
 880   3                     buffer[0] = buffer[j + 10];
 881   3                     buffer[1] = buffer[j + 11];   //address to be read
 882   3      
 883   3                     for(i=2; i<ReadCounter + 2;)
 884   3                                 { 
 885   4                                    ////////get 2 byte/////////////////
 886   4                        buffer[i++] = ProgReadEEP();//(uchar)(progdata & 0x00ff);//LSB first////////get memory v
             -alue
 887   4                        ProgIncAddr();
 888   4                                        buffer[i++] = ProgReadEEP();//(uchar)(progdata >> 8);//MSB last////////get memory value
 889   4                        ProgIncAddr();
 890   4                                        ///////inc address////////////
 891   4                                 }
 892   3                     SendPackage(PackType-1, ReadCounter + 2, buffer);
 893   3                     break;
 894   3      
 895   3                        case WRITE_PROGRAM:
 896   3                                      if(ProgStatus != PackType)
 897   3                                      { 
 898   4                                        ProgStatus = PackType;
 899   4                                        ProgModeCancle();
 900   4                                        progcount = 0;
 901   4                                        ProgModeSet();
 902   4                                        ProgCommandSet(PICCMD_ERASEPM);
 903   4                        clock_vDelay(100);                   //delay
 904   4                                        PicOffset = 0;  
 905   4                                      }
 906   3      
 907   3                             PackLen = Mult(buffer[j + 8], buffer[j + 9]);
 908   3                     for(i=(j+10); i<(PackLen+j+10); i+=2)//////data to be write to the pm area
 909   3                                 {  
 910   4                                    if(PicOffset == 0x3ff)    //OscCal Addr = 0x3ff
 911   4                                        {
 912   5                                            ProgWriteCode(PicOscCal);      //program the OscCal bits
 913   5                                                ProgStatus = PROGSTATUS_NONE;
 914   5                                        }
 915   4                                        else
 916   4                                        {
 917   5                                            progdata = buffer[i+1];   //msb
 918   5                                progdata <<= 8;
 919   5                                progdata += buffer[i];    //lsb
 920   5                                            ProgWriteCode(progdata);
 921   5                                                ProgCommandSet(PICCMD_INCADDR);
 922   5                                                PicOffset ++;
C51 COMPILER V7.50   MAIN                                                                  06/11/2008 14:41:36 PAGE 16  

 923   5                                        }
 924   4                                 }
 925   3                                 //////////return status///////////////////
 926   3                     SendPackage(RETURN_WRITE_PROGRAM, 0, NULL);
 927   3                             break;
 928   3      
 929   3                        case WRITE_EEPROM:
 930   3                                      if(ProgStatus != PackType)
 931   3                                      { 
 932   4                                        ProgStatus = PackType;
 933   4                                        ProgModeCancle();
 934   4                                        progcount = 0;
 935   4                                        ProgModeSet();
 936   4                        ProgCommandSet(PICCMD_ERASEEEPROM);
 937   4                        clock_vDelay(100);                   //delay
 938   4                                      }
 939   3      
 940   3                             PackLen = Mult(buffer[j + 8], buffer[j + 9]);
 941   3      
 942   3                     for(i=(j+10); i<(PackLen+j+10);)//////data to be write to the pm area
 943   3                                 {
 944   4                        ProgWriteEEProm(buffer[i]);
 945   4                                        i++;
 946   4                                        ProgCommandSet(PICCMD_INCADDR);
 947   4      
 948   4                        ProgWriteEEProm(buffer[i]);
 949   4                                        i++;
 950   4                                        ProgCommandSet(PICCMD_INCADDR);
 951   4                                 }
 952   3                                 //////////return status///////////////////
 953   3                     SendPackage(RETURN_WRITE_EEPROM, 0, NULL);
 954   3                             break;
 955   3                
 956   3                case TINY_READ_PROGRAM:
 957   3                case TINY_VERIFY_PROGRAM:
 958   3                     PackLen = Mult(buffer[j + 8], buffer[j + 9]);
 959   3                     ReadAddr = Mult(buffer[j + 10], buffer[j + 11]);
 960   3                     ReadCounter = Mult(buffer[j + 12], buffer[j + 13]);
 961   3                     buffer[0] = buffer[j + 10];
 962   3                     buffer[1] = buffer[j + 11];   //address to be read
 963   3                     ReadAddr >>= 1;               //  add/2
 964   3                     for(i=2; i<ReadCounter + 2;)
 965   3                                 { 
 966   4                                buffer[i++] = Tiny_ReadProgram(0, ReadAddr);    //////Low Byte
 967   4                        buffer[i++] = Tiny_ReadProgram(1, ReadAddr);    //////High Byte
 968   4                        ReadAddr ++;
 969   4                                 }
 970   3                     SendPackage(PackType-1, ReadCounter+2, buffer);
 971   3                     break;
 972   3      
 973   3                        case TINY_READ_EEPROM:
 974   3                        case TINY_VERIFY_EEPROM:
 975   3                     PackLen = Mult(buffer[j + 8], buffer[j + 9]);
 976   3                     ReadAddr = Mult(buffer[j + 10], buffer[j + 11]);
 977   3                     ReadCounter = Mult(buffer[j + 12], buffer[j + 13]);
 978   3      
 979   3                     buffer[0] = buffer[j + 10];
 980   3                     buffer[1] = buffer[j + 11];   //address to be read
 981   3      
 982   3                     for(i=2; i<ReadCounter + 2;)
 983   3                                 { 
 984   4                        buffer[i++] =  Tiny_ReadEepRom(ReadAddr ++);
C51 COMPILER V7.50   MAIN                                                                  06/11/2008 14:41:36 PAGE 17  

 985   4                                        buffer[i++] =  Tiny_ReadEepRom(ReadAddr ++);
 986   4                                 }
 987   3                     SendPackage(PackType-1, ReadCounter + 2, buffer); 
 988   3                                 break;
 989   3      
 990   3                case TINY_PROG_EEPROM:
 991   3                                 if(ProgStatus != PackType)
 992   3                                 {   
 993   4                        Tiny_Offset = 0;
 994   4                        ProgStatus = PackType;
 995   4                                 }
 996   3                             PackLen = Mult(buffer[j + 8], buffer[j + 9]);
 997   3                     for(i=(j+10); i<(PackLen+j+10); i+=2)//////data to be write to the pm area
 998   3                                 {                    
 999   4                                    uchar temp;
1000   4                                        uchar try;
1001   4                        Tiny_WriteEepRom(Tiny_Offset++, buffer[i]);
1002   4                                        try = 0;
1003   4                        do
1004   4                                        {
1005   5                                               temp = Tiny_TestBusy();
1006   5                                               try ++;
1007   5                                        }while( (temp & 0x01) && (try < 50) );  //wait no busy
1008   4      
1009   4                        Tiny_WriteEepRom(Tiny_Offset++, buffer[i+1]);
1010   4                        try = 0;
1011   4                        do
1012   4                                        {
1013   5                                               temp = Tiny_TestBusy();
1014   5                                               try ++;
1015   5                                        }while( (temp & 0x01) && (try < 50) );  //wait no busy
1016   4                                 }
1017   3                     SendPackage(RETURN_TINY_PROG_EEPROM, 0, NULL);
1018   3                                 break;
1019   3      
1020   3                case TINY_WRITE_PROGRAM:
1021   3                                 if(ProgStatus != PackType)
1022   3                                 {   
1023   4                                       uchar temp;
1024   4                                       uchar try = 0;
1025   4                                       Tiny_Offset = 0;
1026   4                                       ProgStatus = PackType;
1027   4                                       Tiny_Erase();
1028   4                                       do
1029   4                                       {
1030   5                                         temp = Tiny_TestBusy();
1031   5                                         try ++;
1032   5                                       }while( (temp & 0x01) && (try < 50) );  //wait no busy
1033   4                                 }
1034   3      
1035   3                             PackLen = Mult(buffer[j + 8], buffer[j + 9]);
1036   3                                 
1037   3                     for(i=(j+10); i<(PackLen+j+10); i+=2)//////data to be write to the pm area
1038   3                                 {                    
1039   4                                    uchar temp;
1040   4                                        uchar try = 0;
1041   4                                    Tiny_WriteProgram(Tiny_Offset ++, buffer + i);   //2 byte
1042   4                        do
1043   4                                        {
1044   5                                               temp = Tiny_TestBusy();
1045   5                                               try ++;
1046   5                                        }while( (temp & 0x01) && (try < 50) );  //wait no busy
C51 COMPILER V7.50   MAIN                                                                  06/11/2008 14:41:36 PAGE 18  

1047   4                                 }
1048   3                                 //////////return status///////////////////
1049   3                     SendPackage(RETURN_TINY_WRITE_PROGRAM, 0, NULL);
1050   3                             break; 
1051   3                    
1052   3                        default:
1053   3      //                 lcd_print_string(0x40,"failed          ");
1054   3                             break;
1055   3      
1056   3                      }
1057   2      
1058   2              }
1059   1      }
1060          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   3029    ----
   CONSTANT SIZE    =     34    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      89
   IDATA SIZE       =   ----      90
   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 + -