Приклад виконання завдання
Завдання до лабораторної роботи
Написати програму для мікроконтролера AT90S2313, яка:
a) виконує пересилку до регістру R числа з SRAM і відображає його на статичному світлодіодному індикаторі, який підключений до порта B мікроконтролера;
b) відображає на індикаторі по черзі молодшу та старшу частину числа з регістру R на індикаторі (схему розробити самостійно).
Перевірити виконання програми в AVR STUDIO. Зібрати схему лабораторного макету у середовищі Proteus. Перевірити працездатність розробленої програми.
Таблиця 1 – Таблиця варіантів завдань
Номер | SRAM | CONST1 | R |
A5 A6 C7 6a 7B 8C 9D AE 7F 6E 8A 8D 9C D6 D5 CF 6D 8A 9E 7F | FE FF FD FC FB FA F1 F2 F3 F4 F5 F6 F7 F8 F8 F9 F1 F2 F3 F4 FF 1F 2E 3D 4C 5B 6A |
Зміст звіту
1. Схема лабораторного макета (схему розробити самостійно).
2. Завдання до лабораторної роботи.
3. Текст програми з поясненнями.
4. Результати виконання програми в AVR STUDIO.
5. Результати роботи лабораторного макета в середовищі Proteus.
Приклад виконання завдання
Написати програму для мікроконтролера AT90S2313, яка:
a) виконує пересилку до регістру R2 числа $6A з комірки SRAM з адресою $7F і відображає його на статичному світлодіодному індикаторі, який підключений до порта B мікроконтролера;
b) відображає на індикаторі по черзі молодшу та старшу частину числа $6A Перевірити виконання програми в AVR STUDIO. Зібрати схему лабораторного макету у середовищі Proteus. Перевірити працездатність розробленої програми.
Виконання першої частини завдання
.def temp =R16 ; присвоїти temp значення R16
clr R27; очистити старший байт Х
LDI R26,$7F; встановити $7F у молодший байт Х
LD R1,X; завантажити в R1 зміст SRAM за адресою 7F
LDI temp,$FF; ініціалізація порта В
OUT $17,temp; порт В настроєний на вивід
M1: OUT $18,R1; вивід через порт В змісту R1 (загорання
; світлодіодів)
RJMP M1
Рисунок 5 – Результат виконання першої частини завдання в AVR Studio
Програма виконання другої частини завдання.
.include "2313def.inc"
.def temp =R16 ;присвоїти temp значення R16
.def fine =R18 ;мітка затримки
.def medium =R19 ;мітка затримки
.def coarse =R20 ;мітка затримки
LDI R17, RamEND ;налаштування стеку
OUT SPL, R17
LDI R17, $6A ;запис в комірку SRAM $7F
STS $7F, R17 ;числа $6A
clr R27 ;очистити старший байт Х
LDI R26,$7F ;встановити $7F у молодший байт Х
LD R1,X ;завантажити в R1 зміст SRAM за адресою $7F
LDI temp,$FF ;ініціалізація порта D, В
OUT $11,temp ;порт D налаштований на вивід
OUT $17,temp ;порт В налаштований на вивід
L1: MOV R17,R1 ;копіювання інформації в R17 з R1
ANDI R17,$0F ;маскування старшого байту числа
OUT $18,R17 ;запис в порт В молодшої частини R17 (загорання ;світлодіодів)
OUT $12, R17 ;запис в порт D молодшої частини R17 (на індикатор)
RCALL delay ;виклик підпрограми затримки
MOV R17,R1 ;копіювання інформації в R17 з R1
ANDI R17,$F0 ;маскування молодшого байту числа
OUT $18,R17 ;запис в порт В старшої частини R17 (загорання ;світлодіодів)
LSR R17 ;зсув усіх біт праворуч (для виводу на індикатор)
LSR R17 ;зсув усіх біт праворуч
LSR R17 ;зсув усіх біт праворуч
LSR R17 ;зсув усіх біт праворуч
OUT $12,R17 ;запис в порт D старшої частини R17
RCALL delay ;виклик підпрограми затримки
RJMP L1
delay: LDI coarse,8;
cagain: LDI medium,255 ;отримання затримки 1/2 секунди
magain: LDI fine,255 ;при 4МГц тактовій частоті
fagain: dec fine;
brne fagain;
DEC medium;
BRNE magain;
DEC coarse;
BRNE cagain;
RET
Рисунок 6 – Результат виконання другої частини завдання (вивід молодшої частини числа)
Рисунок 7 – Результат виконання другої частини завдання (вивід старшої частини числа)
<== предыдущая лекция | | | следующая лекция ==> |
Виконання арифметичних операцій з цілими числами | | | Опитування дискретних датчиків |
Дата добавления: 2015-10-19; просмотров: 814;