ТАЙМЕРЫ МИКРОКОНТРОЛЛЕРА КМ1816ВЕ51




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

 

 

 

Цель работы: изучение организации службы времени микроконтроллера КМ1816ВЕ51, а также приобретение навыков программирования временных задержек в кодах микроконтроллера с использованием службы времени.

 

1. ОРГАНИЗАЦИЯ ТАЙМЕРОВ

 

В состав ВЕ51 входит два 16-разрядных таймера/счетчика (рис.6.1),каждый из которых состоит из двух программно-доступных регистров ТНО,ТLО (таймер О), ТН1, TL1 (таймер 1).

 

Рисунок 6.1 – Регистры таймеров/счетчиков

 

Каждый таймер/счетчик может быть запрограммирован на работу в режиме таймера - подсчета числа машинных циклов, следующих с частотой OSC/12 (обычно 1 Мгц), либо счетчика - подсчета числа переходов из Н и L на соответствующих входах Т0 и Т1. Функцией таймера/счетчика и выбором режима его работы управляет регистр TMOD (Timer/Counter Mode), формат которого приведен на рис. 6.2.

 

Регистр TMOD (адрес 89 в пространстве DSEG)

    T1 MOD T0 MOD
Мнемоническое обозначение разрядов регистра   GATE   C/T   M1   M0   GATE   C/T   M1   M0
                 

CT0 CT1

TMOD.0 TMOD.4 M0 - младший бит поля режима

TMOD.1 TMOD.5 M1 - старший бит поля режима

TMOD.2 TMOD.6 C/T - Выбор функции: 0-таймер / 1-счетчик

TMOD.3 TMOD.7 GATE - Управление работой CT0 / CT1

 

Рис. 6.2. Формат регистра режимов таймеров/счетчиков

 

Разряд С/Т задает функцию таймера\счетчика. При С/Т = 0 таймер/счетчик работает в режиме таймера. При С/Т = 1 - в режиме счетчика. Разряды М0,М1 определяют режим работы таймера - счетчика. Каждый таймер/счетчик может работать в 4-х режимах.

В режиме 0 счетный регистр имеет длину 13 бит (см. рис.6.3.а), причем 5 младших разрядов расположены в TL, а 8 старших - в ТН. Сигнал переполнения фиксируется соответствующим флажком TF.

В режиме 1 счетный регистр иммет длину 16 разрядов. В остальном, режим не отличается от режима 0.

В режиме 2 (рис. 6.3.б) задается 8-разрядный регистр таймера/счетчика (TL), с автоматической загрузкой начального кода из ТН. Сигнал переполнения таймера/счетчика не только взводит флажок TF, но и перегружает TL содержимым ТН.

В режиме 3 работает только таймер/счетчик 0. В этом режиме два регистра СТО рассматриваются как два независимых 8-разрядных таймера/счетчика. Переполнение TLO вызывает взведение флага TFO, переполнение ТНО устанавливает флаг TFI.

Независимо от режима работы имеется возможность программного и аппаратного управления пуском/остановом счета импульса. Логика пуска/останова анализирует состояние разряда GATE в регистре ТМОD и разряда TR в регистре TCON (Timer/Counter ContrI), формат которого приведен на рис. 6.4.

Рис.6.3. Режимы работы счетчиков/таймеров

Регистр TCON (адрес 88 в пространстве DSEG)

 

Адрес бита в пространстве BSEG 8F 8E 8D 8C 8B 8A    
Назначение разрядов регистра TF1 TR1 TF0 TR0        

 

TCON. 4 TRO - флаг программного запуска/останова СТ0

TCON. 5 TFO - флаг запроса прерывания по переполнению СТ0

TCON. 6 TRI - флаг программного запускап/останова СТ1

TCON. 7 TFI - флаг запроса прерывания по переполнению СТ1

 

Рис. 6.4. Формат регистра управления таймерами/счетчиками

 

Работа таймера/счетчика разрешается только, если взведен соответствующий разряд TR. При этом разряд GATE должен быть нулевым или на входе ~INT~ - низкий уровень. Для подачи внешних сигналов на таймеры/счетчики и логику их управления используются разряды порта 3 (см. рис.6.5).

 

P3 (адрес B0 в пространстве DSEG)

Адрес бита в пространстве BSEG B7 B6 8D 8C 8B 8A    
Спец. назначение контактов порта TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

 

Р3.2 INTO - вход запроса на прерывание О

Р3.3 INTI - вход запроса на прерывание 1

Р3.4. ТО - счетный вход таймера/счетчика О

Р3.5. Т1 - счетный вход таймера/счетчика 1

 

Рис. 6.5. Использование порта РЗ для подключения внешних сигналов

 

ЗАМЕЧАНИЕ!

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

 

2. ЗАДАНИЕ ПО ЛАБОРАТОРНОЙ РАБОТЕ

 

Написать систему программ, которая выполняет следующие функции.

