📄 main.lst
字号:
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 + -