Ун-ту, 1997. - 108 с. p> Токхайм Р. Мікропроцесори: Курс і вправи/Пер. З англ., Під ред. В. Н. Грасевіча. - М.: Вища школа, 1988. - 336 с. p> Додаток А  
  Лістинг керуючої програми 
   Основна програма: 
   ORG 00H; початковий адресу програми 
  CLR A; очищення акумулятора 
 ; початкова завантаження лічильника годин 
  MOV R5, A; початкова завантаження 
  MOV R7, A; лічильника хвилин 
  MOV P2, A; початкова завантаження лічильника секунд 
  MOV R2, # 1; завантаження 
  MOV R1, # 1; лічильників генератора 
  MOV TH1, # 156; секундних імпульсів 
  MOV TMOD, # 20H; T/C1 в режимі 2 
  MOV IE, # 8DH; дозвіл переривань від T/C1 
  SETB TR1; старт таймера T/C1 
  SJMP MAIN; Перехід до основної програми 
 ; ----- ====== П/п обслуговування переривання від T/C1 ===== -------- 
  ORG 1BH; вектор переривання 
  PUSH PSW; затримка 
  DJNZ R2, EXIT; в одну 
  MOV R2, # 1; секунду 
  DJNZ R1, EXIT; 
  MOV R1, # 1; 
  PUSH ACC; 
  JNB T0, M1; корекція хвилин 
  JNB T1, M2; корекція годин 
  MOV A, R7; лічильник секунд 
  ADD A, # 1; 
  DA A; 
  MOV R7, A; 
  CJNE R7, # 60H, M3; 
  MOV R7, # 0; 
  M1: MOV A, R5; лічильник хвилин 
  ADD A, # 1; 
  DA A; 
  MOV R5, A; 
  CJNE R5, # 60H, M3; 
  MOV R5, # 0; 
  M2: CALL COMP; Запуск п/п виявлення мах кол-ва а/м. 
  MOV R4, # 0; Обнулення кількості а/м, 
  MOV R6, # 0; проїхали через міст за годину. p> MOV A, R3; Лічильник годин. p> ADD A, # 1; 
  DA A; 
  MOV R3, A; 
  CJNE R3, # 24H, M3; 
  MOV R3, # 0; Установка 0 (24) годин. p> MOV R4, # 0; Обнулення кількості а/м, що проїхали 
  MOV R6, # 0; через міст, з початком нової доби. p> M3: MOV P1, R3; Виведення інформації. p> MOV P2, R5; індикатори. p> POP ACC; Відновлення акумулятора. p> EXIT: POP PSW; Відновлення регістра PSW. p> RETI; Повернення з п/п. 
  ; ----- ======== Основна програма. ======== ---------- p> MAIN: MOV R4, # 0; Обнулення 
  MOV R6, # 0; кількості а/м. 
  MOV P0, # 0FFH; Скидання тригерів 
				
				
				
				
			  SETB RD; Скидання лічильника. p> NOP ; Затримка в 1мкс (для спрацьовування CT) 
  CLR RD; 
  MOV P0, # 0; Відновлення роботи тригерів. p> SETB WR; Імпульс перемикання ліній з датчиків. p> MOV SP, # 100; Установка покажчика стека. p> BEGIN: MOV B, # 4; Кількість датчиків. p> MOV R0, # 1; R0 = 1. 
  CYCLE: CLR WR; Імпульс перемикання ліній з датчиків. p> NOP; Затримка в 1мкс (для спрацьовування CT і MS). 
  JNB INT0, J11; Опитування лінії порту (перевірка стану датчиків). p> MOV P0, R0; Скидання соответсвующего тригера датчика 
  CALL SUM; Виклик п/п сумміпрванія. p> MOV P0, # 0; Відновлення счетнго режиму тригера 
  J11: MOV A, R0; A = R0. p> RL A; Пестановка скидає біта тригерів. p> MOV R0, A; R0 = A. 
  SETB WR; Імпульс перемикання ліній з датчиків. p> DJNZ B, CYCLE; B = B-1. If B <> 0, то перехід на новий цикл 
 ; опитування датчиків. 
  JB INT1, J2; Якщо INT1 = 1, то J2, 
  CALL DSPLY; інакше виклик п/п виведення інф-ції на 
 ; зовнішнє пристрій. 
  J2: SJMP BEGIN; Перехід на початок опитування датчиків. br/> 
; П/п підсумовування кількості минулого транспорту. 
  SUM: MOV A, R6; Підсумовування десятків. p> ADD A, # 1; A = A +1. 
  DA A; Десяткова корекція. p> MOV R6, A; R6 = A. 
  JNC S1; Якщо С <> 1, то S1, 
  MOV A, R4; інакше додати 1 до сотням. p> ADD A, # 1; A = A +1. 
  DA A; Десяткова корекція. p> MOV R4, A; R4 = A. 
  S1: RET; Повернення з п/п. 
  ; ------- ===== П/п порівняння количесва а/м, що пройшли раніше, ====== ----- 
 ; з минулими в цю годину. 
  COMP: MOV A, R0; Збереження R0 
  PUSH ACC; в стек. p> MOV R0, # 20H; Адреса зберігання молодшого байта максимального 
 ; кількостей а/м. 
  MOV A, R6; A = R6. 
  SUBB A, @ R0; A = A-@ R0. p> JC C1; Якщо вміст @ R0> A, то перехід до C1, 
  MOV A, R6; інакше записати 
  MOV @ R0, A; в пам'ять мах. кол-во а/м. 
  C1: INC R0; Збільшення покажчика пам'яті. p> MOV A, R4; A = R4. 
  SUBB A, @ R0; 
  JC C2; 
  MOV A, R4; 
  MOV @ R0, A; 
  INC R0; 
  MOV A, R3; 
  MOV @ R0, A; 
  POP ACC; Відновлення 
  MOV R0, A; R0 з стека. p> C2: RET; Повернення з п/п 
  ; --------- ======= П/П ВИВЕДЕННЯ ДАНИХ НА ВНЕШ. Устр-во ======== -------- 
  DSPLY: MOV R0, # 20H; Початковий адресу даних. p> MOV SBUF, @ R0; Виведення даних ч/з послідовний порт 
  INC R0; Збільшення покажчика пам'яті. p> MOV SBUF, @ R0; 
  INC R0; 
  MOV SBUF, @ R0; 
  INC R0; 
  RET; Повернення з п/п. 
  END 
  Додаток Б 
   Карта прошивки пам'яті програм 
   0: 1: 2: ...