20 0810 E6 0A ani kod
21 0812 CA 0C 08 jz reset
22 0815 0D dcr c
23 0816 C2 0E 08 jnz vvod
24 0819 DB 82 in portc
25 ;запоминание нажатой клавиши
26 081B 21 A9 08 lxi h,klav
27 081E 77 mov m,a
28 ;защита от дребезга при отпускании
29 081F 0E FE rept: mvi c,povdr
30 0821 DB 82 out: in portc
31 0823 A7 ana a
32 0824 C2 1F 08 jnz rept
33 0827 0D dcr c
34 0828 C2 21 08 jnz out
35 ;конец защиты от дребезга
36 082B CD 4E 08 creg: call reg ;вызов подпрограммы режим
37 082E 7E mov a,m ;при выполнения подпрограммы режим flag устанавливается в 0 или 1 (flag - специально органи
38 ;в данный момент в паре h находится адрес ячейки памяти flag
39 082F A7 ana a ;проверка флага
40 0830 CA 07 08 jz begin ;флаг = 0, переход на начало
41 0833 7A rstr: mov a,d ;флаг = 1,выполняется следующий шаг программы - пересылка текущего (начального) состоя
42 0834 D3 81 out portb ;вывод на индикацию
43 0836 EE 6C xri mask ;смена состояния индикатора на противоположное*
44 0838 57 mov d,a ;пересылка из a в d
45 0839 43 mov b,e ;пересылка из e в b эталона количества секунд
46 083A CD 72 08 crcl: call zader ;* вызов подпрограммы задержки на 1 секунду
47 083D 05 dcr b ;уменьшение количества секунд на единицу
48 083E C2 3A 08 jnz crcl ;отработана задержка на заданное количество секунд?,нет продолжаем отработку задержк
49 0841 3E 00 mvi a,0
50 0843 D3 81 out portb ;погашенные индикаторы
51 0845 CD 72 08 call zader
52 0848 CD 72 08 call zader
53 084B C3 33 08 jmp rstr (зацикливание)
54 ;***подпрограммы***
55 ;подпрограмма режим()
56 084E 21 A9 08 reg: lxi h,klav ;определение нажатой клавиши
57 0851 7E mov a,m ;
58 0852 E6 01 ani 01b ;нажата кл. 0 ?
59 0854 C2 6C 08 jnz off ;да, переход на метку off
60 0857 7E mov a,m ;пересылка кода нажатой клавиши из памяти в аккумулятор
61 0858 21 A8 08 lxi h,flag ;загрузка в пару h адреса ячейки flag
62 085B 36 01 mvi m,1 ;установка флага в 1
63 085D E6 02 ani 010b ;нажата кл. 1?
64 085F C2 67 08 jnz fast ;да, переход на метку fast
65 0862 1E 05 mvi e,5 ;нет, значит загружаем в эталон количества секунд 5
66 0864 C3 71 08 jmp return ;выход
67 0867 1E 02 fast: mvi e,2 ;нажата клавиша 1, эталон количества секунд - 2
68 0869 C3 71 08 jmp return ;выход
69 086C 21 A8 08 off: lxi h,flag ;
70 086F 36 00 mvi m,0 ;установка флага в 0
71 0871 C9 return: ret
72 ;подпрограмма задержки
73 0872 21 1D 85 zader: lxi h,pov ;*
74 0875 DB 82 zader1: in portc ;**
75 0877 E6 0B ani kod1 ;**
76 0879 CA A1 08 jz zader2 ;**
77 087C 0E FE mvi c,povdr ;
78 087E DB 82 vvod1: in portc ;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.