рефераты рефераты
Главная страница > Курсовая работа: Обработка сигналов на основе MCS-51  
Курсовая работа: Обработка сигналов на основе MCS-51
Главная страница
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
География экономическая география
Геодезия
Геология
Госслужба
Гражданский процесс
Гражданское право
Иностранные языки лингвистика
Искусство
Историческая личность
История
История государства и права
История отечественного государства и права
История политичиских учений
История техники
История экономических учений
Биографии
Биология и химия
Издательское дело и полиграфия
Исторические личности
Краткое содержание произведений
Новейшая история политология
Остальные рефераты
Промышленность производство
психология педагогика
Коммуникации связь цифровые приборы и радиоэлектроника
Краеведение и этнография
Кулинария и продукты питания
Культура и искусство
Литература
Маркетинг реклама и торговля
Математика
Медицина
Реклама
Физика
Финансы
Химия
Экономическая теория
Юриспруденция
Юридическая наука
Компьютерные науки
Финансовые науки
Управленческие науки
Информатика программирование
Экономика
Архитектура
Банковское дело
Биржевое дело
Бухгалтерский учет и аудит
Валютные отношения
География
Кредитование
Инвестиции
Информатика
Кибернетика
Косметология
Наука и техника
Маркетинг
Культура и искусство
Менеджмент
Металлургия
Налогообложение
Предпринимательство
Радиоэлектроника
Страхование
Строительство
Схемотехника
Таможенная система
Сочинения по литературе и русскому языку
Теория организация
Теплотехника
Туризм
Управление
Форма поиска
Авторизация




 
Статистика
рефераты
Последние новости

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

Пример 10. Передать управление одной из восьми подпрограмм при появлении нулевого уровня на соответствующем входе порта 1. Высший приоритет входа Р1.3.

ORL    P1,#FFH   ; настройка Р1 на ввод

L1:      MOV        А, Р1          ; ввод данных из порта

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

JZ        L1             ; ожидание появления первого нуля

JNB    Р1.3, SUBR1; переход на первую подпрограмму

JNB    P1.4, SUBR2; переход на вторую подпрограмму

…………………………………………

JNB    P1.2, SUBR8; переход на восьмую подпрограмму

Порядок приоритетов определяется порядком проверки нулевого уровня на соответствующем входе и может быть любым.


2 Арифметические операции в MCS-51

Пример 11. Сложить десятичные двоично-кодированные числа, размещенные в А и R5:

ADD   A, R5        ; двоичное сложение

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

Пример 12. Вычитание байтов. Данная операция может выполняться двумя способами: 1) перевести уменьшаемое как отрицательное в дополнительный код и выполнить операцию добавления; 2) перевести уменьшаемое в обратный код и произвести инверсию суммы.

Например, из данных в А необходимо отнять данные регистра R3. Вычитание выполняем по алгоритму:

А ¬

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

ADD   A, R3        ; добавление байтов

CPL    A              ; получение разности

Пример 13. Сложить два двоичных многобайтных числа. Оба слагаемых находятся в РПД, начиная из младшего байта. Начальный адрес слагаемых находится в R0 и R1, формат в R2. Результат размещают на месте первого слагаемого.

CLR    С              ; сбрасывание переноса

LOOP: MOV        A,@R0       ; загрузка в аккумулятор; бегущего байта первого слагаемого

ADDC A,@R1     ; добавление байтов с учетом переноса

MOV  @R0, A    ; размещение байта результата

INC     R0            ; смещение указателя

INC     Rl             ; смещение указателя

DJNZ  R2, LOOP ; цикл, если не все байты просуммированы

Время суммирования составляет (1+7N) мкс, где N – длина в байтах.

Пример 14. Перемножить число в аккумуляторе на число 2х, где х ≤ 8 – значение в R6. Умножение на 2 заменяется арифметическим сдвигом аккумулятора и R0:

MOV  R0,#0       ; сброс R0

CLR    С              ; сброс переноса

LI:       RLC          А      ; сдвиг влево 16-разрядного данного в А и R0

ХСН   А, R0

RLC    A

ХСН   А, R0

DJNZ  R6, L1      ; цикл

Пример 15. Умножение (MUL). Выполняется для двух беззнаковых чисел, которые находятся в регистрах А и В. После выполнения операции младший байт произведения размещается в А, а старший – в В.

Умножение числа любого формата на константу 168. Число размещено в РПД, адрес младшего байта находится в R0. Формат числа в байтах задан в R2.

MOV  А,#00Н    ; сброс аккумулятора А

LOOP: ADD         A,@R0       ; загрузка множимого

MOV  B,#168D   ; загрузка множителя

MUL   AB            ; перемножение

MOV  @R0, A    ; запись младшего байта частичного произведения

INC     R0            ; прирост адреса

MOV  А, В          ; пересылка старшего байта частичного произведения в аккумулятор А

ХСН   A,@R0     ; предшествующее формирование очередного байта произведения

JNZ     R2, LOOP ; цикл, если не все байты начального числа перемноженные на константу.

Полученный результат находится на месте начального числа и занимает в РПД на 1 байт больше. Время вычисления произведения составляет (1+13N) мкс, где N – длина числа в байтах.

Пример 16. Деление (DIV) – делится содержимое аккумулятора на значение в В. После деления в А находится целая часть, в В-остаток. Команда может быть использована для быстрого преобразования двоичного числа в двоично-десятичный формат.

Программа переводит двоичное число, находящееся в аккумуляторе, в двоично-десятичный код, который может быть трехразрядным (в десятичной системе счисления). В этом случае число сотен будет размещено в R0, десятки и единицы – соответственно в А и В.

