Читайте также:
|
|
Очевидно, что для генерации пакета импульсов необходимо количество повторений процедуры генерации одного импульса, равное заданному числу импульсов в пакете.Осциллограмма пакета приведена на рис.55.
В начале программы должен быть организован счетчик импульсов в серии загрузкой в регистр значения числа импульсов в серии, заданного таблицей 1. После окончания каждого импульса декрементируется содержимое счетчика и проверяется его значение на нуль. Если его содержимое счетчика не равно нулю, то производится переход на начало формирования следующего импульса.
Рисунок 55
Иначе устанавливается нулевое значение в разряде порта и производится зацикливание команды перехода, т.е. процедура выполнена и далее “делать нечего”.
Пакет импульсов представлен на рис 4.
Пример 7 Примерный текст программы генератора пакета импульсов
.INCLUDE "M16DEF.INC";Включение файла с определением имен регистров
; и битов микроконтроллера ATmega16
.ORG 0;Начало программы с нулевой ячейки ПЗУ
LDI R16, 4;Организация стека в верхней ячейке ОЗУ
OUT SPH, R16;ее адрес для Mega16 - 45F, так как по сбросу
LDI R16, $5F;МК устанавливаются SPH=0 и SPL=o
OUT SPL, R16
SBI DDRD, 1;Настройка разряда порта, в котором
;будут формироваться импульсы, на вывод
LDI R17,М;М - число импульсов в пакете, R17- счетчик
;импульсов
NXT_PERIOD: CBI PORTD, 1;Начало паузы
RCALL T_PAUSE;Вызов подпрограммы длительности паузы
SBI PORTD, 1;Фронт импульса
RCALL T_PULSE; Вызов подпрограммы длительности импульса
DEC R17;Отсчет счетчиком импульса в обратную сторону
BRNE NXT_PERIOD;Если импульс не последний в серии, то повторять
;(если в регистре не 0, то переход по метке)
CBI PORTD, 1;Обнулить разряд после окончания пакета
LOOP_I: RJMP LOOP_I;Бесконечный цикл
T_PAUSE: .; Выбранный вид процедуры
.;с расcчитанными значениями констант
.
RET;Возврат из подпрограммы
T_PULSE:
.;Выбранный вид процедуры
;с расcчитанными значениями констант
.
.
.
RET;Возврат из подпрограммы
Дата добавления: 2015-07-20; просмотров: 224 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Программный способ формирования временных интервалов на языке СИ | | | Генератор заданного числа пакетов импульсов |