ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.07.2024
Просмотров: 27
Скачиваний: 0
записанным ранее программно в регистрах RCAP2H и RCAP2L Длительность импульса определяется коэффициентом деления.
Порядок выполнения работы
1 С помощью Таймера 1 вывести на 7-сегментный индикатор (разряд – по указанию преподавателя) точку, мигающую с частотой 1Гц.
-определить биты регистра TMOD Таймера 1: режим (Mode) 1, функция – таймер;
-рассчитать требуемую периодичность мигания точки. В режиме Таймера, 16-битный регистр увеличивает свое значение на единицу каждый машинный цикл (машинный цикл длится 12 тактов ГТИ, т.е. коэффициент счета равен 1/12 частоты тактового генератора). Частота внешнего резонатора –
f = 8МГц. Так как таймер -16-битный, то за 1 секунду будет совершаться примерно 10,17 переполнений: 8МГц/(12*216);
-в функции Timer1InterruptHandler (см пример) описать действия, выполняемые МК по прерыванию
-набрать код программы, скомпилировать и прошить в МК.
Пример
void Timer1InterruptHandler() org 0x1B
{ EA = 0; |
// очистить флаг разрешения прерывания |
TR1 = 0; |
// остановить Timer1 |
TH1 = 0x00; |
// сбросить значение старшего байта Timer1 |
TL1 = 0x00; |
// сбросить значение младшего байта Timer1 |
… |
|
|
Действия по прерыванию |
||
… |
|
|
EA = 1; |
// установить общий флаг разрешения прерывания |
|
TR1 = 1; |
|
// запустить Timer1 |
} |
|
|
void main() |
|
|
{ P0 = 0; |
// инициализировать PORT0 |
|
TF1 = 0; |
|
// убедиться, что флаг прерывания TF1 очищен |
ET1 = 1; |
|
// разрешить прерывание Timer1 |
EA = 1; |
// установить общий флаг разрешения прерывания |
|
TMOD.T1_GATE = 0; // запрет внешнего управления |
||
TMOD.T1_CT |
|
= 0; // установка в режиме таймера. |
TMOD.T1_M1 |
= 0; // M1_M0 = 00 => выбор режима работы(16-битный Таймер/Счетчик) |
|
TMOD.T1_M0 |
= 0; |
|
TR1 = 0; |
|
// сбросить Timer1 |
TH1 = 0x00; |
|
// установить старший байт Timer1 |
TL1 = 0x00; |
|
// установить младший байт Timer1 |
TR1 = 1; |
|
// запустить Timer1 |
} |
|
|
2 С помощью прерываний Таймера 0 вывести на порт 2 (светодиоды) бегущий «0» (смещение активного светодиода в сторону старшего разряда при каждом прерывании. Использовать тот же исходный код, что и в первой задаче.
Вопросы для защиты
1 Основные отличия Таймеров 0 и 1 от Таймера 2 2 Описать работу Таймеров 0 и 1 в режимах 1 и 2. 3 Описать работу Таймеров 0 и 1 в режиме 3
4 Описать назначение битов регистра T1CON
5 Описать назначение битов регистра T1MOD
6 Описать назначение битов регистра T2CON
7 Описать назначение битов регистра T2MOD
8 Описать режим захвата.
9Описать режим автоперезагрузки.
10Описать режим генератора импульсов.