Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Внешние прерывания




Система прерывания.

Программа в с51

Пример.

Адресация к битам в Ассемблере

Доступ к битам в С51

Битовые данные.

 

Алгоритмы логического управления, программные модели конечных автоматов используют битовое кодирование событий и состояний. возможность выполнения операций с битами – уникальная особенность архитектуры MCS51.

 

bit x1,x2; // битовые переменные в поле бит

sbit y1=P1^2; //биты порта P1 (не смешивать с операцией ^ - //исключающее ИЛИ

sbit y2=P1^3;

 

char bdata mem //ячейки сегмента DATA с битовой адресацией

int bdata mem1

sbit y1=mem^0;0 бит ячейки mem

 

y3 bit 11h;прямой адрес в поле 0-7f бит

x1 bit P1.0;бит порта

z2 bit acc.1; бит аккумулятора

 

bseg at 10;абсолютный сегмент битов с10-го адреса

x3: dbit 2; поле из двух бит

 

mem equ 21h;бит-адресуемая ячейка Data

y1: bit mem.0;0 бит ячейки mem

y2: bit mem.1

 

mov c,x2+3; обращение к битам

anl c,y1

mov z1,c

z1=y1&!y2|x1 // вывести вектор значений функции в порт P1

 

#include <reg51.h>

 

char bdata mem //бит-адресуемая переменная

sbit x1=mem^0; //биты двоичного набора

sbit y1=mem^1;

sbit y2=mem^2;

sbit z=P1^0;

 

main()

{

for(mem=0;mem<8;mem++)

{P1<<=1; z= y1&!y2|x1;}

}

 

Задания по разделу

 

1. z=(y1/x1 v y2x2)(/y1 v x2)

2. z= (y1 v /x1)(y2x2 v x1)

3. z=/x1(x2 v /x3) v x1x4

4. z=(x1 v /x2x3)(/x2 v x4)

5. z= /y1 v /y2(y1x1 v /x2)

6. z=(x1 v /x3x4)(/x1 v x2)

7. z=/y1x2 v y2(/x1 v /x2)

8. z=(/x1 v x2)(x1x3 v /x4)

9. z=(x1y1 v /x2y2)(/x2 v y1)

10. z=(/x1 v y1) (x2y2 v /y1)

11. z=y1(/y2 v /y3) v /y1y4

12. z=(y1 v /y2y3)(/y2 v y4)

13. z=/y1 y2 v /x1x2(y1 v /y2)

14. z=x1y1 v /x2(/y2 v /x1)

15. z=(x1 v /x2 v /x3x4)(/x1 v /x4)

Система прерывания ЭВМ обеспечивает контроль “случайных” внутренних и внешних событий.

Схема прерывания фиксирует внешние или внутренние сигналы, обозначающие события, и вызывает подпрограмму принятия решений и их обработки.

В частном случае, внешние сигналы фиксируют события, связанные с завершением асинхронных процессов в периферии и используются при вводе/выводе данных, если они сигнализируют о ее готовности для ввода-вывода.

Например,

- при вводе с клавиатуры – сигналы нажатия клавиш,

- при вводе с аналого-цифровым преобразованием входного сигнала (АЦП)- сигнал завершения преобразования.

Внутренние сигналы и события связаны, например, с завершением или началом временных интервалов, с достижением контрольных точек в программе.

 

 

Внешние события в MCU MCS51 представлены сигналами-запросами прерывания на входных портах P3.2=INT0 и P3.3=INT1.

Таблица 2.1.

 

1 2 3 4 5 6 7

p3.2 /INT0 IT0 IE0 EX0      
p3.3 /INT1 IT1 IE1 EX1     13h

 

1 – входные сигналы прерываний.
2 – тип прерываний IT0=1 – выбирается H/L фронт входного сигнала. Виртуальные внутренние сигналы прерывания или программные прерывания могут быть сформированы программно при выводе в порты P3.2 или P3.1. Тогда изменение состояния контакта схема порта трактуется как внешнее событие.
3 – бит регистра запросов прерываний (IE=1 запрос). Бит сбрасывается при входе в прерываний.
4 – Маска разрешения прерывания (EX0=1 разрешено).
5,6 – Номер (приоритет) прерывания – чем меньше номер, тем выше приоритет.
7 – Адрес-вектор в таблице векторов прерываний в памяти Code.

 

Виртуальные внутренние сигналы прерывания или программные прерывания могут быть сформированы программно при выводе в порты P3.2 или P3.1. Изменение состояния контакта порта можно рассматривать как внешнее событие.

Работа системы прерываний.

1. Если бит маски и бит разрешения прерываний EA равны единице, на регистре запросов аппаратно фиксируются запросы прерывания.

2. В конце текущей команды выбирается наиболее приоритетный запрос и формируется вызов в памяти Code подпрограммы обработки прерывания через вектор прерывания. Выбранный запрос сбрасывается при входе в прерывание.

3. В подпрограмме сохраняется состояние программы (ACC, PSW, регистры), выполняется некоторая функция, восстанавливается состояние и происходит возврат в прерванную программу.

 

Управление прерываниями:

1. Установить маску прерывания и бит разрешения прерываний EA.

2. Выбрать тип прерывания (по спаду H/L или по уровню L) для внешних сигналов INT0, INT1.

3. Сформировать вектор прерывания в таблице векторов по фиксированному адресу – (jmp на программу обработки в Ассемблере).

4. Подготовить программу обработки, которая завершается командой возврата из прерывания reti (в Ассемблере).

5. Основная программа и программа обработки прерываний должны быть смещены в памяти Code на размер таблицы векторов прерывания (в опциях С51 проекта Кейл и в сегментах для Ассемблера).

6. В программе на Ассемблере резервировать Стек для прерываний и подпрограмм (по умолчанию в С51 назначается SP=07).

7. В программе на Ассемблере предусматривается сохранение состояния (контекста) программы и восстановление. Для сохранения и восстановления активных регистров r0-r7 могут быть использованы два варианта – сохранение регистров в Стеке и сохранение переключением регистрового банка.

 

Обращение к подпрограмме в С51

 




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 598; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.