20 kodkl2 equ 04h ; код, соответствующий нажатию клавиши 2
21 time equ 36393 ; переменная, определяющая задержку в 1 сек.
22 ;
23 org 800h ; стартовый адрес программы в ОЗУ стенда
24 ;!!!---------------------инициализация----------------------------------------!!!
25 ;
26 0800 31 00 09 lxi sp,900h ; инициализация указателя стека
27 0803 3E 89 mvi a,89h ; загрузка управляющего байта внешних устройств
28 0805 D3 83 out porcrl ; вывод управляющего байта в порт управления
29 0807 3E 60 circl: mvi a,60h
30 0809 D3 80 out porta ; вывод дворника на индикацию (исходное состояние)
31 080B 16 60 mvi d,60h
32 ;
33 ;!!!-----------------------------------ввод----------------------------------!!!
34 ;
35 080D 0E FA tuki: mvi c,povdr ; загрузка количества повторов при защите от дребезга
36 080F DB 82 povt: in portc ; опрос клавиатуры
37 0811 E6 15 ani kodkl ; нажата клавиша 0 или 2 или 4?
38 0813 CA 0D 08 jz tuki ; ничего не нажато
39 ; защита от дребезга при нажатии
40 0816 0D dcr c ; да, нажато, уменьшение счетчика повторов при защ. от дребезга
41 0817 C2 0F 08 jnz povt ; дребезг еще не окончен
42 ; дребезг при нажатии окончен
43 ; сохранение кода нажатой клавиши
44 081A DB 82 in portc ; чтение кода нажатой клавиши
45 081C 5F mov e,a ; сохранение аккумулятора
46 081D 0E FA reset1: mvi c,povdr ; ожидание отпускания клавиши
47 081F DB 82 povt1: in portc ; опрос клавиатуры
48 0821 A7 ana a ; ни одна клавиша не нажата ?
49 0822 C2 1D 08 jnz reset1 ; нет, что-то нажато
50 ; защита от дребезга при отпускании клавиши
51 0825 0D dcr c ; ничего не нажато, уменьшение счетчика при защите от дребезга
52 0826 C2 1F 08 jnz povt1 ; дребезг еще не окончен
53 0829 7B mov a,e ; сохранение аккумулятора
54 ;
55 ;!!!-------------------------------------анализ нажатой клавиши--------------!!!
56 082A FE 10 cpi kodkl4 ; нажата клавиша 4?
57 082C C2 32 08 jnz dalee ; если клавиша 4 не нажата, то dalee
58 082F C3 80 08 jmp moika ; 4 нажата, включаем или отключаем стеклоомыватель
59 0832 FE 01 dalee: cpi kodkl0 ; нажата клавиша 0?
60 0834 C2 3A 08 jnz set ; если клавиша 0 не нажата, то 2
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.