Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lab22

.docx
Скачиваний:
28
Добавлен:
15.06.2014
Размер:
82.68 Кб
Скачать

Федеральное Государственное Бюджетное Образовательное Учреждение Высшего Профессионального Образования

"Омский Государственный Технический Университет"

Кафедра "Автоматизация и робототехника"

Отчет о выполнении лабораторной работы №2

по дисциплине : "Микропроцессорные системы управления"

Выполнил:

студент гр. А-518

Тезин А.О.

Проверил:

ст. преподаватель:

Клевакин В. В.

Омск 2012

Цель работы:

Изучение программирования ввода/вывода информации в МК в режиме программного управления портами портами.

Используемые команды:

Ldi Rd,K- загрузка константы в РОН

Out A,Rr – пересылка из РОН в РВВ

Ser Rd – установка всех разрядов РОН

Rcall – относительный выхов программы

Sbr Rd,k- установка разрядов в РОН

Brne k- переход по «не равно»

Cbi A,b – сброс разряда РВВ 0

Sbi A,b – установка разряда РВВ 1

In Rd,A – пересылка из РВВ в РОН

AND Rd,Rr – «Логическое И» двух РОН

Ход работы:

  1. Создаем проект в AVR Studio.

Для создания нового проекта необходимо последовательно выбрать Project - New project. В окне Project Type выбираем ATMEL AVR Assembler, вводим имя проекта и его место расположения. Затем выбираем отладочную платформу (виртуальный отладчик) -AVR Simulator и модель микроконтроллера (AT90S8515).

  1. Набираем текст программы на Ассемблере

.include"8515def.inc"

.include "MyLibSym.inc"

.cseg

.org 0

rjmp init

.org $0d

.include "MyLibPP.inc"

init:

ldi temp, low(RAMEND)

out SPL, temp

ldi temp, high(RAMEND)

out SPH, temp

rcall Config_Port

main:

clr temp

mov out ddra, temp

mov porta, temp

cbi portc, adr1

sbi portc, adr0

cbi portd, RD

in inl, pina

sbi portd, RD

cbi portc, adr0

sbi portc, adr1

cbi portd, RD

in inh, pina

sbi portd, RD

ser temp

mov ddra, temp

mov outh, inh

mov outl, inl

cbi portc, adr1

sbi portc, adr0

mov porta, outl

cbi portd, WR

sbi portd, WR

cbi portc, adr0

sbi portc, adr1

mov porta, outh

cbi portd, WR

sbi portd, WR

rcall delay1

rjmp main

; Содержание файла MyLibSym.inc

.equ adr0 =6

.equ adr1 =7

.equ WR =6

.equ RD =7

.def inl =r3

.def inh =r4

.def outl =r5

.def outh =r6

.def temp =r16

.def temp1 =r17

.def temp2 =r18

; Содержание файла MyLibPP.inc

Config_Port:

ser temp

mov DDRA, temp

ldi temp, (1<<adr0)+(1<<adr1)

out ddrc, temp

ldi temp, (1<<WR)+(1<<RD)

out ddrd, temp

out portd, temp

ret

delay1:

ldi temp2, 25

d0: ser temp1

d1: ldi temp, 209

d2: dec temp

brne d2

dec temp1

brne d1

dec temp2

brne d0

ret

  1. Исправляем ошибки в программе при отладке

Для компиляции проекта необходимо последовательно нажать Build - Build или F7.

Программа выдает сообщение об ошибках (рис.1, рис 2)

Рис.1 сообщение об ошибках в проекте

Рис. 2 сообщения об ошибках в проекте

При нажатии на сообщение об ошибке программа показывает место, содержащее ее.

Код программы после исправления ошибок:

.include"8515def.inc"

.include "MyLibSym.inc"

.cseg

.org 0

rjmp init

.org $0d

.include "MyLibPP.inc"

init:

ldi temp, low(RAMEND)

out SPL, temp

