У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа 3 Таймеры микроконтроллеров Tx8515 Цель работы изучение основных режимов работы тай

Работа добавлена на сайт samzan.net: 2015-07-10

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 8.7.2025

«Московский государственный технический университет имени Н.Э. Баумана»

(МГТУ им. Н.Э. Баумана)

Факультет «Информатика и системы управления»

Кафедра «Компьютерные системы и сети»

Отчет по лабораторной работе

по курсу «Микпроцессорные системы»

ТАЙМЕРЫ МИКРОКОНТРОЛЛЕРА ATx8515

Исполнители,

студ. гр. ИУ 6-71 ___________ М.И. Жильников

студ. гр. ИУ 6-71 ___________ В.Э. Подольский

Преподаватель

___________ В.Я. Хартов

2011


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

Таймеры микроконтроллеров ATx8515

Цель работы - изучение основных  режимов работы таймеров и их программирование, анализ схем включения таймеров для проведения исследований.

Задание 1. Подготовить программу для исследования таймера/счётчика Т0 в режиме счётчика событий. Событием в данном случае может быть замыкание одной из кнопок SWx на плате STK500. Результат работы программы отобразить средствами индикации.

Проведена следующая коммутация шлейфами: порт PBSW, порт PD-LED. В программе 1 событие – это нажатие кнопки SW0. Светодиоды включаются после четвертого нажатия на кнопку SW0.

Также инкремент счётчика будет происходить после выполнения команд программы, эмулирующих  положительный перепад напряжения на PB0.

Программа 1:

.include "8515def.inc"  ;файл определений AT90S8515

.def temp = r16    ;временный регистр

;***Таблица векторов прерываний

.org $000

 rjmp INIT   ;обработка сброса

.org $007

 rjmp T0_OVF  ;обработка переполнения таймера T0

;***Инициализация МК

INIT:  ldi temp,low(RAMEND) ;установка

 out SPL,temp  ; указателя стека

 ldi temp,high(RAMEND) ;  на последнюю

 out SPH,temp  ;   ячейку ОЗУ

 clr temp   ;инициализация выводов порта PB

 out DDRB,temp  ; на ввод

 ldi temp,0x01  ;включение ‘подтягивающего’ резистора

 out PORTB,temp  ; входа PB0

 ser temp   ;инициализация выводов порта PD

 out DDRD,temp  ; на вывод

 out PORTD,temp  ;выключение светодиодов

 ldi temp,0x20  ;SE=1 - разрешение перехода

 out MCUCR,temp  ; в режим Idle

 ;***Настройка таймера Т0 на режим счётчика событий

 ldi temp,0x02  ;разрешение прерывания по

 out TIMSK,temp  ; переполнению таймера

 ldi temp,0x07  ;переключение таймера Т0

 out TCCR0,temp  ; по положительному перепаду напряжения

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

 ldi temp,0xFC  ;$FC=-04 для

 out TCNT0,temp  ; отсчёта 4-х нажатий

LOOP:  sleep    ;переход в режим пониженного

 ;nop    ;энергопотребления

 cbi PORTB, 0         ;положительный перепад напряжения на PB0

 sbi portb, 0

 rjmp DELAY

 rjmp LOOP    

;***Обработка прерывания при переполнении таймера T0

T0_OVF: clr temp   

 out PORTD,temp  ;включение светодиодов

 rcall DELAY  ;задержка

 ser temp   

 out PORTD,temp  ;выключение светодиодов

 ldi temp,0xFC  ;$FC=-04 для

 out TCNT0,temp  ; отсчёта 4-х нажатий

 reti

;*** Задержка ***

DELAY: ldi r19,10

 ldi r20,255

 ldi r21,255

dd:  dec r21

 brne dd

 dec r20

 brne dd

 dec r19

 brne dd

 ret

Задание 2. Подготовить программу для исследования таймера/счётчика Т0 в режиме таймера.

На плате STK500 были соединены: PD2,PD3–SW2,SW3; PB-LED.

Программа 2:

.include "8515def.inc"  ;файл определений AT90S8515

.def temp = r16    ;временный регистр

.equ SW2 = 2    ;2-ой вывод порта PD

.equ SW3 = 3    ;3-ий вывод порта PD

;***Таблица векторов прерываний

.org $000

 rjmp INIT   ;обработка сброса

.org $007

 rjmp T0_OVF  ;обработка переполнения таймера T0

;***Инициализация МК

INIT:  ldi temp,low(RAMEND) ;установка

 out SPL,temp  ; указателя стека

 ldi temp,high(RAMEND) ;  на последнюю

 out SPH,temp  ;   ячейку ОЗУ

 clr temp   ;инициализация 2 и 3 выводов порта PD

 out DDRD,temp  ; на ввод

 ldi temp,0x0C  ;включение ‘подтягивающих’ резисторов

 out PORTD,temp  ; порта PD

 ser temp   ;инициализация выводов порта PB

 out DDRB,temp  ; на вывод

 out PORTB,temp  ;выключение светодиодов

 ;***Настройка таймера Т0 на режим таймера

 ldi temp,0x02  ;разрешение прерывания по

 out TIMSK,temp  ; переполнению таймера Т0

 clr temp   ;таймер Т0

 out TCCR0,temp  ; остановлен

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

 clr temp   ;отсчёт

 out TCNT0,temp  ; начинается с 0

;***Ожидание нажатия кнопок

WAITSET_0: sbic PIND,SW2  ;проверка нажатия

 rjmp WAITSET_1  ;  кнопки SW2

 ;***Обработка нажатия кнопки SW2

 ldi temp,0x01  ;источник тактового сигнала - CK

 rcall LED_ON  ;включение светодиодов

WAITSET_1: sbic PIND,SW3  ;проверка нажатия

 rjmp WAITSET_0  ;  кнопки SW3

 ;***Обработка нажатия кнопки SW3

 ldi temp,0x02  ;источник тактового сигнала - CK/8

 rcall LED_ON  ;включение светодиодов

 rjmp WAITSET_0

;***Обработка прерывания при переполнении таймера T0

T0_OVF: ser temp   

 out PORTB,temp  ;выключение светодиодов

 clr temp   ;останов

 out TCCR0,temp  ; таймера Т0

 clr temp   

 out TCNT0,temp  ; установка 0

 reti

;***Включение светодиодов

LED_ON: out TCCR0,temp  ;настройка источника тактового сигнала

 clr temp   ;включение

 out PORTB,temp  ; светодиодов

 ret

Для наблюдений таймера Т0 в режиме таймера выставлена частота тактового генератора CK=512Гц. При нажатии на SW2 на вход счётчика поступают сигналы с частотой CK, при нажатии на SW3 - CK/8. В первом случае время с начала счёта до переполнения (выключения светодиодов) - 0,5с, во втором - 4с.

Задание 3. Подготовить программу для исследования функции сравнения таймера/счётчика Т1.

Частота тактового генератора устанавливается равной 256 Гц. Коммутация осуществляется 2-проводными шнурами: LED0 – PE2, LED1 – PD5, SW0 – PD0, SW1 – PD2.

Программа 3:

.include "8515def.inc"  ;файл определений AT90S8515

.def temp = r16    ;временный регистр

.equ START = 0    ;0-ой вывод порта PD

.org $000

 rjmp INIT   ;обработка сброса

.org $003

 rjmp STOP_PRESSED ;обработка внешнего прерывания INT0 -        ; нажатие STOP

;***Инициализация МК

INIT:  ldi temp,low(RAMEND) ;установка

 out SPL,temp  ; указателя стека

 ldi temp,high(RAMEND) ;  на последнюю

 out SPH,temp  ;   ячейку ОЗУ

 ldi temp,0x20  ;инициализация выводов порта PD:

 out DDRD,temp  ; 0,2 - на ввод, 5 - на вывод

 ldi temp,0x05  ;включение ‘подтягивающих’

 out PORTD,temp  ; резисторов порта PD и выключение СД

 ;ldi temp,0x04      ;для ATmega8515 инициал-ция вывода порта

 ;out DDRE,temp      ;PE2 (OC1B) на вывод!

 ldi temp,0x40  ;разрешение прерывания INT0

 out GIMSK,temp  ; в регистре GIMSK (или GICR)

 clr temp   ;обработка прерывания INT0

 out MCUCR,temp  ; по низкому уровню

 ;***Настройка функции сравнения таймера Т1

 ldi temp,0x00  ;запрещение прерываний

 out TIMSK,temp  ; от таймера

 cli    ;глобальное запрещение прерываний

 ldi temp,0x50  ;при равенстве состояния выводов OC1A и

 out TCCR1A,temp  ; OC1B изменяются на противоположные

 ldi temp,0x00  ;таймер

 out TCCR1B,temp  ; остановлен

 ldi temp,0x00  ;запись числа в

 out OCR1BH,temp  ; регистр сравнения,

 ldi temp,0x80  ;  первым записывается

 out OCR1BL,temp  ;   старший байт

 ldi temp,0x00  ;запись числа в

 out OCR1AH,temp  ; регистр сравнения,

 ldi temp,0xFF  ;  первым записывается

 out OCR1AL,temp  ;   старший байт

 clr temp   ;обнуление

 out TCNT1H,temp  ; содержимого

 out TCNT1L,temp  ;  счётного регистра

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

WAITSTART: sbic PIND,START  ;ожидание нажатия

 rjmp WAITSTART  ;  кнопки START

 ldi temp,0x09  ;запуск таймера, при

 out TCCR1B,temp  ; совпадении с OCR1A - сброс

LOOP:  nop    ;во время цикла происходит

 rjmp LOOP   ; увеличение содержимого счётного регистра

;***Обработка прерывания от кнопки STOP

STOP_PRESSED:

 ldi temp,0x08  ;остановка

 out TCCR1B,temp  ; таймера

WAITSTART_2:    ;ожидание

 sbic PIND,START  ; нажатия

 rjmp WAITSTART_2  ;  кнопки START

 ldi temp,0x09  ;запуск

 out TCCR1B,temp  ; таймера

 reti

При нажатии на SW0 (START) происходит инкремент счётчика с частотой CK, при нажатии на SW1 (STOP) счётчик останавливается. ;При совпадении содержимого счётчика и регистра сравнения OCR1B происходит переключение светодиода LED0, счётного регистра  и регистра сравнения OCR1A - LED1.

Результат работы программы соответствует диаграммам на рисунке 1.

При нажатии на кнопку SW0 светодиоды работают в следующей последовательности: оба светодиода погашены, далее включается LED0, затем LED1, выключается LED0, затем LED1 и т.д. В любой момент процесс можно остановить нажатием кнопки SW1.

Рисунок 1 – Временные диаграммы работы таймера/счётчика Т1 при исследовании функции сравнения

Задание 4. Подготовить программу для исследования функции захвата таймера/счётчика Т1. Захват должен происходить при нажатии соответствующей кнопки.

Выставлена частота тактового генератора CK=256 Гц. Коммутация кнопок с выводами микроконтроллера осуществляется 2-проводными шнурами: SW0 – PD0, SW1 – PD1, SW2 - PD2, SW3 – PE0. Светодиоды подключаются к выводам порта PB  10-проводным шлейфом.

При моделировании программы в AVR Studio: вывод ICP в микроконтроллере AT90S8515 является выделенным, а в микроконтроллере ATmega8515 – это линия порта ввода/вывода PE0, т.е. в AT90S8515 инициализация PE не нужна.

Программа 4:

.include "8515def.inc"  ;файл определений AT90S8515

.def temp = r16    ;временный регистр

.def H_byte = r17   ;для хранения старшего байта

.def L_byte = r18   ;для хранения младшего байта

.equ START = 0    ;0-ой вывод порта PD

.equ SHOW_L = 1    ;1-ый вывод порта PD

.equ SHOW_H = 2    ;2-ой вывод порта PD

;***Векторы прерываний

.org $000

 rjmp INIT   ;обработка сброса

.org $003

 rjmp CAPT_PRESSED ;обработка внешнего прерывания INT0 -        ;нажатие CAPT

;***Инициализация МК

INIT:  ldi temp,low(RAMEND) ;установка

 out SPL,temp  ; указателя стека

 ldi temp,high(RAMEND) ;  на последнюю

 out SPH,temp  ;   ячейку ОЗУ

 ldi temp,0x00  ;инициализация выводов

 out DDRD,temp  ; порта PD на ввод

 ldi temp,0x07  ;включение ‘подтягивающих’

 out PORTD,temp  ; резисторов порта PD

 ;ldi temp,0x00      ;для ATmega8515 инициал-ция вывода порта

 ;out DDRE,temp      ;PE0 (ICP) на ввод!

 ser temp   ;инициализация выводов

 out DDRB,temp  ; порта PB на вывод

 out PORTB,temp  ;выключение светодиодов

 cli    ;глобальное запрещение прерываний

 ldi temp,0x00  ;отключение от таймера

 out TCCR1A,temp  ; выводов

 ldi temp,0x00  ;таймер

 out TCCR1B,temp  ; остановлен

 ldi temp,0xFF  ;запись числа в

 out OCR1AH,temp  ; регистр сравнения,

 ldi temp,0xFF  ;  первым записывается

 out OCR1AL,temp  ;   старший байт

 clr temp   ;обнуление

 out TCNT1H,temp  ; содержимого

 out TCNT1L,temp  ;  счётного регистра

 ldi L_byte,0xF0  ;начальные значения

 ldi H_byte,0x0F  ; для проверки

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

WAITSTART: sbic PIND,START  ;ожидание нажатия

 rjmp WAITSTART  ;  кнопки START

 ldi temp,0x08  ;разрешение прерывания

 out TIMSK,temp  ; по событию "захват" таймера

 ldi temp,0xC9  ;запуск таймера, при

 out TCCR1B,temp  ; совпадении с OCR1A - сброс

WAIT_L: sbic PIND,SHOW_L  ;ожидание нажатия

 rjmp WAIT_H  ;  кнопки SHOW_L - показать младший байт

 out PORTB,L_byte  ;вывод на СД

WAIT_H: sbic PIND,SHOW_H  ;ожидание нажатия

 rjmp WAIT_L  ;  кнопки SHOW_H - показать старший байт

 out PORTB,H_byte  ;вывод на СД

 rjmp WAIT_L

;***Обработка прерывания от кнопки CAPT

CAPT_PRESSED:

 in L_byte,ICR1L  ;считывание младшего байта

 in H_byte,ICR1H  ;считывание старшего байта

 com L_byte   ;инвертирование для вывода

 com H_byte   ;инвертирование для вывода

 reti

При нажатии на SW0 (START) на вход счётчика поступает сигнал с частотой CK, при нажатии на SW3 (CAPT) происходит захват состояния таймера. При совпадении содержимого счётчика и регистра сравнения OCR1A происходит сброс таймера. При нажатии на SW1 (SHOW_L) на светодиоды выводится значение младшего байта регистра захвата, SW2 (SHOW_H) - старшего байта регистра захвата.

Через t=5,783 c:    SW1_L=0010 0000;    SW2_H=0000 0110.

Задание 5. Подготовить программу для исследования работы таймера Т1 в режиме ШИМ.

Для наглядности необходимо выставить частоту тактового генератора = 2048 Гц. Выводы OC1A (PD5) и OC1B (PE2) необходимо подключить к светодиодам (PD5-LED0, PE2-LED1), выводы порта PD0-PD3 к кнопкам общего назначения SW0-SW3 соответственно.

Программа 5:

.include "8515def.inc"  ;файл определений AT90S8515

.def temp = r16    ;временный регистр

;***Выводы порта PD

.equ SHOW_0 = 0    

.equ SHOW_F1 = 1    

.equ SHOW_F2 = 2    

.equ SHOW_3 = 3    

.org $000

 rjmp INIT   ;обработка сброса

;***Инициализация МК

INIT:  ldi temp,low(RAMEND) ;установка

 out SPL,temp  ; указателя стека

 ldi temp,high(RAMEND) ;  на последнюю

 out SPH,temp  ;   ячейку ОЗУ

 ldi temp,0x20  ;инициализация выводов порта PD:

 out DDRD,temp  ; 0-3 - на ввод, 5 - на вывод

 ldi temp,0x0F  ;включение ‘подтягивающих’

 out PORTD,temp  ; резисторов порта PD

 ;ldi temp,0x04      ; для ATmega8515 инициал-ция вывода порта

 ;out DDRE,temp      ;PE2 (OC1B) на вывод!

 cli    ;глобальное запрещение прерываний

 ldi temp,0xB3  ;настройка таймера на ШИМ и работу с

 out TCCR1A,temp  ; выводами OC1A и OC1B

 clr temp   ;обнуление

 out OCR1AH,temp  ; регистров

 out OCR1AL,temp  ;  сравнения и

 out OCR1BH,temp  ;   ...

 out OCR1BL,temp  ;   ...

 out TCNT1H,temp  ;   счётного

 out TCNT1L,temp  ;    регистра

 ldi temp,0x01  ;таймер

 out TCCR1B,temp  ; запущен: частота = СК

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

WAIT_0:     ;ожидание

 sbic PIND,SHOW_0  ; нажатия

 rjmp WAIT_F1  ; кнопки SHOW_0,устойчивые состояния 0 и 1

 ;***Перевод в устойчивые состояния выводов OC1A=0, OC1B=1

 clr temp   ;запись числа в

 out OCR1AH,temp  ; регистр сравнения, первым

 out OCR1AL,temp  ;  записывается старший байт

 out OCR1BH,temp  ;запись числа в регистр сравнения, первым

 out OCR1BL,temp  ; записывается старший байт

WAIT_F1: sbic PIND,SHOW_F1  ;ожидание нажатия

 rjmp WAIT_F2  ; кнопки SHOW_F1 -режим ШИМ скважностью F1

 ;***Настройка таймера на режим ШИМ со скважностью F1

 ldi temp,0x00  ;запись числа в

 out OCR1AH,temp  ; регистры сравнения,

 out OCR1BH,temp  ;   первым записывается

 ldi temp,0xFF  ;    старший байт

 out OCR1AL,temp

 out OCR1BL,temp

WAIT_F2: sbic PIND,SHOW_F2 ;ожидание нажатия

 rjmp WAIT_3  ; кнопки SHOW_F2 -режим ШИМ скважностью F2

 ;***Настройка таймера на режим ШИМ со скважностью F2

 ldi temp,0x02  ;запись числа в

 out OCR1AH,temp  ; регистры сравнения,

 out OCR1BH,temp  ;   первым записывается

 ldi temp,0xFF  ;    старший байт

 out OCR1AL,temp

 out OCR1BL,temp

WAIT_3: sbic PIND,SHOW_3  ;ожидание нажатия

 rjmp WAIT_0  ; кнопки SHOW_3,устойчивые состояния 1 и 0

 ;***Перевод в устойчивые состояния выводов OC1A=1, OC1B=0

 ser temp   ;запись числа в

 out OCR1AH,temp  ; регистр сравнения, первым

 out OCR1AL,temp  ;  записывается старший байт

 out OCR1BH,temp  ;запись числа в регистр сравнения, первым

 out OCR1BL,temp  ; записывается старший байт

 rjmp WAIT_0

При нажатии на SW0 (SHOW_0) на выходах OC1A и OC1B устанавливаются 0 и 1. При нажатии на SW1 (SHOW_F1) происходит генерация ШИМ-сигнала со скважностью F1. При нажатии на SW2 (SHOW_F2) происходит генерация ШИМ-сигнала со скважностью F2. При нажатии на SW3 (SHOW_1) на выходах OC1A и OC1B устанавливаются 1 и 0.

Результат соответствует диаграммам на рисунке 2.

Рисунок 2 – Формирование ШИМ-сигнала

Задание 6. Подготовить программу для исследования сторожевого таймера.

Частота тактового генератора не существенна, так как сторожевой таймер имеет независимый генератор. Коммутация выводов: SW0 – PD0, SW1 – PD1, LED – PB 10-проводным шлейфом.

Программа 6:

.include "8515def.inc"  ;файл определений AT90S8515

.def temp = r16    ;временный регистр

;***Выводы порта PD

.equ PERIOD_1 = 0    

.equ PERIOD_2 = 1    

.org $000

 rjmp INIT   ;обработка сброса

;***Инициализация МК

INIT:  ldi temp,low(RAMEND) ;установка

 out SPL,temp  ; указателя стека

 ldi temp,high(RAMEND) ;  на последнюю

 out SPH,temp  ;   ячейку ОЗУ

 clr temp   ;инициализация выводов порта PD

 out DDRD,temp  ; на ввод

 ldi temp,0x03  ;включение ‘подтягивающих’

 out PORTD,temp  ; резисторов порта PD

 ser temp   ;инициализация выводов порта PB

 out DDRB,temp  ; на вывод

 out PORTB,temp  ;выключение светодиодов

 ldi temp,$18  ;выключение

 out WDTCR,temp  ; сторожевого

 ldi temp,$10  ;  таймера:

 out WDTCR,temp  ;   WDE=0

WAIT_SW0: sbic PIND,PERIOD_1 ;ожидание нажатия

 rjmp WAIT_SW1  ;  кнопки PERIOD_1

 ;***Назначение периода наступления тайм-аута = 0,49с

 clr temp   ;включение

 out PORTB,temp  ; светодиодов

 ldi temp,$0D  ;включение сторожевого таймера,

 out WDTCR,temp  ; период 0,49с

WAIT_SW1: sbic PIND,PERIOD_2 ;ожидание нажатия

 rjmp WAIT_SW0  ;  кнопки PERIOD_2

 ;***Назначение периода наступления тайм-аута = 1,9с

 clr temp   ;включение

 out PORTB,temp  ; светодиодов

 ldi temp,$0F  ;включение сторожевого таймера,

 out WDTCR,temp  ; период 1,9с

 rjmp WAIT_SW0

При нажатии на SW0 (PERIOD_1) наступление тайм-аута происходит через 0,49с (время включения светодиодов). При нажатии на SW1 (PERIOD_2) наступление тайм-аута происходит через 1,9с (время включения светодиодов).

Задание 7. Изменить программу 1, добавив в нее обработку нажатия кнопки, исключающую влияние “дребезга”.

Для этого запрограммировать линию порта PB0 на вывод для программного ввода событий в таймер. Ввод событий выполнять при условии замыкания кнопки SWx, присоединенной к порту (линию и порт выбрать самостоятельно). Выполняя проверку состояния кнопки SWx, эмулировать сигнал «1» на выводе PB0 при замкнутом состоянии  «0» кнопки. Перед загрузкой программы выполнить ее отладку в AVR Studio. Убедившись в правильности работы программы, проверить ее в STK500.

Для подготовки устройства к работе соединяем шлейфом выводы порта PB с кнопками SW; выводы порта PD – со светодиодами LED.

    .include "8515def.inc"  ;файл определений AT90S8515

.def temp = r16 ;временный регистр

;***Таблица векторов прерываний

.org $000

 rjmp INIT ;обработка сброса

.org $007

 rjmp T0_OVF ;обработка переполнения таймера T0

;***Инициализация МК

INIT:  ldi temp,low(RAMEND) ;установка

 out SPL,temp ; указателя стека

 ldi temp,high(RAMEND) ;  на последнюю

 out SPH,temp ;   ячейку ОЗУ

 ldi temp,0x10 ;инициализация выводов порта PB1

 out DDRB,temp ; на вывод

 ser temp ;инициализация выводов порта PD

 out DDRD,temp ; на вывод

 out PORTD,temp ;выключение светодиодов

 ldi temp,0x20 ;SE=1 - разрешение перехода

 out MCUCR,temp ; в режим Idle

;***Настройка таймера Т0 на режим счётчика событий

 ldi temp,0x02 ;разрешение прерывания по

 out TIMSK,temp ; переполнению таймера

 ldi temp,0x07 ;переключение таймера Т0

 out TCCR0,temp ; по положительному перепаду напряжения

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

 ldi temp,0xFC ;$FC=-04 для

 out TCNT0,temp ; отсчёта 4-х нажатий

LOOP:  sbis PINB,0;

 Rjmp LOOP ;

 cbi PORTB,0

 sbi PORTB,0

 rjmp DELAY

 rjmp  LOOP

;***Обработка прерывания при переполнении таймера T0

T0_OVF: clr temp

 out PORTD,temp ;включение светодиодов

 rcall DELAY ;задержка

 ser temp

 out PORTD,temp ;выключение светодиодов

 ldi temp,0xFC ;$FC=-04 для

 out TCNT0,temp ; отсчёта 4-х нажатий

 reti