Обработчик прерывания от таймера 0 инкрементирует содержимое ячейки ADRT и загружает начальное состояние в регистр TLO.

Первая программа выполняет циклический анализ содержимого ADRT и вызывает подпрограмму вывода массива кодов в порт. Программа располагается в CSEG, начиная с адреса ADR0. Программа должна состоять из двух частей. Первая часть - инициализация системы, вторая - анализ содержимого ADRT и вызов подпрограммы.

Вторая программа - должна располагаться в памяти CSEG, начиная с адреса ADR1. Она должна при каждом обращении передавать в порт Р1 массив кодов длиной N, расположенный в CSEG, начиная с адреса ADR2.

Начальный код в таймере и константа сравнения должны быть выбраны так,чтобы вызов подпрограммы выполнялся каждые 1 мкс. Считаем, что частота OSC/12 = 1 Мгц.

Вход в систему программ по команде LCALL ADRO, расположенной в CSEG по адресу ОООН.

Варианты заданий приведены в табл.6.1.

Массив кодов должен соответствовать массиву программы 2 из лабораторной работы номер 5.

 

3. СОДЕРЖАНИЕ ОТЧЕТА:

- краткое описание организации службы времени;

- задание по лабораторной работе;

- текст программы с пояснениями;

- черновик выполнения работы.

 

4. ПРИМЕР ВЫПОЛНЕНИЯ РАБОТЫ

Написать программную систему, в которой подпрограмма вывода массива кодов вызывается каждые 1000 мкс.

Обработчик прерывания от таймера 0 инкрементирует содержимое ячейки ADRT= 50.

Первая программа выполняет циклический анализ содержимого ADRT и вызывает подпрограмму вывода массива кодов в порт. Программа располагается в CSEG, начиная с адреса О1ООН. Программа должна состоять из двух частей. Первая часть - инициализация системы, вторая - анализ содержимого ADRT и вызов подпрограммы.

Вторая программа - должна располагаться в памяти CSEG, начиная с адреса О2ООН. Она должна при каждом обращении передавать в порт Р1 массив кодов длиной 6, расположенный в CSEG, начиная с адреса О3ООН.

Вход в систему программ по команде LCALL ADRO, расположенной в CSEG по адресу ООООН.

 

Таблица 6.1. Варианты заданий.

Номер ADRT ADR0 ADR1 ADR2 N T
1.         E  
2.   52F 62F   F  
3.   43E 53E   D  
4.   34A 44A   C  
5.         B  
6.         A  
7.            
8.   68A 78A      
9.   79D 69D   F  
10. 2A 3AF 5AF   E  
11. 2B 5BA 4BA      
12. 2C 4C9 3C9      
13. 2D 1D8 2D8 3A1    
14. 2E 2E4 1E4 4B2    
15. 2F 3F5 7F5 5C2    
16.   5E6 6E6 6D2    
17.   6A1 5A1 7E2 F  
18.   7D3 4D3 1F2 A  
19.   4C8 3C8 2E2 B  
20.   36F 26F 3D2 C  
21.   2BE 4BE   D  
22.   1CA 3CA   E  
23.   4D3 2D3 3A2 F  
24.   3E7 1E7 4B2    
25.   6F3 7F3 5C2    
26. 3A 4E5 6E5 6D2    
27. 3B 6AD 5AD 7E4 C  

Выберем начальную константу для таймера таким образом, чтобы прерывание от него поступало каждые 100 мкс. Так как максимальное число число в таймере 255, следовательно начальное его значение должно быть 255 - 100 = 155 = 9ВН. Для задания интервала 100 мкс. в ячейке ADRT должен декрементироваться код 10 = 0АН.

 

 


 

    LJMP   ; Переход по включению питания
    NOP    
    NOP    
    NOP    
    NOP    
    NOP    
    NOP    
    NOP    
000A   NOP   ; Обработчик прерывания
000B 758A9B MOV TL0, #9B ; Восстановление TL0
000E   INC   ; Инкремент ADRT
    RET I ; Возврат из прерывания

 

Основная программа

    MOV DPTR, #0300 ; Инициализация DPTR
  758A9B MOV TL0, #9B ; Константу в TL0
    MOV TMOD, #02 ; Режим 2
  75A882 MOV IE, #82 ; Разрешение прерывания
010C   MOV TCON, #10 ; Разрешение счета
010F   NOP   ;
  E550 MOV A,50 ;
  B40AFB CJNE A, #0A, 0110 ; Прошло 1000 мкс?
    MOV 50, #00 ; Обнуление ADRT
    LCALL   ; Вызов подпрограммы
011B 80F3 SJMP   ; На проверку
011D   NOP    

 

Подпограмма пересылки кодов в Р1

    LJMP    
  D2D3 SETB PSW.3  
  D2D4 SETB PSW.4  
  A800 MOV R0, #00  
  E8 MOV A, R0  
    MOVC A,@A+DPTR  
020A   INC R0  
020B B806F8 CJNE R0, #06, 0206  
020E   RET    

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: