книги / Вычислительная техника и информационные технологии. Цифровые автоматы и микроконтролеры. Руководство к лабораторным работам в системе PROTEUS 7.2 SP6
.pdfMOV R0,#1 |
; загрузка 1 в регистр R0 |
MOV P2,R0 |
; вывод R0 в P2 |
JMP NEXT |
|
ORG 0BH |
; адрес вектора прерываний от Т/С0 |
JMP MET |
|
ORG 100H |
; начальный адрес подпрограммы |
MET: MOV A,R0 |
; передача из R0 в А |
RL A |
; сдвиг А влево циклический |
MOV R0,A |
; передача из А в R0 |
MOV P2,A |
; передача из А в P2 |
MOV P2,R0 |
|
MOV TMOD,#00000001B |
; настройка Т/С0 |
MOV TL0,#LOW(NOT(64000–1)) |
; загрузка таймера |
MOV TH0,#HIGH(NOT(64000–1)) |
; загрузка таймера |
SETB TCON.4 |
; старт Т/С0 |
RETI ; выход из подпрограммыобработки прерывания
NEXT:MOV TMOD,#00000001B; первоначальная настройкаТ/С0
MOV TL0,#LOW(NOT(50000–1)); первоначальная
|
загрузкатаймера |
MOV TH0,#HIGH(NOT(50000–1)); первоначальная |
|
|
загрузка таймера |
SETB TCON.4 |
; первоначальный старт Т/С0 |
SETB IE.1 |
; разрешение прерывания от Т/С0 |
NEXT1:JMP NEXT1 |
; переход, петля, ожидание прерывания |
END |
|
На рис. 2.7 проиллюстрирован результат работы программы «бегущая единица» с реализацией временной задержки 64 мс на основе прерываний.
31
Рис. 2.7. Иллюстрация работы программы «бегущая единица» с реализацией временной задержки 64 мс на основе прерываний
2.9. Передача информации по последовательному порту
Управление режимом работы универсального асинхронного приемо-передатчика (УАПП) осуществляется регистром с символическим именем SCON (табл. 2.7):
|
|
|
Таблица 2.7 |
|
|
|
|
№ |
Символ |
Позиция |
Имя и назначение |
7 |
SM0 |
SCON.7 |
Бит управления режимом. |
Устанавливается/сбрасывается программно |
|||
6 |
SM1 |
SCON.6 |
Бит управления режимом. |
Устанавливается/сбрасывается программно |
|||
|
|
|
Бит управления режимом. |
5 |
SM2 |
SCON.5 |
Устанавливается программно для запрета |
приема сообщения, в котором девятый бит |
|||
|
|
|
имеет значение 0 |
|
|
|
Бит разрешения приема. |
4 |
REN |
SCON.4 |
Устанавливается/сбрасывается программно |
для разрешения или запрета приема после- |
|||
|
|
|
довательных данных |
|
|
|
Передача бита 8. |
3 |
TB8 |
SCON.3 |
Устанавливается/сбрасывается программно для |
|
|
|
задания девятого бита в режиме УАПП-9 бит |
|
|
|
32 |
|
|
|
Окончание табл. 2.7 |
№ |
Символ |
Позиция |
Имя и назначение |
|
|
|
Прием бита 8. |
2 |
RB8 |
SCON.2 |
Устанавливается/сбрасывается программ- |
|
|
|
но для фиксации девятого бита, принима- |
|
|
|
емого в режиме УАПП-9 бит |
|
|
|
Флаг прерывания передатчика. Устанав- |
1 |
T1 |
SCON.1 |
ливается аппаратурно при окончании пе- |
редачи байта. Сбрасывается программно |
|||
|
|
|
после обслуживания прерывания |
|
|
|
Флаг прерывания приемника. Устанавли- |
0 |
R1 |
SCON.0 |
вается аппаратурно при окончании прие- |
ма байта. Сбрасывается программно после |
|||
|
|
|
обслуживания прерывания |
Таблица режимов работы УАПП имеет следующий вид
(табл. 2.8).
|
|
|
|
|
|
Таблица 2.8 |
|
|
|
|
|
|
|
SМ0 |
|
SМ1 |
|
Режим работы EFGG |
||
0 |
|
|
0 |
|
Сдвигающий регистр расширения ввода-вывода |
|
0 |
|
|
1 |
|
УАПП-8 бит. Изменяемая скорость передачи |
|
1 |
|
|
0 |
|
УАПП-9 бит. Фиксированная скорость передачи |
|
1 |
|
|
1 |
|
УАПП-9 бит. Изменяемая скорость передачи |
|
|
Таблица регистра управления мощностью (РУМ) имеет |
|||||
следующий вид (табл. 2.9). |
|
|||||
|
|
|
|
|
|
Таблица 2.9 |
|
|
|
|
|
|
|
№ |
|
Символ |
|
Позиция |
Имя и назначение |
|
|
|
|
|
|
|
Удвоенная скорость передачи. |
7 |
|
SMOD |
|
PCON.7 |
Если бит= 1, то скорость передачи |
|
|
|
|
|
|
|
УАПП вдвое больше, чем прибит = 0 |
6 |
|
|
– |
|
PCON.6 |
Не используется |
5 |
|
|
– |
|
PCON.5 |
Не используется |
4 |
|
|
– |
|
PCON.4 |
Не используется |
3 |
|
|
GF1 |
|
PCON.3 |
Флаг, специфицируемый пользова- |
|
|
|
телем (флаг общего назначения) |
|||
|
|
|
|
|
|
|
2 |
|
|
GF0 |
|
PCON.2 |
Флаг, специфицируемый пользова- |
|
|
|
телем (флаг общего назначения) |
|||
|
|
|
|
|
|
|
1 |
|
|
PD |
|
PCON.1 |
Бит пониженной мощности |
0 |
|
|
IDL |
|
PCON.0 |
Бит холостого хода |
|
|
|
|
|
|
33 |
При одновременной записи 1 в PD и IDL бит PD имеет преимущество.
Сброс содержимого регистра управления мощностью осуществляется путем загрузки кода 0ххх0000.
Запись байта в буферный регистр SBUF приводит к автоматической перезаписи его в сдвигающий регистр и инициирует начало передачи.
Наличие буферного регистра позволяет совмещать операцию чтения ранее принятого байта с приемом очередного.
В режиме 0 информация (8 бит) и передается, и принимается через внешний вывод входа приемника RxD. Через внешний вывод выхода передатчика TxD выдаются синхроимпульсы. Частота передачи равна 1/12 частоты резонатора.
Попробуем передать байт из микроконтроллера во внешний регистр в этом режиме (рис. 2.8).
Рис. 2.8. Схема для передачи информации по последовательному порту
34
Регистр 74НС299 – регистр последовательного приема информации. Настроим его на прием с D7. Для этого подключим D7 к линии RxD порта 3, а линию синхроимпульсов ТxD – ко входу CLK регистра. Входы управления S0, S1 настроим для приема с D7: S0 = 0, S1 = 1. Обнулим также управляющие сигналы выдачи информации из регистра: ОЕ1 = 0, ОЕ2 = 0. Напишем программу выдачи байта из контроллера:
BEGIN: |
; передача байта в регистр в режиме 0 |
|
|
P1 EQU 90H |
; определение порта Р1 |
|
P2 EQU 0A0H |
; определение порта Р2 |
|
P0 EQU 80H |
; определение порта Р0 |
|
P3 EQU 0B0H |
; определение порта Р3 |
|
TCON EQU 88H |
; определение TCON |
|
TMOD EQU 89H |
; определение TMOD |
|
IE EQU 0A8H |
; определение IE |
|
TL0 EQU 8AH |
; определение TL0 |
|
TH0 EQU 8CH |
; определение TH0 |
|
PCON EQU 87H |
; определение PCON |
|
SBUF EQU 99H |
; определение SBUF |
|
SCON EQU 98H |
; определение SCON |
|
SMOD EQU 8FH |
; определение бита |
|
|
; удвоеннойскоростипередачи |
|
CLR SCON.7 |
; задание режима 0 |
|
CLR SCON.6 |
; задание режима 0 |
|
CLR SMOD |
; обнуление SMOD |
END |
MOV SBUF,#7 |
; передача байта 7 |
|
|
Проверим работу программы (рис. 2.9).
35
Рис. 2.9. Иллюстрации работы программы передачи данных по последовательному порту
Байт 00000111 выдан.
Попробуем передавать информацию по последовательному порту из контроллера в контроллер.
Программа передачи байта #5: |
|
BEGIN: |
; передача байта в режиме 0 |
P1 EQU 90H |
; определение порта Р1 |
P2 EQU 0A0H |
; определение порта Р2 |
P0 EQU 80H |
; определение порта Р0 |
P3 EQU 0B0H |
; определение порта Р3 |
TCON EQU 88H |
; определение TCON |
TMOD EQU 89H |
; определение TMOD |
IE EQU 0A8H |
; определение IE |
TL0 EQU 8AH |
; определение TL0 |
TH0 EQU 8CH |
; определение TH0 |
PCON EQU 87H |
; определение PCON |
SBUF EQU 99H |
; определение SBUF |
SCON EQU 98H |
; определение SCON |
36 |
|
SMOD EQU 8FH |
; определение бита |
|
|
|
; удвоенной скорости передачи |
CLR SCON.6 |
|
; задание режима 2 |
SETB SCON.7 |
|
; задание режима 2 |
SETB SMOD |
|
; установка SMOD |
NEXT:MOV SBUF,#5 |
|
; передача байта #5 |
END |
|
|
Выберем режим 2, так как он не требует настройки таймеров. |
||
Программа приема: |
|
|
BEGIN: |
|
; передача байта в режиме 1 |
P1 EQU 90H |
|
; определение порта Р1 |
P2 EQU 0A0H |
|
; определение порта Р2 |
P0 EQU 80H |
|
; определение порта Р0 |
P3 EQU 0B0H |
|
; определение порта Р3 |
TCON EQU 88H |
|
; определение TCON |
TMOD EQU 89H ; определение TMOD |
||
IE EQU 0A8H |
|
; определение IE |
TL0 EQU 8AH |
|
; определение TL0 |
TH0 EQU 8CH |
|
; определение TH0 |
PCON EQU 87H |
|
; определение PCON |
SBUF EQU 99H |
|
; определение SBUF |
SCON EQU 98H |
|
; определение SCON |
SMOD EQU 8FH |
; определение бита |
|
|
|
; удвоеннойскорости передачи |
ORG 0 |
|
|
SETB IE.7 |
; разрешение прерываний |
|
SETB IE.4 |
; разрешение прерываний от УАПП |
|
CLR SCON.6 |
; задание режима 2 |
|
SETB SCON.7 |
; задание режима 2 |
|
SETB SMOD |
; установка SMOD |
|
CLR SCON.0 ; сбросфлагапрерыванияприемника |
||
SETB SCON.4 |
; разрешение приема |
|
|
37 |
|
MET:JMP MET |
; петля ожидания приема |
ORG 0023H |
; адрес вектора прерываний от УАПП |
JMP NEXT |
; переход на метку NEXT |
NEXT:MOV P2, SCON |
; выдача SCON для контроля |
MOV P1,SBUF |
; передача байта из буфера на порт P1 |
CLR SCON.0 |
; сброс SCON.0 – флага прерывания |
|
; приемника |
RETI |
; возврат из подпрограммы |
|
; обслуживания прерывания |
END
Иллюстрация передачи и приема данных приведена на рис. 2.10.
Рис. 2.10. Иллюстрация передачи и приема данных между микроконтроллерами
Байт передан.
38
Лабораторная работа № 3
Разработка программы распознавания последовательности срабатывания двоичных датчиков для микроконтроллера 80С51 в системе Proteus 7.2 SP6
Задание: Разработать программу для микроконтроллера 80С51 (по алгоритму ПЛА) для реализации автомата распознавателя заданной последовательности срабатывания датчиков.
Последовательность срабатывания датчиков 0–1–3–2. При правильной последовательности срабатывания датчи-
ков должна производиться выдача сигнала 1 (z1) на нулевой разряд порта. В случае любого нарушения последовательности – выдается сигнал 1 на первый разряд выходного вектора (z2).
3.1. Синтез последовательностного автомата-распознавателя последовательности
Пусть на вход автомата подается следующая последовательность ab: 00 → 01 → 11 → 10. Построим первичную таблицу переходов-выходов (табл. 3.1).
|
|
|
|
|
|
Таблица 3.1 |
|
|
|
|
|
|
|
|
|
№ |
|
Входной сигнал ab |
|
Выходной сигнал |
|||
такта |
00 |
01 |
11 |
10 |
z1 |
|
z2 |
1 |
1 |
2 |
5 |
5 |
0 |
|
0 |
2 |
6 |
2 |
3 |
6 |
0 |
|
0 |
3 |
7 |
7 |
3 |
4 |
0 |
|
0 |
4 |
|
|
|
4 |
1 |
|
0 |
5 |
|
|
5 |
5 |
0 |
|
1 |
6 |
6 |
|
|
6 |
0 |
|
1 |
7 |
7 |
7 |
|
|
0 |
|
1 |
Здесь, в отличие от ранее рассмотренной модели автомата, учтены все нарушения заданной последовательности, устойчивые такты подчеркнуты. Так же, как и ранее, не предусмотрен возврат автомата в исходное положение.
39
Получим минимизированную таблицу переходов-выходов
(табл. 3.2).
|
|
|
|
Таблица 3.2 |
|
|
|
|
|
|
|
№ строки |
|
Входной сигнал ab |
|
||
00 |
01 |
11 |
10 |
||
|
|||||
1, 5 |
1 |
2 |
5 |
5 |
|
2, 6 |
6 |
2 |
3 |
6 |
|
3, 4, 7 |
7 |
7 |
3 |
4 |
Построим таблицу переходов-выходов автомата |
Мили |
||||||||
(табл. 3.3). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 3.3 |
|||
|
|
|
|
|
|
|
|
|
|
Код |
|
|
ab |
|
|
|
|
|
|
состояния |
00 |
01 |
|
11 |
10 |
|
|
|
|
Y2Y1 |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
00 |
00H |
01H |
|
03H |
02H |
|
|
|
|
00 |
01 |
|
00 |
00 |
|
|
|
|
|
|
00 |
00 |
|
10 |
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
01 |
04H |
05H |
|
07 H |
06H |
|
|
|
|
01 |
01 |
|
11 |
01 |
|
|
|
|
|
|
10 |
00 |
|
00 |
10 |
|
|
|
|
11 |
0CH |
0DH |
|
0FH |
0EH |
|
y2 y1 |
(t +1) |
|
11 |
11 |
|
11 |
11 |
|
||||
|
|
z1z2 |
|||||||
|
10 |
10 |
|
00 |
01 |
|
|||
|
|
|
|
|
|
Код клетки – дизъюнкция двоичного кода строки и двоичного кода столбца (в двух старших разрядах кода клавиши всегда нули).
3.2. Написание программы и получение таблицы констант для программы ПЛА
Метод программируемой логической матрицы является универсальным и унифицированным методом вычисления логических функций. В нем достигается сокращение объема памяти.
40