Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
mps.doc
Скачиваний:
19
Добавлен:
18.11.2019
Размер:
3.97 Mб
Скачать

11. Временная диаграмма типового машинного цикла. Примеры временных диаграмм для выполнения команд за один и за два машинных цикла.

Считывание команд из внешней памяти программ.

P CL OUT – выдача младшего байта счетчика команд РС.

PCH OUT – выдача старшего байта счетчика команд РС.

INS IN – ввод байта инструкции из памяти программ.

С читывание данных из внешней памяти данных.

PCH – старший байт счетчика команд РС.

Р2 SFR – защелки порта Р2.

защелки порта Р2.

DPL, DPH – младший и старший байты регистра указателя данных DPTR.

RI – регистры R0 и R1.

PCL OUT – выдача младшего байта счетчика команд РС.

Команды выполняются по машинным циклам. Цикл = 12 тактов. Если частота 12 МГц, то время 1 мкс = 12 тактов. Все команды 1 - 2 МЦ.

А) Считывание команд из внутр. Памяти программ (сверху до пунктира).

MOV A,R MOV A, #data MOV A, @DPTR

Б) Ниже пунктира – внешняя память данных. Данные читаются во 2ом мц.

MOVX A,@DPTR

1. Если чтение из внутр. Пп, то psen не вырабатывается.

2. PSEN и ALE не вырабатываются, если во 2ом МЦ используется комнада MOVX A, @DPTR.

12. Таймеры/счётчики 0 и 1 микроконтроллера семейства mcs51 (омэвм51). Режимы работы, программирование таймера/счётчика.

Таймер – формирование временных интервалов.

Счетчик – счет внешних событий.

INT0 (INT1) – разрешение/запрещение счета.

При переполнении формируется сигнал TF0 (TF1).

Установка режима таймера/счетчика

TH0 и TL0 – регистры таймера/счетчика 0.

TH1 и TL1 – регистры таймера/счетчика 1.

Режим запуска (счета):

Запуск осуществляется битом TR. Есть возможность управлять TR либо аппаратно, либо программно.

  1. GATE=0, то запуск осуществляется только сигналом TR.

  2. GATЕ=1, на вход Р3.2 или Р3.3 необходимо подать 1 (она подается от внешнего устройства, аппаратное управление).

Выбор режимов осуществляется с помощью регистра TMOD.

Формат регистра TMOD.

GATE – разрешение запуска таймера/счетчика

T / C – определение работы в режиме таймера или счетчика

С помощью разрядов M1 и M0 задаются четыре варианта загрузки регистров TH и TL и управления ими. Каждый из вариантов называется режимом.

M1

M0

Режим

0

0

0

0

1

1

1

0

2

1

1

3

Режим 0 – таймер/счетчик с предварительным делением на 32 (используется только регистр ТН (8 разр.), а TL используется как предварительный делитель на 32, следовательно счет до 213).

Режим 1 – 16-разрядный таймер/счетчик. Это накапливающий тип счетчика. Чтобы посчитать 1 импульс, нужно изначально загружать FF, 2 импульса – FE. Это для 8 разр.

Режим 2 – 8-разрядный таймер/счетчик, автоматически перезагружаемый при каждом переполнении (из ТН загружается снова в TL).

Режим 3 – таймер/счетчик 0 работает как 8-разрядный таймер и как 8-разрядный счетчик.

Загрузка регистра TMOD: MOV TMOD, #...b

Управление таймером/счетчиком осуществляется с помощью регистра TCON.

Формат регистра TCON.

TR – запуск таймера/счетчика

SETB TR0 – установка TR0 в “1”

CLR TR0 – сброс TR0 в “0”

TF – переполнение (может быть обработано как программным способом, так и по прерыванию)

JNB TF1, M

JB TF1, M

Пример формирования интервалов времени

Интервал в 1 секунду

В 1 сек – 20 интервалов по 50 мс

Исходные данные:

50 мс, 12МГц, таймер 0, режим 1

; CLOCK

; выбираем регистры, в которых будем накапливать мсек, сек, мин, часы

; R2 – счетчик интервалов

; R3 – счетчик секунд

MOV R2, #0

MOV R3, #0

MOV TMOD, #01 ;таймер 0, режим 1

MOV TH0, #high(65536-50000) ;при частоте 12 МГц, период 1 мкс. Чтобы 50000 мкс, нужно 50000 импульсов. Вычитаем из максимум 65536, загрузка в ТН0 (8 разр) старшего байта.

MOV TL0, #low(65536-50000) ;младший байт

SETB TR0 ;запуск таймера 0

M1:

JNB TF0,M1 ; можно $

CLR TF0 ;сброс бита переполнения

MOV TH0, #high(65536-50000)

MOV TL0, #low(65536-50000)

INC R2

CJNE R2,#20,M1

MOV R2, #0

INC R3

…. ;счетчик секунд можно сравнить с 60, если 60, то 1 минута

Недостаток: в цикле JNB зря тратится процессорное время, лучше делать по прерыванию.

Пример: использование таймера 1 в режиме 2 для формирования импульса 10мкс на выводе P1.0 порта P1.

mov TMOD, #20h ; 00100000 – таймер 1, режим 2

mov TH1, #256-10 ; загрузка начального значения таймера

…………

setb TR1 ; запуск таймера

clr P1.0 ; сброс в “0” разряда 0 порта P1

jnb TF1, $ ; проверка переполнения регистра TF1

setb P1.0 ; установка в “1” разряда 0 порта P1

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