Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ к цифрам.doc
Скачиваний:
28
Добавлен:
06.05.2019
Размер:
2.08 Mб
Скачать

1.7. Использование таймера в качестве частотомера.

Известно, что измерение частоты можно произвести, подсчитав количество периодов неизвестной частоты за единицу времени. Принцип измерения частоты иллюстрируется рис. 9.10.

Рис. 9.10. Принцип измерения частоты

Для измерения частоты измеряемый сигнал подаётся на вывод микроконтроллера Tx. Таймер/счётчик настраивается в режим счётчика записью в бит C/Tx логической единицы. Содержимое таймера обнуляется. Таймер включается на строго определённый интервал времени. Этот интервал задаётся оставшимся таймером.

Пример программы измерения частоты сигнала на ножке микроконтроллера T0 приведён на рис. 9.11.

mov TMOD,#00010101b

;||||||||

;||||||++-------Перевести таймер T0 в шестнадцатиразрядный режим

;|||||+---------Работать от сигнала на ножке T0

;||||+----------Запретить управление таймером от ножки INT0

;||++-----------Перевести таймер T1 в шестнадцатиразрядный режим

;|+-------------Синхронизироваться от внутреннего генератора

;+--------------Запретить управление таймером от ножки INT1

mov TH0, #0 ;Обнулить старший байт счётчика

mov TL0, #0 ;Обнулить младший байт счётчика

;---измерение вести 1 мс---------------------------------------------------------

mov TH1, #HIGH(-1000) ;Загрузить старший байт таймера

mov TL1, #LOW(-1000) ;Загрузить младший байт таймера

mov TCON,#01010000b ;Включить частотомер

;||||||||

;|||||||+-------Прерывание от ножки INT1возникает по фронту

;||||||+--------Сбросить запрос прерывания от ножки INT1

;|||||+---------Прерывание от ножки INT1возникает по фронту

;||||+----------Сбросить запрос прерывания от ножки INT1

;|||+-----------Включить таймер T0

;||+------------Обнулить флаг таймера T0

;|+-------------Включить таймер T1

;+--------------Обнулить флаг таймера T1

TstTimeOut:

jnb TF1, TstTimeOut ;Если 1 мс прошла

mov TCON, #00000000b ;то отключить частотомер

;||||||||

;|||||||+-------Прерывание от ножки INT1 возникает по фронту

;||||||+--------Сбросить запрос прерывания от ножки INT1

;|||||+---------Прерывание от ножки INT1возникает по фронту

;||||+----------Сбросить запрос прерывания от ножки INT1

;|||+-----------Отключить таймер T0

;||+------------Обнулить флаг таймера T0

;|+-------------Отключить таймер T1

;+--------------Обнулить флаг таймера T1

Рис. 9.11. Программа измерения частоты

Если теперь на вход микроконтроллера T0 подать сигнал с неизвестной частотой, то в регистрах TH0 и TL0 будет записана его частота в килогерцах.

2. Пример выполнения работы

Ниже приведен листинг программы, позволяющей формировать «бегущую» по диагонали светящуюся точку на знакосинтезирующей матрице стенда.

;-------Демонстрация программирования таймера------

.org 0

mov R1,#01h ;подготовка для записи в регистр строк LED матрицы

mov R2,#FEh ;подотовка для записи в регистр столбцов LED матрицы

Start:

s1: mov a,R1 ; установка в единицу одного

mov dptr,#8000h ;разряда регистра

movx @dptr,a ; строки матрицы

mov a,R2 ; установка в ноль одного

mov dptr,#8002h ;разряда

movx @dptr,a ; столбца матрицы и засвечивание одной точки матрицы

mov a,R1 ; циклический

rl a ; сдвиг влево

mov R1,a ; регистра строк LED матрицы

mov a,R2 ; циклический

rl a ; сдвиг влево

mov R2,a ; регистра столбцов LED матрицы

call c ; вызов подпрограммы задержки на 640 мс

jmp Start;

c: mov r7,#10 ; подготовка 10 циклов работы таймера

c1: clr tcon.4 ; остановка таймера Т0

mov TL0,#00h ; сброс регистров

mov TH0,#00h ; таймера Т0

mov TMOD,#00000001b ;запретить упр. Т0 от вн. вывода, уст. Т0 в 16-ти разр режим

setb tcon.4 ; запуск счета таймера

jnb TF0,$ ; ожидание переполнения счетчиков таймера Т0 через 64 мс по флагу

clr TF0 ; сброс флага

clr tcon.4 ; останов таймера

djnz r7,c1 ; формирование 10 циклов работы таймера

ret

end;

3. Задание на выполнение работы.

Необходимо разработать программу, обеспечивающую последовательный счет и отображение на статическом индикаторе HG1.2 – HG1.3 чисел от 00h до FFh.

4. Отчет по работе.

Отчет по работе должен содержать:

    1. Цель работы;

    2. Краткие теоретические сведения о таймерах MCS-51 и способах их программирования;

    3. Листинг работающей в соответствии с индивидуальным заданием программы;

    4. Выводы по работе.

Лабораторная работа № 10

ИЗУЧЕНИЕ ПРОГРАММИРОВАНИЯ ПРЕРЫВАНИЙ

МИКРОКОНТРОЛЛЕРА MCS-51

Цель работы:

Изучение структуры и команд программирования прерываний микроконтроллеров MCS-51.

Приборы и оборудование

1. Компьютер с программой – транслятором ASM51.EXE (x8051.EXE) в объектный модуль, программой – редактора связей (преобразования объектного модуля в исполняемый) rl51.EXE и программой преобразования исполняемого модуля в загрузочный OH.EXE или программы fd51.EXE, совмещающей возможности программ rl51.EXE и OH.EXE (при использовании x8051.EXE возможна замена программ rl51.EXE и OH.EXE, необходимых для получения загрузочного модуля, программой LINK.EXE), программой загрузки исполняемого модуля в стенд EVAL32.EXE.

2. Учебно-отладочный стенд EV8031/AVR (V3.2).