Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_18_1.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
714.24 Кб
Скачать

Синхронизация работы программ внешним сигналом прерывания

Период дискретизации обычно задается с помощью прерываний.

Синхронизация прерыванием от внешнего сигнала может осуществляться посредством подключения ко входу INT0 импульсного сигнала нужной частоты. Пусть или шаг дискретизации . При тактовой частоте МК машинный цикл составляет 1 мкс. Следовательно, за один интервал дискретизации может быть выполнено приблизительно .

Структура программы

Используемые ресурсы (без регистров управления АЦП):

Сброс флага IE0 выполняется аппаратно при обслуживании прерывания только в том случае, когда прерывание было вызвано по срезу сигнала. Если прерывание было вызвано по уровню сигнала на входе INT0, то сброс флага IE0 должна выполнять программа обслуживания прерывания. Выбираем прерывание по срезу. Поэтому в блоке инициализации в регистр TCON следует записать 01h.

В блоке инициализации в регистр IE следует записать 81h.

;***************************************************

;*Синхронизация внешним сигналом прерывания *

;* Автор: *

;* Дата создания: *

;* Краткое описание алгоритма *

;* Дата модификации: *

;* Цель и суть модификации *

;* Другая информация *

;***************************************************

;

;

CSEG

AT

0

;Абсолютный сегмент кода ;по адресу 0

ljmp

Start_Up

;Первая команда по адресу 0. ;Переход на блок ;инициализации

org

0003h

;Переместить локальный ;счетчик на адрес 0003h. Это ;вектор внешнего прерывания

ljmp

Main

;Переход на подпрограмму ;обслуживания этого ;прерывания

ISEG

AT

60h

;Абсолютный сегмент с ;косвенной адресацией по ;адресу 0060h

Stack:

DS

10h

;Резервируем 16 байтов под ;стек

My_Prog

Segment

Code

;Объявляем перемещаемый ;сегмент с именем My_Prog ;для кода нашей программы

Rseg

My_Prog

;Активизируем этот сегмент

org

30h

;Переместить локальный ;счетчик на адрес 0030h.

Start_Up:

;Начало блока инициализации

mov

SP,

#Stack-1

;Инициализировать указатель ;стека

;запись кода в порты микроконтроллера

;установка режимов работы периферийных устройств

;запись кодов в регистры спецфункций

;чтение исходных данных из ПЗУ

;запись начальных значений в рабочие ячейки

;т.е. конфигурирование микроконтроллера для решения поставленной задачи

setb

IT0

;Определить тип внешнего ;прерывания по входу INT0 по ;срезу

setb

EX0

;Разрешить это прерывание

setb

EA

;Разрешение всех прерываний

Back_Gr:

;конец блока инициализации, начало фоновой задачи

;выполнение фоновой задачи

jmp

Back_Gr

;Бесконечный цикл

; - - -Срочная задача (Подпрограмма обслуживания прерывания) - - - - - - - - - -

Main:

clr

EA

;запретить прерывания

push

PSW

;Сохранение регистров

push

Acc

;(только используемых п/п)

; Команды, необходимые для обслуживания прерывания

pop

Acc

;Восстановление

pop

PSW

;регистров

setb

EA

;разрешить прерывания

reti

;Возврат из прерывания

; - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

END

;Директива завершения ;трансляции