/p>
{unsigned char nomer_byte = 0, Vsego_byte = 100;// Vsego_byte поки невідомо
1 unsigned char PREAMBLE = 0xFF, PR = 0, STRT = 6, BCNT = 2, STATUS [2], CHK;
1 unsigned char COM, ADDR;// команда адресу
1 unsigned char PRIEM [10], bit_chetnosti [10];
44 1
1///змінні ЦАП
1 int kod_DAC [4];
47 1 char sdvig = 15;
1 double I_mA [4];
1 int kod_na_1mA = 2048;
1
1
1
1 RST = 0;// reset модем
1
1 COMPILER V9.50a STARTUP 12/27/2012 1:05:46 PAGE 2
56 1/////прийом
57 1
1
1
1 TMOD = 0x20;// 1 таймер в режимі автоперезагрузка
1 TH1 = 232;// швидкість передачі 1200 біт с
1 TR1 = 1;// запуск таймера
63 1
1 while (nomer_byte
65 1 {REN = 1;// дозвіл прийому
2 while (RI == 0) {}
2
2 PRIEM [nomer_byte] = SBUF;
2 bit_chetnosti [nomer_byte] = TB8 ;//дізнаємося біт парності для перевірки
70 2 ACC = PRIEM [nomer_byte] ;//дізнаємося P
2 if (P! = bit_chetnosti [nomer_byte])
72 2 {goto Exit;// помилка, парність
3}
2 RI = 0;
75 2
2 nomer_byte + +;
2 if (nomer_byte == 8)// BCNT
2 {Vsego_byte = 0 +10;// Vsego_byte = PRIEM [8] +10;
79 3 ADDR = PRIEM [6];// дізналися адресу датчика
3 COM = PRIEM [7];// дізналися команду
3}}
1
1 if (PRIEM [9]! = (PRIEM [5] ^ PRIEM [6] ^ PRIEM [7] ^ PRIEM [8]))// перевіряємо контр суму
1 {goto Exit;// невідповідність контр сумі
85 2}
86 1
1 STATUS [0] = 0;// все ок
1 STATUS [1] = 0;
1 REN = 0;// заборона прийому
90 1
1
1///////передачa
1 RTS = 1;// йде передача в модем
94 1 CHK = STRT ^ ADDR ^ COM ^ BCNT ^ STATUS [0] ^ STATUS [1];// контрольна сума = викл-або
1
1
1 TH1 = 232;
98 ...