Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
microproc_lab.doc
Скачиваний:
9
Добавлен:
23.04.2019
Размер:
290.82 Кб
Скачать
  1. Формирование временной задержки на основе таймера.

В качестве примера рассмотрим организацию временной задержки в 50мс. Предполагается, что бит IE.7 установлен.

;организация перехода к метке NEXT при переполнении Т/С0

ORG 0С00BH ; Адрес вектора прерывания от Т/С0

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

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

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

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

MOV TL0,#LOW 50000-1 ; Загрузка таймера

MOV TH0,#HIGH 50000-1

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

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

MOV A,PCON ; Перевод МК51 в режим холостого хода

SETB A.0

MOV PCON,A

NEXT: …

3. Считывание текущего состояния таймера без нарушения процесса синхронизации.

Все регистры таймеров/счетчиков микроЭВМ могут читаться или записываться в процессе работы, однако для этого надо соблюдать меры предосторожности.

Предположим, что подпрограмма RDTIME должна возвращать 16-разрядное значение в регистры R1 и R0, отражающее содержимое таймера 0. Существует опасность, что при считывании двух половин числа переполнение младшего регистра может перейти на одержимое старшего регистра, так что две возвращаемых половины слова окажутся "не в фазе". Решение этой проблемы заключается в том, чтобы читать сначала старший байт, а затем - младший, после чего выдать подтверждение того, что старший байт не изменился. Если изменение имело место, то следует повторить процесс сначала.

RDTIME: MOV А,ТН0 ; Выборка содержимого таймера Т0

MOV R0,TL0

CJNE A,TH0,RDTIME

MOV R1,A

RET

4. Измерение длительности сигнала.

Подпрограмма для измерения длительности «положительного» сигнала будет выглядеть так:

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

MOV TH0,#0 ; Сброс таймера

MOV TL0,#0

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

31

Задание 2

  1. При первом нажатии на кнопку INT1 увеличивать код на светодиодах на единицу, при втором-на двойку и т.д.

  2. По каждому второму нажатию кнопки INT1 сдвигать код на светодиодах на один разряд влево.

  3. По нажатию на кнопку INT1 циклически сдвигать код на светодиодах на один разряд вправо.

  4. По троекратному нажатию на INT1 минвертировать состояние светодиодов.

  5. Подсчитывать число нажатий на INT1 (от 0 до 63) и отображать на светодиодах в восьмеричном коде (переключение цифр-тумблером).

  6. По первому нажатию на INT1 считать первое значение с тумблеров, по второму-второе и сумму вывести на светодиоды.

  7. При нажатии на кнопку INT1 первый раз сдвинуть информацию на светодиодах влево, второй раз –вправо, третий раз- уменьшить на 1.

  8. Мигать левым светодиодом с частотой 1-2 Гц , а по нажатию INT1 считать с переключателей адрес и заполнить 10 ячеек ОЗУ, начиная с этого адреса, последовательно числами от 0 до 9.

  9. При включении левого переключателя подсчитывать количество нажатий на кнопку INT1 , при выключении количество вывести на светодиоды.

  10. Реализовать кодовый замок, где шифр набирается тумблерами, а для ввода шифра используется кнопка INT1. В случае правильного набора зажигаются светодиоды, иначе-мигают с частотой 1-2 Гц.

  11. Написать программу, последовательно передающую через порт 3 содержимое участка памяти ЗЗН  ЗАН. Передачу каждого байта сопроводить единичным стробом на линии 5 порта 3. Начало передачи каждого нового байта определяется появлением среза внешнего строб-сигнала, заведенного на линию Р3.3 и выявленного по прерыванию.

Контрольные вопросы.

  1. Какие порты существуют в i8051 ?

  2. Для чего может быть использован каждый из портов ?

  3. Опишите особенности работы при байтовых и битовых операциях.

  4. Опишите, как осуществляется работа с универсальным асинхронным приемопередатчиком (УАПП) .

ЛАБОРАТОРНАЯ РАБОТА №8

ТАЙМЕР

Практическая часть.

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