Вычислительная техника и сети в задачах управления качеством. Балабанов П.В - 74 стр.

UptoLike

74
Прерывания от таймера в режиме 2 с автоперезагрузкой могут
происходить не реже чем через t
TF
= 277,778 мкс. Увеличением значе-
ния в регистре THx этот интервал можно только сократить. В соответ-
ствии с заданием к практической работе необходимо обеспечить уве-
личение переменной единиц секунд с интервалом в 1 с. Для осуществ-
ления этой задачи необходимо реализовать программный счётчик пе-
реполнений таймера, максимальное значение которого определяется
интервалом времени t
TF
. Его целесообразно разместить в подпрограм-
ме обработки прерываний.
На рисунке 13.2 представлена блок-схема алгоритма счёта време-
ни с использованием таймера и системы прерываний. Алгоритм состо-
ит из двух непосредственно не связанных частей: подпрограммы обра-
ботки прерываний (рис. 13.2, а) и основной части (рис. 13.2, б). Ин-
кремент счётчика секунд осуществляется в подпрограмме обработки
прерываний, если программный счётчик переполнений таймера (пере-
менная time) превышает максимальное значение. В основной части
программы выполняется только проверка достижения счётчиками се-
кунд, минут и часов максимальных значений и вывод на экран.
В этом алгоритме так же, как и в программе к предыдущей прак-
тической работе, присутствует дополнительная переменная time, обес-
печивающая счёт более мелких единиц времени, чем секунды. Однако
инкремент этой переменной производится не непрерывно, а лишь один
раз в десятки или сотни машинных циклов контроллера. Всё остальное
время микропроцессор может выполнять любую другую работу.
В этом и состоит цель использования системы прерываний.
В языке Си определение функции обработки прерывания выгля-
дит следующим образом.
void <имя функции>(void) interrupt N
{
тело функции
}
Имя функции может быть любым незарезервированным словом
языка Си. Вызывать эту функцию не следует ни в какой части про-
граммы. Она будет выполнена автоматически при возникновении со-
бытия прерывания. По этой же причине функция не возвращает и не
принимает аргументов (тип void). Номер N источника прерывания сов-
падает с номером соответствующего бита в регистре IEN0 масок пре-
рываний (см. табл. 13.3).