Реферат по предмету "Коммуникации и связь"


Обработка сигналов на основе MCS-51

--PAGE_BREAK--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 – Минимальная продолжительность сигнала, которую определяет МК



Пример 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.

Пример 43.Устранение дребезжания контактов. Дребезжание состоит в том, что благодаря упругим свойствам контактов возможен отрыв контактов, который приводит к переходному процессу. При этом сигнал может быть прочитан многократно как случайная последовательность нулей и единиц. Это можно устранить с помощью триггера (рис. 6).

Чаще всего с помощью MCS51 это делается программно так, как показано на рис. 7 и рис. 8.
Реализация первого метода, количество совпадений задано в R3.

DBNC:MOV        R3,#3         ; инициализация счетчика

DBNC1: JB           P3.4, DBNC; если контакт замкнутый,
                                      ; то начать отсчет опрашиваний
                                      ; сигнала сначала

DJNZ   R3, DBNC1        ; повторять, пока значение в R3

; не станет равным 0

JB        P3.4, DBNC; конечная проверка

Временная задержка подбирается экспериментальное (1–10 мс) в зависимости от типа датчика.

Пример 44.Формирование импульсных сигналов делается по принципу включен / выключен с необходимой временной задержкой:

PULLS:ON:          ANL P1,#11110111B; выдача импульса в линию 3 порта 1

CALL  DELAY     ; временная задержка

OFF:   ORL         Р1,#00001000В; сброс

Пример 45.Считывание данных из таймера. Для устранения возможных сбоев при считывании сначала читается старший байт, потом – младший, после чего подтверждается, что старший байт за это время не изменился.

RDTIME: MOV A, TH0

MOV   R0, TL0

CJNE   A, TH0, RDTIME

MOV   R1, А

RET

Пример 46.Подсчет числа импульсов, например, радиодеталей, которые движутся по конвейеру, зафиксированных фотоэлементом (рис. 9).

MOV   TMOD,#01000000B; настройка счетчика 1

MOV   TH1,#00H; сброс счетчика

WAIT0: JB           P3.4, WAIT0; ожидание включения транспортера

SETB  TCON.6    ; запуск счетчика 1

WAITC: JNB        P3.4, WAITC; ожидание отключения транспортера

CLR    TCON.6    ; остановка счетчика 1

MOV   A.TH1       ; A ¬число деталей

EXIT:                            ; выход

Максимальное число радиодеталей – 255.

Пример 4Реализация функций времени на основе таймеров.

В MCS-51 при частоте генератора тактовых импульсов 12 МГц таймер / счетчик изменяет свое значение с частотой 1 Мгц (в режиме таймера), или при поступлении сигнала от внешнего источника через счетный вход T0, T1 (в режиме счетчика).

Если использовать таймер / счетчик в режиме 1 полного формата (16 бит), то получим задержки в границах (1 – 65536 мкс).

Программа задержки на 50 мс в MCS-51, прерывание разрешено. Организация перехода к метке NEXT при переполнении Т/С0:

ORG   0ВН          ; адреса вектора прерываний от Т/С0

CLR    TCON.4    ; остановка Т/С0

RETI                    ; выход из подпрограммы обработки прерываний

ORG   100H         ; начальный адрес программы

MOV   TMOD, #01Н; настройка Т/С0

MOV   TL0, #LOW (NOT(50000) – 1); загрузкатаймера

MOV   TH0, #HIGH (NOT(50000) – 1)

SETB  TCON.4    ; стартТ/С

SETB  IE.1           ; разрешение прерываний от Т/С0

SETB  PCON.0    ; перевод в режим холостого хода

NEXT:                           ; продолжение программы.

Пример 48.Организация задержки программным путем:

DELAY: MOV      R2, Х          ; (R2)¬(Х)

COUNT: DJNZ R2, COUNT; декремент R2 и цикл, если не нуль

RET                     ; возвращение из подпрограммы

Пример 49.Подпрограмма задержки на 50 мс, используя Т/С0, погрешность не превышает 2 мкс.

DELAY: MOV      TMOD,#00000001B; настройка Т/С0

MOV   TH0,#HIGH (NOT(50000–16))

MOV   TL0,#LOW (NOT(50000–16))

SETB  TCON.4    ; запуск Т/С0

JNB     TCON.5,$; ожидание

ANL    TCON,#NOT(30H); остановка Т/С0, сброс TF0

