КАТЕГОРИИ: Архитектура-(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 или 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; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |