- •Пмк дз Общие требования
- •Решение.
- •Решение.
- •Решение.
- •Решение.
- •Решение.
- •Решение.
- •Решение.
- •Решение.
- •Решение.
- •Пример выполнения задания
- •Решение.
- •Пример выполнения задания
- •Решение.
- •Пример выполнения задания
- •Решение.
- •Пример выполнения задания
- •Решение.
- •Пример выполнения задания
- •Решение.
- •Пример выполнения задания
- •Решение.
Пмк дз Общие требования
Все ДЗ и КР выполняются в рукописном варианте. Напечатаные на компьютере не рассматриваются.
Каждая строка программы должна содержать комментарии. Отсутствие комментариев – минус 0,3 балла.
Каждая программа (начиная с ДЗ3 и КР3) должна начинаться с модуля инициализации. Отсутствие модуля инициализации – минус 0,3 балла.
Обязательный состав модуля инициализации:
Подключить файл 8535def.inc.
Инициализировать вектора используемых прерываний.
Запретить глобально прерывания.
Инициализировать стек.
Конфигурирование устройств ввода-вывода микроконтроллера (портов, ТС и т.д.)
Разрешить глобально прерывания.
Документация, необходимая для выполнения заданий (бумажные копии).
Система команд микроконтроллера AT90S8535.
Конспект лекций по курсу «Программирование микроконтроллеров»
ПМК ДЗ №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
Сконфигурировать порты микроконтроллера: PORTA – весь на вход, PORTB – весь на выход, PORTC – бит 7 на вход, а остальные на выход.
Вывести данные из регистра R16 в порт PORTB.
Ввести данные из порта PORTA в регистр Temp
Сконфигурировать сторожевой таймер на 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
Написать программу инициализации прерываний от различных источников.
Состав модуля инициализации:
Подключить файл 8535def.inc.
Инициализировать вектора используемых прерываний.
Запретить глобально прерывания.
Инициализировать стек.
Разрешить прерывание по спадающему фронту на входе INT0 и по нарастающему на INT1
Задать режим Idle и разрешить его.
Разрешить глобально прерывания.
Состав основного программного модуля:
Включить режим пониженного энергопотребления
Оформить подпрограммы обработки прерываний