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

Урок № 49

В работе таймера-счетчика принимают участие 4 регистра МК:

  • накопительный 8-разрядный регистр TCNT0;

  • регистр управления TCCR0 для настройки входной частоты (рисунок 3);

  • регистр масок прерываний TIMSK (рисунок 4)

  • регистр флагов таймеров (рисунок 5)

TOIE0 – разрешение прерывания по переполнению для таймера T/C0

Рисунок 4- Регистр масок прерываний таймеров

TOV0 – флаг прерывания по переполнению таймера T/C0

Рисунок 5 - Регистр флагов таймеров

Контрольные вопросы:

1 Перечислите регистры таймера Т/C0

2 Назовите основные операции по настройке таймера

Урок № 50

2.14.3 Примеры программ формирования пауз с помощью таймера-счетчика T/C0

Задание 1

Составьте фрагмент программы, настраивающий Кдел=1024 для T/C0

Задание 2

Составьте фрагмент программы, разрешающий T/C0 работать в режиме прерывания по переполнению

Задание 3

Определите период «тиков»T/C0 при следующих параметрах:

3.1 Fq=8МГц, Кдел=1024

3.2 Fq=4МГц, Кдел=8

Задание 4 Проанализируйте действие программы

.include "m8535def.inc"

.org 0

rjmp start

.org $009

rjmp imp

;==========

start:

sbi ddrc,0 ; настроить линию PC.0 на вывод

sbi portc,0 ; включить светодиод

ldi r16,$61 ; настроить стек

out spl,r16

ldi r16,$00

out sph,r16

ldi r16,0b00000101 ; настроить Кдел=1024

out tccr0,r16

ldi r16,0b01000001 ;разрешить прерывание по переполнению T/C0

out timsk,r16

sei ;глобальное разрешение прерывания

loop: ;фоновая программа: ждем переполнения таймера

rjmp loop

;===========

imp:

sbis portc,0 ;пропустить следующую команду, если светодиод включен

rjmp ind ;прыжок на команду включения светодиода

cbi portc,0 ;выключить светодиод

reti ;возврат из прерывания

ind:

sbi portc,0 ;включить светодиод

reti ;возврат из прерывания

Урок № 51 Лабораторная работа № 11 Исследование работы таймера-счетчика t/c0

Цель работы: научиться использовать таймер для формирования пауз

1 Краткие сведения из теории

В работе таймера-счетчика принимают участие 4 регистра МК:

  • накопительный 8-разрядный регистр TCNT0;

  • регистр управления TCCR0 для настройки входной частоты (рисунок 1);

  • регистр масок прерываний TIMSK (рисунок 2)

  • регистр флагов таймеров (рисунок 3)

CS2

CS1

CS0

0

0

0

Таймер остановлен

0

0

1

Кдел=1

0

1

0

Кдел=8

0

1

1

Кдел=64

1

0

0

Кдел=256

1

0

1

Кдел=1024

Рисунок 1- Формат регистра управления таймера

TOIE0 – разрешение прерывания по переполнению для таймера T/C0

Рисунок 2- Регистр масок прерываний таймеров

TOV0 – флаг прерывания по переполнению таймера T/C0

Рисунок 3 - Регистр флагов таймеров

Интервал между тиками таймера определяется по формуле:

t = N∙T (1)

N - количество входных импульсов до переполнения регистра N=256,

Т - интервал между импульсами

T = 1/Ф (2)

Ф – частота входных импульсов

Ф = Fq/Кдел, (3)

где Fq – частота синхронизации МК

Кдел – коэффициент деления

Подставляя (3) в (1) получим формулу для расчета интервала между тиками таймера T/C0:

t =256∙ Кдел/ Fq (4)

2 Практические задания и методические указания по их выполнению

Задание 1

Введите программу «Timer.asm» в память МК на стенде «Программирование микроконтроллеров ATmega8535» и проанализируйте ее действие. Оцените частоту переключения светодиода визуально и измерив частоту переключения с помощью прибора ОМЦ-20.

;========timer.asm========

.include "m8535def.inc"

.org 0

rjmp start

.org $009

rjmp imp

;==========

start:

sbi ddrc,0 ; настроить линию PC.0 на вывод

sbi portc,0 ; включить светодиод

ldi r16,$61 ; настроить стек

out spl,r16

ldi r16,$00

out sph,r16

ldi r16,0b00000101 ; настроить Кдел=1024

out tccr0,r16

ldi r16,0b01000001 ;разрешить прерывание по переполнению T/C0

out timsk,r16

sei ;глобальное разрешение прерывания

loop: ;фоновая программа: ждем переполнения таймера

rjmp loop

;===========

imp:

sbis portc,0 ;пропустить следующую команду, если светодиод включен

rjmp ind ;прыжок на команду включения светодиода

cbi portc,0 ;выключить светодиод

reti ;возврат из прерывания

ind:

sbi portc,0 ;включить светодиод

reti ;возврат из прерывания

Задание 2

Измените входную частоту таймера, используя другие коэффициенты деления: Кдел=256, Кдел=64, Кдел=1. Оцените, как изменился интервал между «тиками» таймера.