Подготовить программу для исследования работы таймера Т1 в режиме ШИМа. Выводы 0С1А (PD5) и ОС IB (РЕ2) необходимо подключить к светодиодам (PD5-LED0, PE2-LED1), выводы порта PD0-PD3 к кнопкам общего назначения SW0-SW3 соответственно. Варианты обработки нажатия кнопок:
1) при нажатии SWO на выходах 0С1А и ОС IB устанавливаются значения О и 1 соответственно;
2) при нажатии SW1 происходит генерация ШИМ-сигнала со скважностью F1 (скважность зависит от значения в регистре сравнения);
3) при нажатии SW2 происходит генерация ШИМ-сигнала со скважностью F2;
4) при нажатии SW3 на выходах 0С1А и ОС IB устанавливаются 1 и О соответственно.
Временная диаграмма работы ШИМа приведена на рис. 4.4.
Рис. 4.4. Формирование ШИМ-сигнала
Программа 4.5
;Программа 4.5 для МК АТх8515: демонстрация работы таймера ; Т1 в режиме ШИМа. Для наглядности необходимо установить
; частоту тактового генератора = 2048 Гц. ;При нажатии на SW0 (SHOW_0) на выходах 0С1А и 0С1В
;устанавливаются О и 1, SW1 (SH0W_F1)- генерация ШИМ-
;сигнала со скважностью F1, SW2 (SH0W_F2)- со скважностью ;F2, SW3 (SH0W_1)- на выходах устанавливаются 1 и 0. ;Связи:PD5-LED0,PE2-LED1, PD0:PD1-SW0:SW1, PD2:PD3-SW2:SW3
;.include "8515def.inc" ;файл определений AT90S8515
.include "m8515def.inc" ;файл определений ATmega8515
.def temp = rl6 ;временный регистр
.Выводы порта PD
.equ SHOW_0 = 0
.equ SH0W_F1 = 1
.equ SH0W_F2 = 2
.equ SH0W_3 = 3
.org $000
rjmp INIT ;обработка сброса ;***Инициализация МК
INIT: Idi temp,low(RAMEND) ;установка
out SPL,temp ; указателя стека
Idi temp,high(RAMEND) ; на последнюю
out SPH,temp ; ячейку ОЗУ
Idi temp,0x20 ;инициализация выводов порта PD:
out DDRD,temp ; 0-3 – на ввод, 5 – на вывод
Idi temp,0x0F ;включение подтягивающих
out PORTD,temp ; резисторов порта PD
Idi temp,0x04 ;;;;для ATmega8515 инициализация
out DDRE,temp ;;;; PE2 (OCIB) на вывод
cli ; запрещение прерываний
Idi temp,0xB3 ;настройка таймера на ШИМ
out TCCRlA,temp ; с выводами 0С1А и 0С1В
clr temp ;обнуление
out OCRlAH,temp ; регистров
out OCRlAL,temp ; сравнения и
out OCRIBH,temp
out OCRIBL,temp
out TCNTlH,temp ; счетного
out TCNTlL,temp ; регистра
Idi temp,0x01 ;таймер
out TCCRlB,temp ; запущен: частота – СК
sei ; разрешение прерываний
WAIT_0: ;ожидание
sbic PIND,SHOW_0 ; нажатия
rjmp WAIT_F1 ; кнопки SHOW_0, состояния 0 и 1 ;Перевод в устойчивые состояния выводов ОС1А=0, 0С1В=1
clr temp ;запись числа в
out OCRlAH,temp ; регистры сравнения, первым
out OCRlAL,temp ; записывается старший байт out OCRlBH,temp out OCRlBL,temp
WAIT_F1;sbic PIND,SH0W_F1;ожидание нажатия
rjmp WAIT_F2 ; кнопки SH0W_F1 – режим ШИМа
; скважностью Fl .Настройка таймера на режим ШИМа со скважностью F1 Idi temp,0x00 ;запись числа в
out OCRlAH,temp ; регистры сравнения,
out OCRlBH,temp ; первым записывается
Idi temp,OxFF ; старший байт
out OCRlAL,temp out OCRlBL,temp
WAIT_F2:sbic PIND,SH0W_F2;ожидание нажатия
rjmp WAIT_3 ; кнопки SH0W_F2-режим ШИМа
скважностью F2 ;***Настройка таймера на режим ШИМа со скважностью F2 Idi temp,0x02 ;запись числа в
out OCRlAH,temp ; регистры сравнения,
out OCRlBH,temp ; первым записывается
Idi temp,OxFF ; старший байт
out OCRlAL,temp out OCRlBL,temp
WAIT_3:sbic PIND,SH0W_3 ;ожидание нажатия
rjmp WAIT_0 ; кнопки SH0W_3, состояния 1 и 0
.Перевод в устойчивые состояния выводов 0С1А=1, ОС1В=0
ser temp ;запись числа в
out OCRlAH,temp ; регистры сравнения, первым
out OCRlAL,temp ; записывается старший байт out OCRlBH,temp out OCRlBL,temp rjmp WAIT_0
Результат соответствует диаграммам на рис. 4.4. При нажатии на SWO загорается только LEDO, при нажатии SW3 – только LED1. При нажатии SW1 или SW2 светодиоды попеременно включаются;выключаются со скважностью F1 или F2 соответственно.