ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 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Описать режим генератора импульсов.