Курсовая работа: Обработка сигналов на основе MCS-51
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. Программная реализация временного интервала и аппаратный подсчет числа импульсов (на внутреннем таймере / счетчике).