|
|
на другой никак. Поменяли все лампы - конденсаторы, кварцы, оторвали все ноги кроме питания и RS232, кварц повесили снаружи - не работает.
Считается CRC один раз и тут же второй, потом сравнивается - ошибка, иногда даже в обоих случаях. Причем CRC не функция, а встроенные команды.
pointer = TX_232_temp;
TX_232_temp[lenght] = 0;
for( temp = 0; temp < lenght ; temp++ ){
temp2 = ((TX_232_temp[lenght]) ^ ((*pointer++))) ;
//temp1 = crc8[temp2];
TBLPTRL = temp2; // ñòàâèì TBLPTR íà àäðåñ
TBLPTRH = USER_PROG_01 - 1 ;
TBLPTRU = 0;
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("TBLRD*");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
TX_232_temp[lenght] = TABLAT;
CLRWDT();
}// for
a = TX_232_temp[lenght];
pointer = TX_232_temp;
TX_232_temp[lenght] = 0;
for( temp = 0; temp < lenght ; temp++ ){
temp2 = ((TX_232_temp[lenght]) ^ ((*pointer++))) ;
//temp1 = crc8[temp2];
TBLPTRL = temp2; // ñòàâèì TBLPTR íà àäðåñ
TBLPTRH = USER_PROG_01 - 1 ;
TBLPTRU = 0;
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("TBLRD*");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
TX_232_temp[lenght] = TABLAT;
CLRWDT();
}// for
b = TX_232_temp[lenght];
if ( a != b ){
TX_232_temp[0] = 0xFF; // ôîðìèðóåì îò÷åò äëÿ PC
TX_232_temp[1] = 0xFF;
TX_232_temp[2] = 0xFF;
TX_232_temp[3] = 0xFF;
TX_232_temp[4] = a;
TX_232_temp[5] = b;
TX_232_temp[6] = temp;
TX_232_temp[7] = temp1;
TX_232_temp[8] = temp2;
TX_232_temp[9] = lenght;
TX_232_temp[10] = STATUS;
TX_232_temp[11] = 0xFF;
TX_232_temp[12] = 0xFF;
TX_232_temp[13] = 0xFF;
TX_232_temp[14] = RCON;
TX_232_temp[15] = 0xFF;
lenght = 15;
}
E-mail: info@telesys.ru