ldi temp, high(RAMEND)

out SPH, temp

rcall Config_Port

main:

clr temp

out ddra, temp

out porta, temp

cbi portc, adr1

sbi portc, adr0

cbi portd, RD

in inl, pina

sbi portd, RD

cbi portc, adr0

sbi portc, adr1

cbi portd, RD

in inh, pina

sbi portd, RD

ser temp

out ddra, temp

mov outh, inh

mov outl, inl

cbi portc, adr1

sbi portc, adr0

out porta, outl

cbi portd, WR

sbi portd, WR

cbi portc, adr0

sbi portc, adr1

out porta, outh

cbi portd, WR

sbi portd, WR

rcall delay1

rjmp main

; Содержание файла MyLibSym.inc

; назначение символических имен

.equ adr0 =6

.equ adr1 =7

.equ WR =6

.equ RD =7

.def inl =r3

.def inh =r4

.def outl =r5

.def outh =r6

.def temp =r16

.def temp1 =r17

.def temp2 =r18

; Содержание файла MyLibPP.inc

Config_Port:

ser temp

out DDRA, temp

ldi temp, (1<<adr0)+(1<<adr1)

out ddrc, temp

ldi temp, (1<<WR)+(1<<RD)

out ddrd, temp

out portd, temp

ret

delay1:

ldi temp2, 25

d0: ser temp1

d1: ldi temp, 209

d2: dec temp

brne d2

dec temp1

brne d1

dec temp2

brne d0

ret

Запускаем компиляцию проекта (рис. 3)

Рис. 3 Сообщение об успешном завершении компиляции

  1. Запускаем программу в пошаговом режиме

Для этого выбираем Debug - Start Debugging. Затем нажимая на F11 или F10 можно в пошаговом режиме проверить правильность выполнения программы.

Результат можно посмотреть в окне I/O View. Изменение содержимого регистров можно посмотреть во вкладке Processor - Registers, или View - register, или на панели инструментов выбрать Toggle Watch Windows и ввести имя переменной для просмотра.

  1. Изменяем существующую программу таким образом, чтобы реализовать процедуру перемножения содержимого двух регистров.

.include"8515def.inc"

.include "MyLibSym.inc"

.cseg

.org 0

rjmp init

.org $0d

.include "MyLibPP.inc"

init:

ldi temp, low(RAMEND)

out SPL, temp

ldi temp, high(RAMEND)

out SPH, temp

rcall Config_Port

main:

clr temp

out ddra, temp

out porta, temp

cbi portc, adr1

sbi portc, adr0

cbi portd, RD

in inl, pina

sbi portd, RD

cbi portc, adr0

sbi portc, adr1

cbi portd, RD

in inh, pina

sbi portd, RD

ser temp

out ddra, temp

and inl, inh

mov outl, inl

cbi portc, adr1

sbi portc, adr0

out porta, outl

cbi portd, WR

sbi portd, WR

rcall delay1

rjmp main

; Содержание файла MyLibSym.inc

.equ adr0 =6

.equ adr1 =7

.equ WR =6

.equ RD =7

.def inl =r3

.def inh =r4

.def outl =r5

.def temp =r16

.def temp1 =r17

.def temp2 =r18

; Содержание файла MyLibPP.inc

Config_Port:

ser temp

out DDRA, temp

ldi temp, (1<<adr0)+(1<<adr1)

out ddrc, temp

ldi temp, (1<<WR)+(1<<RD)

out ddrd, temp

out portd, temp

ret

delay1:

ldi temp2, 25

d0: ser temp1

d1: ldi temp, 209

d2: dec temp

brne d2

dec temp1

brne d1

dec temp2

brne d0

ret

Заключение: В ходе выполнения лабораторной работы была изучена методика программирования ввода/вывода информации в МК в режиме программного управления портами AVR Studio. Успешно был реализован алгоритм заданной программы.

Соседние файлы в предмете Микропроцессорная техника