Курсовая работа: Обработка сигналов на основе MCS-51
Исходные
данные программы: начальный адрес массива – (R0), длина массива – (R1).
ORL P1, #00100000В; настройка
; Р1.5 на ввод
LOOP: MOV A, @R0; загрузка байта
; в аккумулятор
ANL P1,#11100000В; сброс данных
; и строба
ORL P1, A ; выдача данных
ORL P1,#00010000В; выдача строба
WAIT: JNB Р1.5, WAIT; ожидание ответа
INC R0 ; продвижение указателя адреса
JNZ Rl, LOOP ; цикл, если не все данные переданные
4.
Битовые операции в MCS-51
Пример
31.
Операция Исключающее ИЛИ используется очень часто для сравнения бит, или их
сброса. В кодах битового процессора такой операции нет, но легко осуществляется
наложение логической операции Исключающее ИЛИ на флажок переноса:
JNB bit, LZ ; исключительное ИЛИ для флажка переноса
CPL С ; инверсия флажка
LZ: ; продолжение программы
Пример
32.
Преобразовать байт в последовательный код и передать его через Р1.0, не
воздействуя при этом на остальные разряды порта. Передачу вести, начиная с
младшего бита:
MOV R7,#8D ; инициализация счетчика циклов
LOOP: RRC А ; присвоение переноса значение бита А.0
MOV Р1.0, С ; передача бита
DJNZ R7, LOOP ; цикл, если не все биты переданы
Время
выполнения программы 41 мкс, время передачи – 5 мкс (скорость передачи – 200
кбит/с).
Пример
33.
Вычислить булеву функцию 3-х переменных Y=(X× )+W (X+V).
Переменные X, V, W поступают на линии 2, 1, 0 порта 1; результат Y необходимо
вывести на линию 3 порта 1. Для сохранения промежуточных значений использовать
бит F0H.
Y BIT P1.3 ; спецификация бит порта 1
Х BIT P1.2
V BIT Р1.1
W BIT Р1.0
MOV С, X ; ввод Х
ANL С,/V ; X×
MOV F0, С ; запоминание результата в F0
MOV С, Х ; ввод Х
ORL С, V ; X+V
ANL С, W ; W (X+V)
ORL С, F0 ; (W (X+V))+(X× )
MOV Y, С ; вывод результата
Время
выполнения программы 14 мкс.
Пример
34.
Организовать последовательную передачу данных из аккумулятора на 0 вывод порта
2. Пересылку вести манчестерским кодом (каждый бит кодируется двумя
интервалами: первый интервал имеет инверсию бита, второй – его прямое значение):
MOV R0,#8D ; инициализация счетчика бит
LOOP: RRC А ; (С)¬(сдвиг мл. бита из акк-ра в перенос)
CPL С ; инверсия бита
MOV Р2.0, С ; передача инверсии бита
CPL С ; восстановление бита
NOP;
NOP ; выравнивание длины интервалов
NOP;
MOV P2.0, С ; передача прямого значения бита
DJNZ R0, LOOP ; цикл, если счетчик не нулевой
Передача
начинается с младших битов. Продолжительность одного интервала 6 машинных
циклов (6 мкс), время передачи одного бита – 12 мкс, время передачи байта – 96
мкс (скорость передачи 83 кбит/с, или 10,4 кбайт/с).
Пример
35.
Пошаговый режим работы. Для его реализации необходимо:
-
запрограммировать
одно из внешних прерываний (к примеру INT0) на активизацию по уровню;
-
в
подпрограмме обработки прерывания ожидать последовательность «1» – «0» на входе
INT0 (вывод P3.2), задаваемую, например, с помощью кнопки.
В
основной программе необходимо дописать следующее:
SETB ІЕ.0 ; разрешение прерывания уровня 0
CLR TCON.0 ; прерывания разрешены по нулевому уровню
…; продолжение основной программы
Подпрограмма
обработки прерывания должна закончиться следующими командами:
…; подпрограмма обработки
L1: JNB P3.2, L1 ; ожидание уровня 1
L2: JB P3.2, L2 ; ожидание уровня 0
RETI ; возвращение и выполнение одной; команды
основной программы; после чего снова происходит ; возвращение в подпрограмму.
Пример
36.
Обращение к медленным микросхемам внешней памяти. Программным путем можно
задать необходимую длительность импульсов WR и RD. Например, если сигнал должен длиться 50 мкс, то
это осуществляется так:
CLR P3.7 ; =0
MOV R3,#24D ; инициализация счетчика (2 мкс)
L0: DJNZ R3, L0 ; цикл (24*2 мкс)
SETB P3.7 ; =1
5.
Взаимодействие МК с объектом управления
Пример
3
Опрашивание двоичного датчика, например, конечного выключателя.
Ключ
подключен к входу MCS-51: порт 1, разряд 3.
WAIT0: JNB P1.С, WAIT0; ожидание размыкания датчика
WAITC: JB P1.3, WAITC; ожидание замыкания датчика
Пример
38.
Опрашивание группы двоичных датчиков (аналогично нахождению заданного кода или комбинации
датчиков).
WTCODE: MOV A,#10D ; загрузка в А эталонного кода 00001010В
WAIT: CJNE A, P1, WAIT; если кодовая комбинация не совпала
с заданной, то ждать
EXIT: ; вывод
Пример
39.
При достижении значения параметра равного 135, передать управление на подпрограмму
с меткой LABEL А, иначе LABEL В.
MOV A,#135D ; загрузка значения параметра
CJNE A, P1, LABEL В; сравнение и передача управления
LABEL А:
LABEL В:
Пример
40.
Зафиксировать импульс, поступающий на вход ОМЭВМ (P1.3) и его
окончание.
WAITC: JB P1.3, WAITC; ожидание Р1.3=0
WAIT0: JNB P1.3, WAIT0; ожидание Р1.3=1
Зафиксированный
импульс имеет вид .
Для
импульса обратного вида нужно поменять WAIT0 и WAITC местами.
Таблица
1 – Минимальная продолжительность сигнала, которую определяет МК
Подключение
датчика к выводам |
Минимальная
длительность импульса, мкс |
(отрицательного) |
(положительного) |
P1,
P2, BUS/P0 |
10/2 |
12,5/2 |
T0,
Т1 |
5/2 |
5/2 |
ЗПР |
10/2 |
5/2 |
Пример
41.
Передать управление на метку TEST и установить Р3.7, если на Т0 поступит 30
импульсов.
MOV R1,#30D ; загрузка числа импульсов
L1: JB P3.4, L1 ; ожидание нуля
L0: JNB P3.4, L2 ; ожидание единицы
JMP L0
L2: DJNZ R1, L1 ; повторить 30 раз
JMP TEST
TEST: SETB Р3.7 ; установление бита
Пример
42.
Схема для фиксации короткого импульса: D-триггер устанавливается коротким
импульсом, а сбрасывается программно, после определения наличия сигнала на
входе Т0.
Страницы: 1, 2, 3, 4, 5, 6 |