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

Пмк дз Общие требования

  1. Все ДЗ и КР выполняются в рукописном варианте. Напечатаные на компьютере не рассматриваются.

  2. Каждая строка программы должна содержать комментарии. Отсутствие комментариев – минус 0,3 балла.

  3. Каждая программа (начиная с ДЗ3 и КР3) должна начинаться с модуля инициализации. Отсутствие модуля инициализации – минус 0,3 балла.

Обязательный состав модуля инициализации:

    1. Подключить файл 8535def.inc.

    2. Инициализировать вектора используемых прерываний.

    3. Запретить глобально прерывания.

    4. Инициализировать стек.

    5. Конфигурирование устройств ввода-вывода микроконтроллера (портов, ТС и т.д.)

    6. Разрешить глобально прерывания.

Документация, необходимая для выполнения заданий (бумажные копии).

  1. Система команд микроконтроллера AT90S8535.

  2. Конспект лекций по курсу «Программирование микроконтроллеров»

ПМК ДЗ №1

Задание: Дать комментарии к каждой строке программы (строки программы между собой не связаны. Задание предназначено только для ознакомления с типовыми командами).

Решение.

CPSE Temp, R14 ;Пропустить следующую строку, если содержимое ; регистров Temp и R14 одинаково

CPI R18, $A0 ;Сравнить содержимое регистра R18 с

; константой $А0

AND Temp2, r10 ;Произвести логическое «И» между содержимым

; регистров Temp2 и r10

MOV r16, Temp3 ;Скопировать содержимое регистра Temp3 в

; регистр r16

ANDI Temp, 0b00001111 ;Произвести логическое «И» между содержимым

; регистра Temp и константой 0b00001111

SBR r20,$F0 ;Выставить в «1» биты с 7 по 4 в регистре r20

SWAP R21 ;обменять местами нибблы регистра r21

POP R16 ;Извлечь из стека байт в регистр r16

SBIS PINA, 0 ;Пропустить следующую строку, если бит 0 в

; порту А выставлен в «1»

SBI ADMUX, MUX0 ;Выставить в «1» бит MUX0 в регистре ADMUX

BRLT M1 ;Перейти на метку М1, если меньше

PUSH R16 ;Занести содержимое регистра r16 в стек

SBRS Temp, 5 ;Пропустить следующую строку, если бит 5 в

; регистре Temp выставлен в «1»

RET ;Выход из подпрограммы

OUT TIFR, Temp2 ;Вывести в регистр TIFR регистр Temp2

SLEEP ;Переход в режим пониженного э/потребления

LDI R17,$10 ;Записать в регистр r17 константу $10

LSR R1 ;Логический сдвиг влево содержимого рег. R1

NOP ;Нет операции

CLZ ;Сброс флага Z

IN Temp, PINC ;Ввод в регистр Temp данных из порта C

DEC r30 ;Уменьшение на 1 содержимого регистра r30

WDR ;Сброс сторожевого таймера

ПМК ДЗ №2

  1. Сконфигурировать порты микроконтроллера: PORTA – весь на вход, PORTB – весь на выход, PORTC – бит 7 на вход, а остальные на выход.

  2. Вывести данные из регистра R16 в порт PORTB.

  3. Ввести данные из порта PORTA в регистр Temp

  4. Сконфигурировать сторожевой таймер на Time-Out=60 ms, включить и выключить его.

Решение.

.include "8535def.inc"

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

ldi r16, $00 ;Конфигурируем порт А на вход

out DDRA,r16

ldi r16, $ff ;Конфигурируем порт В на выход

out DDRB,r16

ldi r16, 0b01111111 ;Конфигурируем порт C

out DDRC,r16

;------------------------ Ввод-вывод данных ------------------------------

out PORTB, r16 ;Вывод данных из регистра r16 в порт B

in Temp, PINA ;Ввод данных из порта A в регистр Temp

;----------------- Конфигурация сторожевого таймера ----------------------

wdr ;Сброс сторожевого таймера

; (обязательно перед включением)

ldi r16, 0b00001010 ;Задание Time-Out=60 ms и включение

out WDTCR, r16 ; сторожевого таймера

ldi r16, 0b00011000 ;Разрешение выключения сторожевого таймера

out WDTCR, r16

ldi r16, $00 ;Выключение сторожевого таймера

out WDTCR, r16

ПМК ДЗ №3

Написать программу инициализации прерываний от различных источников.

Состав модуля инициализации:

  1. Подключить файл 8535def.inc.

  2. Инициализировать вектора используемых прерываний.

  3. Запретить глобально прерывания.

  4. Инициализировать стек.

  5. Разрешить прерывание по спадающему фронту на входе INT0 и по нарастающему на INT1

  6. Задать режим Idle и разрешить его.

  7. Разрешить глобально прерывания.

Состав основного программного модуля:

  1. Включить режим пониженного энергопотребления

  2. Оформить подпрограммы обработки прерываний