SHLD PUST ;(**16)
SHLD PUST ;(**16)
SHLD PUST ;(**16)
DCX H ;(**5)уменьшение на 1 постоянной времени
MOV A,H ;(**5)проверка на =0 содержимого рег. пары
ORA L ;(**4)
JNZ ZADER1 ;(**10)нет, пост времени еще не равна 0
RET ;(*10)возврат из подпрограммы задержки
KLAV: DB 0 ;ячейка памяти, в кот. хранится код нажатой кл.
RAB: DB 0 ;текущее состояние: ”0”-стоит,“1”-работает
REJIM: DB 0 ;режим работы: “0”-клавиша 4,”1”-клавиша 3
PUST: DB 0 ;ячейка памяти
DB 0
END
3. Расчет временной задержки.
Составим уравнение Од + Мн * Pov = 2220000
где Од - суммарное количество тактов команд, выполняющихся однократно при формировании временной задержки (помечены знаком *)
Мн - суммарное количество тактов команд, выполняющихся в цикле (помечены знаком **)
Pov- количество повторений цикла
2220000 - количество тактов в 1 секунде (для тактовой частоты 2,22МГц)
Од = 17+10+10=37 тактов
Мн = 10+7+10+5+5+4+10=51 такт
Pvs = (2220000-Од)/Мн
Pvs=(2220000-37)/51= 43528,68627
В качестве Pov берется целое число проходов 43528.
4. Листинг программы.
Кросс-ассемблер 80/85 ### Файл листинга reclama.lst
Входной файл > reclama.asm
Объектный файл > reclama.obj
1 проход
2 проход
1 PORTB EQU 81H
2 PORTA EQU 80H
3 PORTC EQU 82H
4 PORCRL EQU 83H
5 PVS EQU 39
6 PVSD EQU 25
7 KODKL EQU 25
8 KODKL1 EQU 26
9 ;---------------------------------
10 ORG 800H
11 0800 31 70 09 LXI SP,970H
12 0803 3E 89 MVI A,89H
13 0805 D3 83 OUT PORCRL
14 0807 1E 00 MVI E,0
15 0809 0E 19 ASDF: MVI C,PVSD
16 080B DB 82 EFJ: IN PORTC
17 080D E6 19 ANI KODKL
18 080F CA 09 08 JZ ASDF
19 0812 0D ZXC: DCR C
20 0813 C2 0B 08 JNZ EFJ
21 0816 DB 82 IN PORTC
22 0818 21 44 09 LXI H,KLAV
23 081B 77 MOV M,A
24 081C 0E 19 OTPSK: MVI C,PVSD
25 081E DB 82 QWE: IN PORTC
26 0820 A7 ANA A
27 0821 C2 1C 08 JNZ OTPSK
28 0824 0D DCR C
29 0825 C2 1E 08 JNZ QWE
30 0828 21 44 09 LXI H,KLAV
31 082B 7E MOV A,M
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.