- •6.050901 «Радіотехніка»
- •6.170102 «Системи технічного захисту інформації»
- •Изучение основных характеристик логических элементов основных типов
- •1. Методические указания к лабораторной работе
- •1.1. Исследование статических характеристик логических элементов
- •1.2. Исследование динамических характеристик логических элементов
- •2. Содержание отчета
- •3. Приложение
- •3.1. Описание учебно-лабораторного стенда “logic”
- •3.2. Описание микросхем, входящих в состав стенда и используемых для снятия переходной характеристики
- •3.3. Описание микросхем, используемых для снятия динамических характеристик
- •Двухвходового элемента и-не
- •Исследование базовых логических элементов и их комбинаций
- •1. Методические указания к лабораторной работе
- •1.1. Исследование базовых логических элементов
- •2. Содержание отчета
- •Синтез комбинационных схем с одним выходом
- •1. Методические указания к лабораторной работе
- •1.1. Исследование базовых логических элементов
- •2. Содержание отчета
- •3. Приложение.
- •3.1. Варианты заданий для выполнения лабораторной работы
- •Исследование триггеров
- •1. Методические указания к лабораторной работе
- •1.1. Исследование r-s триггеров
- •1.1.1. Исследование асинхронного r-s триггера
- •1.1.2. Исследование синхронного r-s триггера
- •1.1.3. Исследование r-s триггеров r, s и e типов
- •1.2. Исследование d-триггеров
- •1.2.1. Исследование d – триггера со статическим управлением
- •1.2.2. Исследование d – триггера с динамическим управлением
- •1.3. Исследование т-триггера
- •1.4. Исследование универсального j-k триггера
- •2. Содержание отчета
- •3. Приложение
- •Исследование двоичных счетчиков
- •1. Методические указания к лабораторной работе
- •1.1. Счетчики
- •1.2. Синтез синхронных счетчиков
- •1.2.1. Синтез цепей возбуждения
- •Матрица переходов j-k триггера
- •1.2.2. Синтез цепи переноса в следующие разряды
- •1.3. Динамические параметры счетчиков
- •2.Порядок выполнения работы
- •3. Отчет по работе.
- •Исследование регистров
- •1. Методические указания к лабораторной работе
- •1.1. Регистры
- •1.1.1. Регистры сдвига
- •1.1.2. Регистр сдвига на один разряд
- •1.1.3. Регистр сдвига на k разрядов
- •1.1.4. Реверсивные регистры сдвига
- •1.1.5. Параллельный ввод информации в регистрах сдвига
- •1.1.6. Регистры с обратными связями
- •1. 2. Проектирование многофункциональных регистров
- •1.3. Проектирование комбинационной схемы
- •1.4. Динамические параметры регистров
- •2. Порядок выполнения работы
- •3. Отчет по работе.
- •Состязания сигналов в цифровых схемах
- •1. Краткие теоретические сведения
- •2. Состязания в комбинационных схемах
- •2.1. Статические и динамические состязания сигналов
- •2.2. Синтез схем, свободных от статических состязаний
- •Статического состязания сигналов
- •2.3. Функциональные и логические состязания сигналов
- •На выходе схемы может появиться ложный импульс.
- •2.4. Синтез схем, свободных от логических состязании
- •2.5. Анализ комбинационных схем с целью выявления состязаний
- •3. Состязания сигналов в последовательностных схемах
- •4. Условия надежного функционирования асинхронной схемы
- •4.1. Критические состязания
- •4.2. Существенные состязания
- •5. Порядок выполнения работы
- •6. Отчет по работе должен содержать:
- •Изучение стенда, команд микроконтроллеров семейства mcs-51
- •1. Цель работы
- •2. Приборы и оборудование
- •3. Краткие теоретические сведения
- •3.1.Организация памяти и функционирование микроконтроллера
- •3.2. Запись исходного текста программы на языке программирования asm-51
- •3.3. Встроенные имена
- •3.4. Определяемые имена
- •3.5 Числа
- •3.6. Группа команд пересылки данных
- •3.7. Группа логических команд
- •3.8. Группа арифметических команд
- •3.9. Группа команд управления
- •3.10. Директивы ассемблера asm-51
- •4. Пример выполнения работы
- •5. Задание на выполнение работы.
- •6. Отчет по работе.
- •Изучение программирования встроенных таймеров микроконтроллера mcs-51
- •1. Краткие теоретические сведения
- •1.1. Режим 0
- •1.2. Режим 1
- •1.3. Режим 2
- •1.4. Режим 3
- •1.5. Управление таймерами-счётчиками.
- •1.7. Использование таймера в качестве частотомера.
- •2. Пример выполнения работы
- •1. Краткие теоретические сведения
- •1.1. Регистр приоритетов прерываний
- •1.2. Регистр разрешения прерываний
- •1.3. Начальные адреса прерываний
- •2. Задание на выполнение работы.
- •3. Отчет по работе.
- •Изучение способов программирования преобразования в двоично-десяичный код и программирования прерываний таймеров микроконтроллера mcs-51
- •1. Краткие теоретические сведения
- •Структура регистра ie
- •Адреса векторов прерывания
- •Регистр приоритетов прерываний
- •2. Пример выполнения работы
- •3. Задание на выполнение работы.
- •4. Отчет по работе.
- •Изучение способов построения аналого-цифровых преобразователей с использованием микроконтроллера mcs-51
- •1. Краткие теоретические сведения
- •2. Пример выполнения работы
- •3. Задание на выполнение работы.
- •4. Отчет по работе.
1.1. Регистр приоритетов прерываний
В микроконтроллере имеется специальный регистр приоритетов прерываний IP, доступ к которому осуществляется программно.
Таблица 10.2
-
IP.7
IP.6
IP.5
IP.4
IP.3
IP.2
IP.1
IP.0
X
X
X
PSP
PTI
PXI
PT0
PX0
Здесь:
PX0 – приоритет прерывания от внешнего входа INT0;
PT0 - приоритет прерывания от таймера Т0;
PXI - приоритет прерывания от внешнего входа INT1;
PTI - приоритет прерывания от таймера Т1;
PSP - приоритет прерывания от последовательного порта;
X – не используется;
Наличие «1» в сотов. бите обеспечивает высокий приоритет соответствующего события (первоочередность обслуживания), а наличие «0» - низкий.
В случае одинакового приоритета, при появлении соответствующих флагов, прерывания обслуживаются в следующей последовательности:
IE0 -> TF0 -> IE1 -> TF1 -> (TI+RI).
Установка флагов производится в конце машинного цикла, а их опрос – в начале следующего.
1.2. Регистр разрешения прерываний
В микроконтроллере имеется также регистр разрешения прерываний IE.
Таблица 10.3
-
IE.7
IE.6
IE.5
IE.4
IE.3
IE.2
IE.1
IE.0
EA
X
X
ES
ET1
EX1
ET0
EX0
ЕА – глобальное разрешение / запрещение прерываний;
ES – управление прерыванием от последовательного порта;
ET1 – управление прерыванием от таймера Т1;
EX1 – управление прерыванием от входа INT1;
ET0 – управление прерыванием от таймера Т0;
EX0 – управление прерыванием от входа INT0;
Установка в «1» сотов. бита разрешает прерывание, а в «0» - запрещает.
В о внутренней программной памяти микроконтроллера для реализации процедур прерывания выделено специальное адресное пространство, как это показано на рис. 10.1.
Рис. 10.1. Структура памяти программ микроконтроллеров MCS-51
1.3. Начальные адреса прерываний
Если возникает событие, соответствующее прерыванию, как было описано ранее, при наличии соответствующего разрешения в регистре IE, в не зависимости от выполняемых действий, с окончанием очередного машинного цикла микроконтроллер записывает в программный счетчик начальный адрес программной памяти, называемый вектором прерывания, соответствующей тому или иному прерыванию в соответствии с табл. 10.4:
Таблица 10.4
Источник прерывания |
Адрес (вектор) |
Вн. прерывание INT0 |
0003h |
Переполнение Т0 |
000Bh |
Вн. прерывание INT1 |
0013h |
Переполнение Т1 |
001Bh |
Вн. прерывание INT0 |
0023h |
При программировании области прерываний необходимо проявлять особую внимательность, т. к. указанные области адресов доступны и для основной программы, поэтому при неправильном формировании инструкций для ассемблера, осуществляющего преобразование исходного текста программы в машинные коды возможно наложение адресных пространств и, соответственно неправильная работа микроконтроллера. Следует отметить, что специальные области векторов прерываний имеют небольшой объем – всего лишь 16 байт, поэтому при написании достаточно сложных подпрограмм обработки прерываний внутри специальных областей обычно используют команду абсолютного перехода ljmp , позволяющую разместить основную часть программы обработки прерывания в основной области памяти.
При переходе к подпрограмме обработки прерываний содержимое основных регистров необходимо сохранять в стеке командой push с последующим восстановлением командой pор. Возврат из подпрограммы обработки прерываний осуществляется командой reti.
Листинг программы, написанной на Ассемблере, позволяющей производить счет нажатий кнопки SW15 стенда и отображение числа на двух правых знакоместах динамического индикатора HL2 приведен ниже.
В этой программе программирование прерываний от кнопки осуществляется путем использования инструкции для Ассемблера .ORG 0003h с помощью которой указывается начальный адрес вектора прерывания. Для осуществления перекодировки двоичного кода числа нажатий в семи сегментный подпрограмма формирует специальный массив данных – таблицу перекодировки, суть которой должна быть понятна из листинга. При этом используется инструкция .db. Собственно перекодировка осуществляется путем использования режима косвенной адресации.
Динамическая индикация осуществляется циклически путем одновременной подачи семисегментного кода на параллельно соединенные сегменты индикаторов и напряжения лог. «0» на катоды сотов. разрядов, выдержки этого состояния в течении 20 мс затем выполнения этой процедуры для следующего разряда.
Для исключения срабатывания прерывания несколько раз во время одного нажатия, введена временная задержка на 200 мс во время прерывания.
;*******ЛАБОРАТОРНАЯ РАБОТА 10*************
;*****Программа изучения прерываний*********
; Производится динамическая индикация числа
; хранящегося в регистре R1 в двух правых разрядах
; индикатора стенда HL2
; при нажатии кнопки значение регистра R1 увеличивается на 1
; составил А. Н. Алаев
; ********************************************************
.ORG 0 ; установка указателя сч команд для ассемблера на 0
ljmp ind ; безусловный переход на ПП индикации ind
.ORG 0003h ; установка указателя сч. для ассемблера на вектор прерывания
; от кнопки SW15 стенда
ljmp schet ; безусловный перход на ПП обработки прерывания
ind: ; основная подпрограмма динамической индикации
setb IE.0 ; разрешение прерываний от кнопки
ind1: clr IE.7 ; глобальный запрет прерываний
mov A,R1 ; пересылка в акк. индицируемого числа
anl A,#00001111b ;обнуление старшей тетрады (поготовка инд. младшей)
call decod ; вызов подпрограммы преобразования в семисегм код
; мл тетрады
mov R2,A ; запоминание преобразованного результата в R2
mov DPTR,#8001h ; устанавливаем в DPTR адрес регистра сегм дин. индикатора
mov A,#00h ; обнуление акк.
movx @DPTR,A ; гашение всех сегментов
mov DPTR,#8002h ; устанавливаем в DPTR адреса регистра анодов дин. индикатора
mov A,#00000011b ; запись кода дешифр. включения крайнего правого разр. инд.
movx @DPTR,A ; включение крайнего правого разряда инд.
mov A,R2 ; пересылка семисегм. кода правой цифры
mov DPTR,#8001h ; устанавливаем в DPTR адрес регистра сегм дин. индикатора
movx @DPTR,A ; высвечивание левой цифры
call delay ; вызов подпрограммы задержки на 50 мс
mov A,R1 ; пересылка в акк. индицируемого числа
anl A,#11110000b ;обнуление младшей тетрады (поготовка инд. старшей)
swap A
call decod ; вызов подпрограммы преобразования в семисегм код
; ст тетрады
mov R2,A ; запоминание преобразованного результата в R2
mov DPTR,#8001h ; устанавливаем в DPTR адрес регистра сегм дин. индикатора
mov A,#00h ; обнуление акк.
movx @DPTR,A ; гашение всех сегментов
mov DPTR,#8002h ; устанавливаем в DPTR адреса регистра анодов дин. индикатора
mov A,#00000010b ; запись кода дешифр. включения вторго справа разр. инд.
movx @DPTR,A ; включение крайнего второго справа разряда инд.
mov A,R2 ; пересылка семисегм. кода левой цифры
mov DPTR,#8001h ; устанавливаем в DPTR адрес регистра сегм дин. индикатора
movx @DPTR,A ; высвечивание левой цифры
setb IE.0 ; разрешили прерывание от кнопки после вывода на инд.
call delay ; вызов ПП задержки на 20 мс
sjmp ind1 ; абсолютный переход на начало программы
;*************************************************************************
;ПОДПРОГРАММА ПРЕОБРАЗОВАНИЯ ЧИСЛА В СЕМИСЕГМЕНТНЫЙ КОД
;*************************************************************************
decod: ; ПП преобразования числа в семисегмемтный код
mov DPTR,#tablecod ; занесение в DPTR начального адреса массива таблицы ниже
movc A,@A+DPTR ; пересылка в акк. преобр. в семисегм. код числа
; ранее хранившегося в акк.
ret
;*****************************************************************
tablecod: ; формирование массива для преобразования двоичного кода
; в семисегментный
; PGFEDCBA -сегм.
.db 00111111b ; 0h числа
.db 00000110b ; 1h
.db 01011011b ; 2h
.db 01001111b ; 3h
.db 01100110b ; 4h
.db 01101101b ; 5h
.db 01111101b ; 6h
.db 00000111b ; 7h
.db 01111111b ; 8h
.db 01101111b ; 9h
.db 01110111b ; Ah
.db 01111100b ; Bh
.db 00111001b ; Ch
.db 01011110b ; Dh
.db 01111001b ; Eh
.db 01110001b ; Fh
;****************************************************************
;**************************************************************
;ПОДПРОГРАММА ЗАДЕРЖКИ НА 10 мс
;****************************************************************
delay:
clr IE.7 ; запрет прерываний
clr tcon.4 ; остановка таймера Т0
mov TL0,#<(.not.(10000)) ;запись в мл. регистр Т0 начального условия
;мл. байт дополняющего кода числа 10000
mov TH0,#>(.not.(10000)) ;запись в ст. регистр Т0 начального условия
;ст. байт дополняющего кода числа 10000
mov TMOD,#00000001b ;запретить упр. Т0 от вн. вывода, уст. Т0 в 16-ти разр режим
setb tcon.4 ; запуск счета таймера
jnb TF0,$ ; ожидание переполнения счетчиков таймера Т0 через 50 мс по флагу
clr TF0 ; сброс флага
clr tcon.4 ; останов таймера
setb IE.7 ; разрешили прерывание от кнопки после вывода на инд.
Ret
;********************************************************************
;****************************************************************
; ПОДПРОГРАММА ОБРАБОТКИ ПРЕРЫВАНИЙ
;******************************************************************
schet:
clr IE.7 ; глобальный запрет прерываний
push DPTR ; сохранение в стеке DPTR
push PSW ; сохранение в стеке PSW
push ACC ; сохранение в стеке аккумулятора
inc R1 ; прибавление '1'к содерж. рабоч. рег.
; т. к. кнопка была нажата
mov r7,#50 ; * формирование задержки
d1: call delay ; * на
djnz r7,d1 ; * 500 мс
pop ACC ; пересылка из стека в аккумулятор
pop PSW ; пересылка из стека PSW
pop DPTR ; DPTR
setb IE.7 ;глобальное разрешение прерываний
reti
;*********************************************************************