Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПМК ДЗ 2012 примеры.doc
Скачиваний:
2
Добавлен:
17.08.2019
Размер:
202.24 Кб
Скачать
      1. Решение.

.include "8535def.inc"

;----------------- Инициализация вектора прерывания ----------------------

.org 0

rjmp Start ;Перепрыгиваем таблицу векторов прерываний

.org OVF0addr

rjmp OVF0addrSUB

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

Start:

cli

;--------------------- Установка указателя стека -------------------------

ldi r16, low(ramend)

out SPL, R16

ldi r16, high(ramend)

out SPH, R16

;-------------------- Инициализация таймера-счетчика 0 -------------------

ldi r16, $03 ;Коэффициент деления 64

out TCCR0, r16

ldi r16, 0b00000001 ;Разрешаем прерывания от переполнения TC0

out TIMSK, r16

ldi r16, $ff ;Порт А –весь на вывод

out DDRA, r16

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

;=============== Основная программа ничего не делает =====================

m1: nop

rjmp m1

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

;-------- Подпрограмма обработки прерываний по переполнению ТС0 ----------

OVF0addrSUB:

push r16 ;Сохраняем в стеке содержимое r16 (рабочего регистра)

ldi r16, $e6 ;Загружаем рассчитанное по программе AndyRate число

out TCNT0, r16 ;и отправляем его в счетный регистр таймера 0

sbis PINA, 3 ;Пропустить строку, если бит 3 порта А выставлен в «1»

rjmp HL_ZERO ; а если нет, то перейти на метку HL_ZERO

sbiс PINA, 3 ;Пропустить строку, если бит 3 порта А сброшен в «0»

rjmp HL_ONE ; а если нет, то перейти на метку HL_ONE

rjmp EXIT_SUB ;Идем к выходу из подпрограммы обр. прерывания

HL_ZERO: sbi PORTA,3 ;Выставить "1" на линию 3 порта А

rjmp EXIT_SUB ;Идем к выходу из подпрограммы обр. прерывания

HL_ONE: cbi PORTA,3 ;Сбросить в "0" линию 3 порта А

rjmp EXIT_SUB ;Идем к выходу из подпрограммы обр. прерывания

EXIT_SUB: pop r16 ;Извлекаем из стека содержимое r16

reti ; выход из подпрограммы обработки прерывания

  1. ПМК ДЗ №6

Написать программу генерации прямоугольных импульсов c частотой следования 3 Гц, с вывода PORTA3, при частоте кварцевого резонатора 1 МГц. Использовать прерывание от переполнения ТС1 Для расчетов использовать программу AndyRate.exe.

      1. Решение.

.include "8535def.inc"

;------------------ Инициализация векторов прерываний --------------------

.org 0

rjmp Start ;Перепрыгиваем таблицу векторов прерываний

.org OVF1addr

rjmp OVF1addrSUB

;----------------------- Запрет прерываний -------------------------------

Start:

cli

;---------------------- Инициализация стека и периферии ------------------

ldi R16, low(ramend) ;Установка указателя стека

out spl, R16

ldi R16, high(ramend)

out sph, R16

ldi r16, $03 ;ТС1: Коэффициент деления 64

out tccr1b, r16

ldi r16, 0b00000100 ;Разрешаем прерывания от переполнения TC1

out TIMSK, r16

ldi r16, $ff ;Порт А –весь на вывод

out DDRA, r16

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

;================== Основная программа ничего не делает ==================

m1: nop

rjmp m1

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

;--------------- Подпрограмма обработки прерываний от ТС1 ----------------

OVF1addrSUB:

push r16 ;Сохраняем в стеке содержимое r16 (рабочего регистра)

ldi r16, $e0 ;Загружаем рассчитанное по программе AndyRate число

out TCNT1H, r16 ; сначала старший байт

ldi r16, $a8 ;

out TCNT1L, r16 ; затем младший байт

sbis PINA, 3 ;Пропустить строку, если бит 3 порта А выставлен в «1»

rjmp HL_ZERO ; а если нет, то перейти на метку HL_ZERO

sbiс PINA, 3 ;Пропустить строку, если бит 3 порта А сброшен в «0»

rjmp HL_ONE ; а если нет, то перейти на метку HL_ONE

rjmp EXIT_SUB ;Идем к выходу из подпрограммы обр. прерывания

HL_ZERO: sbi PORTA,3 ;Выставить "1" на линию 3 порта А

rjmp EXIT_SUB ;Идем к выходу из подпрограммы обр. прерывания

HL_ONE: cbi PORTA,3 ;Сбросить в "0" линию 3 порта А

rjmp EXIT_SUB ;Идем к выходу из подпрограммы обр. прерывания

EXIT_SUB: pop r16 ;Извлекаем из стека содержимое r16

reti ; выход из подпрограммы обработки прерывания

  1. ПМК ДЗ №7

Написать программу генерации прямоугольных импульсов c частотой следования 3 Гц, с вывода ОС1А, при частоте кварцевого резонатора 1 МГц. Использовать прерывание по совпадению ТС1. Для расчетов использовать программу AndyRate.exe.