Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
prn_ 51_pr1.doc
Скачиваний:
17
Добавлен:
19.02.2016
Размер:
370.18 Кб
Скачать

2. Формирование импульсных сигналов

Импульс можно получить последовательной выдачей сигналов включить и отключить с промежуточным вызовом подпрограммы временной задержки:

PULS: ;выдача импульса в линию 4 порта 3

ON: ANL P3, #11101111B ;включение

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

OFF: ORL P3, #00010000B ;отключение

...

Генерация меандра. В этом случае можно воспользоваться процедурой выдачи импульса PULS и подпрограммой задержки, равной половине периода сигнала DLYX:

MEANDR:

Xcor: cpl p3.4

ACALL DLYX

SJMP XCOR

Бесконечный периодический сигнал формируется в линии 4 порта 3. На остальных линиях сигналы остаются неизменными.

3. Измерение длительности импульса

Простейшим способом измерения длительности импульса является программный. Для обнаружения событий (фронт и спад импульсного сигнала) в этом случае используются типовые процедуры WAIT, а отсчёт времени ведется программным способом. Для "положительного" импульсного сигнала, поступающего на вход Т0, программа измерения его длительности будет иметь вид:

MSCONT: MOV R7, #0 ;сброс счётчика

WAIT0: JNT0 WAIT0 ;ожидание фронта сигнала

COUNT: INC R7 ;инкремент счётчика

JT0 COUNT ;ожидание спада сигнала

EXIT: ... ;выход из процедуры

После выхода из процедуры содержимое счетчика R7 пропорционально длительности импульса.

Для нормальной работы этой программы необходимо, чтобы обращение к ней производилось в моменты, когда на входе Т0 присутствует сигнал нулевого уровня. Верхний предел измеряемой длительности “положительного” импульса составит 255(1 + 2) мкс = 765 мкс. Этот предел может быть увеличен включением в цикл COUNT дополнительных команд NOP. Максимальная погрешность измерений 3 мкс.

  1. Инициализация последовательного порта для 8-разрядного режима универсального асинхронного приемопередатчика (УАПП) и установка флага готовности передачи.

SPINIT: MOV SCON,#01010010B

5. Передача символьной строки через последовательный порт.

При передаче символов через последовательный порт в устройство вывода (например, принтер с форматом ASCII) может возникнуть необходимость в выводе служебных сообщений, включающих сообщения об ошибках, диагностику или инструкции для оператора. Эти символьные строки просто описываются при помощи директивы DB.

CR EQU 0DH ; Код возврата каретки (ASCII)

LF EQU 0AH ; Код перевода строки

ESC EQU 1BH ; Код операции ESC

T1 EQU P3.5

TI EQU SCON.1

CALL STRING

DB CR,LF ; Установка новой строки

DB ‘HALLO!’ ; Сообщение

DB ESC ; Завершение

;..............

STRING: POP DPH ;Загрузка первого символа

POP DPL

STR1: CLR А

MOVC A,@A+DPTR ;Выборка первого символа

STR2: JNB Т1,$ ; Ожидание готовности

CLR TI

MOV SBUF,А ; Выдача символа

INC DPTR ; Сдвиг указателя

CLR A

MOVC A,@A+DPTR ; Выборка следующего символа

CJNE A,#ESC,STR2 ; Цикл чтения

MOV А,#1

JMP @A+DPTR ; Возврат к программе после чтения

6. Ввод данных с тумблеров, подключенных к линиям 3 и 4 порта 1 и выдача их на светодиоды, подключенные к линиям 4 и 5 порта 3.

MOV A,P1 ; Ввод данных с линий порта 1

ANL A,00011000B ; Маскирование для выделения бит 3 и 4

RL A ; Сдвиг аккумулятора влево

ANL P3,11001111B ; Сброс линий 4 и 5 порта 3

ORL Р3,А ; Вывод данных в порт. При этом все линии, кроме 4 и 5 не

; меняют своего состояния

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]