ми00H; наступна команда записується по нульовому адресуWORK; перехід до підпрограми налаштування таймер-лічильника
; та системи переривань
; 0BH; наступна команда записується за адресою 0BH
; TIMER0; перехід до підпрограми обробки переривання
; від таймера-лічильника 0
; 100H; наступна команда записується за адресою 100H
;:; настройка таймер-лічильника та системи прериванійTR0TR1; зупинка таймеровIP, # 0; встановлюємо всі пріоритети нізкіміIE, # 0; заборона всіх переривань
MOV TMOD, # 00000001B
MOV DPTR, # 65535
MOV TL0, DPLTH0, DPH; поміщаємо в таймер число 65536-CHISLO1ET0; дозвіл переривань на ET0EA; глобальне дозвіл прериванійTR0; старт таймера 0
;
; $; Організація нескінченного циклу
;
;:; підпрограма обробки прериваніяTR0; зупинка таймераEA; зупинка прериванійPSWACC; збереження змінюються регістрів в стекеDPLDPH
MOVC A, @ A + DPTR; Передача даних з пам'яті программA, # 07H; Занулення всіх розрядів після третьегоR7, A; Запис в один з регістрів значення отриманого з датчика ХоллаIZMVIHODA; перехід в підпрограму формування вихідних величин
MOV DPTR, # CHISLOTL0, DPL
MOV TH0, DPH; поміщаємо в таймер число 65536-CHISLO1
POP DPHDPLACC
POP PSW; послідовне відновлення регістрів з стекаEA; дозволяємо прериваніяTR0; старт таймера 0; вихід з підпрограми системи переривання
;
;:; підпрограма формування значень на U, W, Q виходах залежно
; від даного значення последовательностіVOZV; перехід в підпрограму передачі вхідного значення в аккумуляторA, # 05VIH1; якщо частина послідовності не перша, то перехід до наступної перевірки
; значення последовательностіVOZV; перехід в підпрограму передачі вхідного значення в аккумуляторA, # 01VIH2; якщо частина послідовності не друга, то перехід до наступної перевірки
; значення последовательностіVOZV; перехід в підпрограму передачі вхідного значення в аккумуляторA, # 03VIH3; якщо частина послідовності не тре, то перехід до наступної перевірки
; значення последовательностіVOZV; перехід в підпрограму передачі вхідного значення в аккумуляторA, # 02VIH4; якщо частина послідовності не четвертою, то перехід до наступної перевірки
; значення последовательностіVOZV; перехід в підпрограму передачі вхідного значення в аккумуляторA, # 06VIH5; якщо частина послідовності НЕ п'ята, то перехід на шосту частину
; последовательностіVIH6: P1, # 00001001B; формування значень на виході для першої частини
; последовательностіVIH7; перехід на мітку виходу з підпрограми: P1, # 00100001B; формування значень на виході для другої частини
; последовательностіVIH7; перехід на мітку виходу з підпрограми: P1, # 00100100B; формування значень на виході для третьої частини
; последовательностіVIH7; перехід на мітку виходу з підпрограми: P1, # 00000110B; формування значень на виході для четвертої частини