MOV  B,#100D   ; (B) ¬ 100 для вычисления числа сотен в числе

DIV     AB            ; в А є число сотен (то есть старшая цифра)

MOV  R0, A        ; пересылка в R0 старшей цифры

ХСН   А, В          ; пересылка остатка от деления входного числа в А

MOV  B,#10D     ; (В)¬10 (определяется число десятков в числе)

DIV     AB            ; в А – число десятков, В-число единиц

SWAP A              ; размещение числа десятков в старшей тетраде А

ADD   А, В          ; суммирование остатка (числа единиц) аккумулятор сохраняет две младших цифры.

Время преобразования – 16 мкс.

Пример 1 Сравнение двух четырехразрядных чисел, которые подаются на входы порта Р2.

Сигнал равенства выводится на Р1.1, большее – Р1.2, меньшееР1.3, разрешение сравнения подается на Р1.0.

ANL    P1,#11110001В ; сброс всех сравнений

L0:      JNB          Р1.0, L0     ; ожидание разрешения

MOV  A, P2

ANL    A,#F0H    ; выделение первого числа

SWAP A

MOV  В, A          ; запоминание первого числа

CLR    C              ; сброс переноса

MOV  А, P2

ANL    A,#0FH    ; выделение второго числа

SUBB А, В          ; вычисление В

JZ        LR            ; переход, если А=В

JC       LL             ; переход, если А<В

SETB  P1.2          ; результат А>В

JMP    EXIT

LR:      SETB       P1.1  ; результат А=В

JMP    EXIT

LL:      SETB       P1.3  ; результат А<В

EXIT:                            ; продолжение выполнения программы

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

3. Логические операции в MCS-51

Пример 18. Вывод управляющих сигналов из МК.

Формирование статических сигналов используется для управления исполнительным механизмом по принципу «включен-выключен». При этом соответствующие линии портов просто устанавливаются в 0 или 1.

Если имеем группу исполнительных механизмов, то для их управления необходимо сформировать управляющее слово (УС), каждый бит которого – соответствующий управляющий сигнал.

Для изменения УС достаточно выполнять логические операции над теми битами портов, которые необходимо изменить.

Например: ANL – для сброса тех битов УС, какие заданные нулями

ORL – для установки бит

XRL – инверсия бит по времени

Пример 19. Определение переполнений. При накоплении большого количества слагаемых может возникнуть переполнение разрядной сетки. Для определения этого используют модифицированный дополнительный код, который отличается от обычного дополнительного введением дополнительного знакового разряда. При добавлении k слагаемых таких разрядов должно быть r = log2 k.

Признаком переполнения служит отличие знаковых разрядов. Отметим, что использование r знаковых разрядов суживает диапазон изменения сигналов в 2r раз.

Пример 20. Сбросить биты 0,2,4,6 порта 2:

ANL    Р2,#10101010В; сбрасывание бит 0,2,4,6 порта 2

Пример 21. Установить биты 0…3 из порта 1

ORL    P1.#00001111В; (P1.0…P1.3) ¬ 1111

Можно также записать

ORL    P1,#0FH

Пример 22. Выбрать нулевой регистровый банк:

ANL PSW,#11100111В; сбрасывание бит RS0 и RS1

Пример 23. Проинвертировать биты порта Р1, которые отвечают единичным битам в аккумуляторе:

XRL    Р1, А        ; сумма по модулю два значения порта 1 и аккумулятора

Пример 24. Проинвертировать биты 7,6,5,4 порта 0:

XRL    Р,#11110000В; сумма по модулю два значений порта 0 и константы

Можно также записать XRL Р0, #0F0H

Пример 25. Проинвертировать биты 0…3 в аккумуляторе:

XRL    A,#0FH    ; сумма по модулю два значения аккумулятора и константы

Пример 26. Настроить биты 1,3,5,7 порта 1 на ввод:

ORL    Р1,#10101010В; установление P1.1, P1.3, Р1.5, Р1.7

Пример 2 Маскировка данных при вводе. Ввести в регистр R3 информацию из линий 1,3,5,6,7 порта 1:

MOV  А, Р1        ; ввод байта с Р1

ANL    А,#11101010В; маскировка

MOV  R3, А        ; передача в R3

Пример 28. Выполнить логический сдвиг вправо двухбайтового числа, которое размещено в R5, А:

SHIFTR: CLR С  ; сбрасывание переноса

CPL    С              ; установление переноса

ХСН   А, R5        ; обмен байтами

JNB    А.7, L1     ; если R5.7=1, то снять флажок переноса

CLR    C

RRC    A              ; сдвиг флажка переноса

L1:      XCH         A, R5         ; обмен

RRC    A              ; сдвиг младшего байта

Пример 29. Выполнить сдвиг влево двухбайтового числа, которое размещено в R5 и А:

SHIFT L: RLC А          ; сдвиг младшего байта

XCH   А, R5        ; обмен А и R5

RLC    A              ; сдвиг старшего байта

XCH   А, R5        ; обмен

Пример 30. Управление группой бит порта.

В РПД находится массив распакованных десятичных цифр. Необходимо передать их внешнему устройству в соответствии с протоколом (рис. 2). Для передачи 4-х бит данных используются младшие линии порта 1. Линии Р1.4 и Р1.5 используются как сигналы квитирования, то есть передачу сигналов на выход МК сопровождает стробирующий сигнал на линии Р1.4. Внешнее устройство, которое приняло данные, сообщает об этом сигналом на входе Р1.5. Биты Р1.6 и Р1.7 не должны изменять своих значений.

Страницы: 1, 2, 3, 4, 5, 6

рефераты
Новости