14 ; D- содержит эталон времени до след перемещения, Е - здесь хранится код положения ;щетки,
15 ;H,L - содержит постоянную времени на одну секунду
16 ;
17 porta equ 80h ;адрес индикатора
18 portc equ 82h ;адрес клавиатуры
19 porcrl equ 83h ;адрес порта управления внешними устройствами
20 posvr equ 13067 ;постоянная времени на одну секунду
21 posdr equ 254 ;постоянная времени защиты от дребезга
22 wetka equ 6ch ;код маски для смены положения щетки 01101100
23 org 800h ;стартовый адрес программы в ОЗУ стенда
24 0800 31 00 09 lxi sp,900h ;инициализация указателя стека
25 0803 3E 89 mvi a,89h ;загрузка управляющего байта внешних устройств
26 0805 D3 83 out porcrl ;вывод управляющего байта в порт управления
27 ;***********************НАЧАЛО ПРОГРАММЫ**********************
28 0807 1E 60 vstart: mvi e,60h ; загрузка кода правого положения щёток очистки в Е
29 0809 7B mov a,e ; загрузка кода правого положения щёток очистки в А
30 080A D3 80 out porta ; вывод на индикацию - щётка вправо
31 ;ожидание включения одного из режимов
32 080C 0E FE start: mvi c,posdr ; загрузка постоянной времени дребезга в регистр C
33 080E DB 82 drin: in portc ; опрос клавиатуры
34 0810 E6 0C ani 0Ch ; накладывается маска 00001100 - нажаты клавиши включения ;одного из режимов режимов ?
35 0812 CA 0C 08 jz start ;ничего нужного не нажато, переход на начало
36 0815 0D dcr c ;нажата нужная клавиша, уменьшение счетчика повторов при защите от дребезга
37 0816 C2 0E 08 jnz drin ; дребезг еще не окончен, снова опрос клавиатуры
38 ;дребезг при нажатии окончен - сохранение кода нажатой клавиши в памяти
39 0819 DB 82 in portc ; чтение кода нажатой клавиши
40 081B 21 C3 08 lxi h,klav ; занесение в пару h адреса ячейки памяти, в которой ;необходимо сохранить код клавиши
41 081E 77 mov m,a ; сохранение кода клавиши в ячейку памяти адрес которой ;находится в паре h
42 ; защита от дребезга при отпускании клавиши
43 081F 0E FE drout1: mvi c,posdr ; загрузка постоянной времени дребезга в регистр C
44 0821 DB 82 drout2: in portc ; опрос клавиатуры
45 0823 E6 0C ani 0Ch ; накладывается маска 00001100 - нажаты клавиши включения ;одного из режимов режимов ?
46 0825 C2 1F 08 jnz drout1 ; что-то нужное нажато, переход на начало защиты от дребезга ;при отпускании кл
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.