;*** Задержка ***

DELAY:  ldi r19,10

 ldi r20,255

 ldi r21,255

dd:  dec r21

 brne dd

 dec r20

 brne dd

 dec r19

 brne dd

ret

Программа демонстрирует устранение дребезга кнопок SW

Задание 8. Подготовить программу по примеру 4.2 для проверки работы таймера/счётчика Т1 в режиме таймера. Время включения светодиодов 1с и 8с.

Для подготовки устройства к работе соединяем выводы порта PD с кнопками SW0 – SW7; выводы порта PB – со светодиодами LED0 – LED7

    .include "8515def.inc"  ;файл определений AT90S8515

.def temp = r16 ;временный регистр

.equ SW2 = 2 ;2-ой вывод порта PD

.equ SW3 = 3 ;3-ий вывод порта PD

;***Таблица векторов прерываний

.org $000

 rjmp INIT ;обработка сброса

.org $006

 rjmp T1_OVF ;обработка переполнения таймера T1

;***Инициализация МК

INIT:  ldi temp,low(RAMEND) ;установка

out SPL,temp ; указателя стека

ldi temp,high(RAMEND) ;  на последнюю

out SPH,temp ;   ячейку ОЗУ

 clr temp ;инициализация 2 и 3 выводов порта PD

out DDRD,temp ; на ввод

ldi temp,0x0C ;включение ‘подтягивающих’ резисторов

out PORTD,temp ; порта PD

ser temp ;инициализация выводов порта PB

out DDRB,temp ; на вывод

out PORTB,temp ;выключение светодиодов

;***Настройка таймера Т0 на режим таймера

ldi temp,0x80 ;разрешение прерывания по

out TIMSK,temp ; переполнению таймера Т1

clr temp ;таймер Т1

out TCCR1B,temp ; остановлен

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

ldi temp,0xFE ;отсчёт

out TCNT1H,temp ; начинается с загруженного значения

clr temp

out TCNT1L,temp

;***Ожидание нажатия кнопок

WAITSET_0: sbic PIND,SW2 ;проверка нажатия

rjmp WAITSET_1 ;  кнопки SW2

;***Обработка нажатия кнопки SW2

ldi temp,0x01 ;источник тактового сигнала - CK

rcall LED_ON ;включение светодиодов

WAITSET_1: sbic PIND,SW3 ;проверка нажатия

rjmp WAITSET_0 ;  кнопки SW3

;***Обработка нажатия кнопки SW3

ldi temp,0x02 ;источник тактового сигнала - CK/8

rcall LED_ON ;включение светодиодов

rjmp WAITSET_0

;***Обработка прерывания при переполнении таймера T0

T1_OVF: ser temp

 out PORTB,temp ;выключение светодиодов

 clr temp ;останов

 out TCCR1B,temp ; таймера Т1

 ldi temp,0xFE

 out TCNT1H,temp ; установка значения

 clr temp

 out TCNT1L,temp

reti

;***Включение светодиодов

LED_ON: out TCCR1B,temp ;настройка источника тактового сигнала

clr temp ;включение

out PORTB,temp ; светодиодов

ret

Программа для МК ATx8515 демонстрирует работу таймера Т1 в режиме таймера. На устройстве выставляется частота тактового генератора CK=512Гц. При нажатии на SW2 на вход счётчика поступают сигналы с частотой CK, при нажатии на SW3 - CK/8. В первом случае время с начала счёта до переполнения (выключения светодиодов) - 1с, во втором - 8с




1. Реферат- Природно-ресурсный потенциал Калининградской области
2. Об Александре Дюма
3. .. Убийство президента Кеннеди стало самым трагическим событием американской истории XX века
4. тематической работе над литературой нормативными правовыми актами
5. иностранцах в БГУ Социальнодемографические группы Знаете ли
6. Легитимность политической власти
7. то неправильно так как не получают тот результат который получают другие.html
8. Рельсовые цепи с изолирующими стыками
9. Реферат- Основные лекарственные препараты применяемые в условиях скорой помощи
10. Русское искусство эпохи Слова о полку Игореве