RET                     ; возвращение из подпрограммы

Пример 50.Подпрограмма задержки на 1 секунду. Погрешность не больше, чем 123 мкс.

OS:      MOV        R3,#20D     ; счетчик циклов

S1:       ACALL DELAY; задержка на 50 мс

DJNZ   R3, S1       ; организация цикла

RET                     ; возвращение из подпрограммы

Пример 51.Измерение временных интервалов. При применении таймера используется вход разрешения счетчика (). Тогда измеренный сигнал подается на вход , а измерение продолжительности выполняется в Т/С0.

«Положительный» импульс:

MOV   TMOD,#00001001В; настраивание Т/С0

MOV   TH0,#0     ; сбрасывание таймера

MOV   TL0,#0


SETB  TCON.4    ; запуск Т/С0

WAIT0: JNB         P3.2, WAIT0; ожидание единичного уровня

WAITC: JB          P3.2, WAITC; ожидание нулевого уровня

CLR    TCON.4    ; остановка Т/С0

RET                     ; выход из процедуры

Управление программе должно передаваться при условии =0. Прерывание от Т/С0 и внешние от  – должны быть запрещены. По завершению программы в Т/С0 будет находиться число, пропорциональное продолжительности импульса на входе . Максимальная продолжительность импульса 65536 мкс, погрешность 1 мкс.

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

Пример 52.Преобразование параллельного кода в последовательный в MCS-51 сводится к передаче одного байта в буфер приемо-передатчика:

MOV   SBUF, А

Пример 53.Обратное преобразование последовательного кода в параллельный инициируется стоповым битом и выполняется аппаратно без участия программы. Основная программа должна выполнить команду

MOV   A, SBUF.

Пример 54.Преобразование однобайтовых чисел в дополнительный код и наоборот. Числа со знаком можно представить в дополнительном коде в границах от -128 к +12 Алгоритмы перевода чисел из прямого кода со знаком в дополнительный и обратное преобразование одинаковы:

DOD-PR: JNB А.7, EXIT; проверка знакового разряда

CPL    А              ; инверсия аккумулятора

ADD    A, #1         ; добавление единицы

SETB  А.7            ; установление знака

EXIT:                            ; выход

Пример 55.Преобразование чисел из одной системы исчисления в другую методом «двух счетчиков». При этом методе из начального кода отнимается, а к новому коду прибавляется единица до обнуления начального кода. Причем отнимание осуществляется в старой системе счисления, а добавление – в новой.

Программа перевода двоичного числа в двоично-десятичное.

MOV   R5, А        ; передача начального числа в R5

CLR    А              ; сброс аккумулятора

REV:   ADD         A,#1  ; добавление единицы

DA      A              ; десятичная коррекция

DJNZ   R5, REV   ; декремент начального кода и цикл, если не нуль

Результат преобразования находится в аккумуляторе.

Пример 56.Подсчет числа импульсов за заданный промежуток времени. Решается 4-я способами:

1. Программная реализация временного интервала и программный подсчет числа импульсов.

2. Программная реализация временного интервала и аппаратный подсчет числа импульсов (на внутреннем таймере / счетчике).

3. Аппаратная реализация временного интервала и программный подсчет числа импульсов.

4. Аппаратная реализация временного интервала и аппаратная реализация подсчета импульсов.

Реализация на MCS-51: в таймере-счетчике Т/С1 осуществляется подсчет числа импульсов; в Т/С0 заданный временной интервал. Датчик импульсов должен быть подключен к Т1.

TIME:  EQU         NOT(10000)+1; определение константы TIME для отсчета времени в 10 мс

MOV   TMOD,#01010001B; настройка таймеров-счетчиков:

1-й – счетчик 16 бит, 0-й – таймер

CLR    A              ; сброс аккумулятора

MOV   ТН1, А      ; сброс Т/С1

MOV   ТL1, А;

MOV   ТН0,#НІGH(ТIМE); загрузка в Т/С0 константы TIME

MOV   TL0,#LOW (TIME);

ORL    TCON,#50H; запускТ/С1 иТ/С

WAIT:JBC           TCON.5, EXIT; проверка переполнения Т/С0

SJMP  WAIT       ; цикл, если TF=0

EXIT: MOV          В, ТН1       ; (В) – (А), число импульсов за время 10 мс

MOV   A, TL1

программный команда управление микроконтроллер

    продолжение
--PAGE_BREAK--


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.