------------ -------
Signal:; Підпрограма сигналізації помилки
0260 78 28 movR0, # Kol_Pause; висвічуємо сигнал помилки
271 $ Wait:; заданий час
0262 TimeTime_Pause
0262 75 8C 3C movTH0, #> Time_Pause
0265 75 8A B0 movTL0, #
0268 C2 8D clrTF0Nov 20 2011 15:24 Page 6
026A D2 8C setbTR0
026C ENDM
026C 30 8D FD jnbTF0, $
026F D8 F1 djnzR0, $ Wait
0271 C2 8C clrTR0
281 0273 C2 8D clrTF0 ​​p>
0275 22 ret
; = ---------------------------------------- ------
Posl:; процедура відправки байта датчикам
285 0276 E5 25 movA, Data ​​p>
0278 F5 99 movSBUF, A
027A 30 99 FD jnbTI, $
027D C2 99 clrTI
289 027F 22 ret
; = ---------------------------------------- ------
PoslPC:; процедура відправки байта ПК
0280 C0 E0 pushA
0282 53 98 FE anlSCON, # 11111110b; иммитация неприйняття байта
0285 E5 99 movA, SBUF; прийом байта адреси
0287 B4 00 03 cjneA, # Num_PS, $ Ex0; перевірка на відповідність
296 028A 2 лютого 90 jmp $ 0
028D $ Ex0:
028D 2 лютого A7 jmp Ex
0290 $ 0:
0290 C0 20 pushNumDat
0292 75 20 00 movNumDat, # 0
0295 $ M:
0295 E5 20 movA, NumDat; обчислення адреси
304 0297 24 30 addA, # 30h; де зберігаються дані
0299 ​​F8 movR0, A
029A 86 25 movData, @ R0
029C 51 76 callPosl; відправка байт даних з датчиків
308 029E 20 травня incNumDat
02A0 E5 20 movA, NumDat
310 02A2 B4 20 F0 cjneA, # Kol_Byte, $ M; поки не відправимо всі
311 02A5 D0 20 popNumDat
02A7 Ex:
02A7 D0 E0 popA
02A9 22 ret
315; = --------------------------------------- -------
Priem:; процедура прийому байта
02AA 75 25 00 movData, # 0; зупиняємо таймер
02AD $ M:
02AD 30 98 FD jnbRI, $ M
02B0 C2 98 clrRI; якщо датчик відповів
02B2 C2 8C clrTR0; з 1-го разу, заносимо