Введение в лабораторную среду дисциплины, исследование модуля «программируемая задержка», страница 2

Однообразное нажатие клавиши <F10> довольно скоро может утомить. Для этого вместо многократных нажатий <F10> мы нажали один раз клавишу <F1> — анимация. Программа начала выполняться непрерывно с модификацией соответствующих регистров и довольно скоро закончилась, выполнив команду HLT.

4) ЗАДАНИЕ НА САМОСТОЯТЕЛЬНОЕ ИССЛЕДОВАНИЕ

1. Наблюдая процесс выполнения программы в пошаговом режиме, мы записали последовательность изменения PC и связанные с ним изменения регистровой пары BC.

2. Наблюдая процесс выполнения программы в пошаговом режиме, обратили внимание на перемещения курсора в поле правее регистра PC.

3. Наблюдая процесс выполнения программы в пошаговом режиме, обратили внимание на перемещения курсора в поле правее регистровой пары BC.

4. Наблюдая процесс выполнения программы в пошаговом режиме, обратили внимание выполнение пары команд XTHL в теле внутреннего цик-ла.

5. Наблюдая процесс выполнения программы в пошаговом режиме, обратили внимание состояние флаговых регистров.

1.6. ИЗМЕРЕНИЕ ВРЕМЕНИ ЗАДЕРЖКИ:

Прикладное значение модуля Delay — программируемая задержка. Величину этой задержки необходимо проверить. Это делается путем счета числа тактов выполнения модуля с последующим умножением на длительность одного такта. Для разрешения работы программного счетчика циклов (фактически счетчик отладчика считает машинные такты) мы выполнили следующее:

1. Вернули программу в исходное состояние. Для этого :

• обратились в меню отладчика;

• выбрали раздел "RESET", затем нажали <Enter>;

• выбрали подраздел CPU и вновь <Enter>.

• Программный счетчик перешел в состояние PC = 0000h.

2)Разрешили программный счетчик циклов отладчика (см. метку 5 на рис. 6). Для этого : выбрали раздел "SET" в меню отладчика и нажали <Enter>; далее нашли подраздел "cYcle" и нажали <Enter>. Счетчик циклов активизировался и перешел в состояние 0.

1.6.1. ЗАПУСК ПРОГРАММЫ В РЕЖИМЕ АНИМАЦИИ:

Запуск программы в режиме анимации привел в действие счетчик отладчика, но не дал требуемого результата, потому что при выполнении команды HLT программный счетчик микропроцессора перестает изменяться, но счетчик циклов отладчика  продолжает счет. Это приводит к неверному результату, зависящему от момента нажатия на клавишу <F1> для остановки режима анимации. Счетчик циклов отладчика необходимо остановить автоматически, как только завершится подпрограмма Delay. Для этого мы установили точку останова программы.

1.6.2. ЗАПУСК ПРОГРАММЫ С ТОЧКОЙ ОСТАНОВА:

Точки останова программы выполняли следующим образом:

• Выполнили сброс МП: RESET | CPU.

• С помощью клавиш <F4> и <F2> переместили курсор bkpt (в виде тре-угольника, острием к коду программы) по окну дизассемблированного кода программы вниз или вверх.

• Установив курсор bkpt на инструкции HLT,  зафиксировали его положение нажатием клавиши <F3>. При этом вид курсора изменился. Зафиксированная точка bkpt изображается теперь как стрелочка в строке программы.

Запустив программу в режиме анимации <F1>. В поле Cycles мы получили время выполнения модуля в машинных тактах . Не забудьте про команду "RESET" для CPU и очистку счетчика Cycles!

Повторно ввели точку останова. Время программируемой задержки мы определили, умножив полученное значение счетчика циклов на 0.5 мкс (для Fclk = 2 МГц) и на 16. Это должно быть значение, близкое к 80 000 мкс.У нас получилось : 9930*0,5*16=79440.

1.6.3. ТОЧНОЕ ЗНАЧЕНИЕ ПРОГРАММНОЙ ЗАДЕРЖКИ:

Проверить точное значение задержки для рабочего варианта программы (длительность задержки равна 5 мс * (C)) можно, изменив значение регистра B в исходном тексте с 0dh на 0d9h.У нас получилось 10074*0,5*16=80592

1.7. РЕДАКТИРОВАНИЕ ТЕКСТА ПРОГРАММЫ

Для внесения указанных изменений в текст мы: 1. Вышли из отладчика — <Ctrl+C>, <Q>, <E>.

2. Перешли в окно с исходным текстом программы.

3. Выполнили в тексте модуля ex5_p0.A85 изменения и сохранили текст.

4. Произвели трансляцию модуля.

5. Осуществили компоновку модуля.

6. Запустили отладчик для повторного исполнения программы.

7. Установили точку останова (как описано ранее).

8. Активизировали и/или обнулили счетчик циклов и запустили модуль - <F1>.

1.7.1. ЗАДАНИЕ НА САМОСТОЯТЕЛЬНОЕ ИССЛЕДОВАНИЕ

1. Выполнили расчет точного значения программной задержки модуля. Вычислили полученную точность.

2. Повторили раздел 1.6.4, но для значения регистра C=5. Вычислили полученное значение задержки. Оценили точность формирования задержки.

3. Представили время задержки в виде выражения с параметрами (С) и (B).

4. Предложили варианты повышения точности программирования задержки.

5. Выполнили расчет и загрузили новые значения параметров ПП Delay для следующих значений временной задержки

Вариант

Задержка (мкс)

1

5 080

2

240 002

3

50 104

4

20 512

5

51 300

6

4654

7

63800


11. Как задается физическая граница файла исходного текста для ас- семблерных программ?

RAM     EQU     0800H   ; РАСПОЛОЖЕНИЕ ПАМЯТИ ТИПА RAM

ROM     EQU     0000H   ; РАСПОЛОЖЕНИЕ ПАМЯТИ ТИПА ROM

LEN_RAM EQU     0100H   ; РАЗМЕР ПАМЯТИ ТИПА RAM

5. Укажите расположение файлов архивов лабораторной среды

e:\Мои программы\протеус\

c:\stdproVS\

13. Найти все вхождения в исходный текст строки с командой RET.

10

3. Укажите единицы измерения, использованные при вычислении дли- тельности  функционирования ПП Delay.

Прикладное значение модуля Delay — программируемая задержка. Величину этой задержки необходимо проверить. Это делается путем счета числа тактов выполнения модуля с последующим умножением на длительность одного такта.