Лабораторная работа № 2

Исследование архитектуры однокристальных микроконтроллеров семейства MCS-51

Цель работы. Знакомство с организацией, программно-доступными элементами и системой команд однокристального микроконтроллера (ОМК) i8051 семейства MCS-51.

Описание лабораторного стенда. В качестве лабораторного стенда используется IBM-совместимый персональный компьютер с установленной интегрированной средой разработки программ Keil µVision.

Подготовка к работе

1. Изучить по конспекту лекций и приведенной ниже литературе следующие вопросы:

· состав и организация ОМК К1816ВЕ51;

· система команд ОМК;

· режимы работы узлов ОМК.

2. Настроить среду разработки программ Keil µVision

3. Выполнить задания по варианту 2.

 

Ход выполнения работы.

1.Настройка среды разработки программ

· Создать новый проект, используя Project -> New Project

· Создать новый файл для последующего ввода текста программы и сохранить его в папку проекта с расширением .asm

· Ввести текст программы

· Добавить файл с исходным текстом программы в проект.

· Далее необходимо выполнить компиляцию проекта, используя Project -> Built Target .

· Запустить отладку программы с помощью команды Debug -> Start / Stop Debug Session .

· Открыть окно памяти с помощью View -> Memory Window

· Затем, в открытом окне в поле Address ввести начальный адрес «дампа» резидентной памяти данных, например I: 20h

2.Выполнение задания

Задание 1. Обменять между собой содержимое ячеек 20Н и 22Н без потери содержимого аккумулятора.

org 0

XCH A, 20h ; обменять содержимое А и ячейки 20; A=4 20h=0;

XCH A, 22h ; обменять содержимое А и ячейки 22; A=7 22h=4;

XCH A, 20h ; обменять содержимое А и ячейки 20; A=0 20h=7;

END

 

Значение ячеек памяти перед выполнением программы.

Значение ячеек памяти после выполнением программы.

 

Задание 2. Вычислить выражение X1 div X2 + X3. Однобайтовые значения X1,X2,X3 хранятся в ячейках 20h,21h,22h соответственно; результат поместить в ячейку 23h.

org 0

MOV A, 20h ; загрузить значение из 20h в А

MOV B, 21h ; загрузить значение из 21h в В

DIV AB ; целая часть в А=A/B

MOV B, 22h ; загрузить значение из 22h в В

ADD A, B ; сложить значение хранящиеся в А и В

XCH A, 23h ; обменять А и ячейку 23h

END

Значение ячеек памяти перед выполнением программы:

Значение ячеек памяти после выполнения программы

Задание 3. Ввести из порта Р1 число (от 0 до 7) и, в зависимости от значения введенного числа, осуществить переход по адресу 40h, 58h, 60h, 32h, 56h, 36h, 65h, 20h (использовать команду косвенного перехода).

ORG 0

MOV @R0, P1

m0: CJNE R0,#0,m1 ; Если значение в R0 не равно 0 то перейти на метку m1

MOV A, #0 ; поместить в А 0

MOV DPTR, #40h; поместить в DPTR 40h

JMP @A+DPTR ; выполнить косвенный переход на A+DPTR

m1: CJNE R0,#1,m2

MOV A, #0

MOV DPTR, #58h

JMP @A+DPTR

m2: CJNE R0,#2,m3

MOV A, #0

MOV DPTR, #60h

JMP @A+DPTR

m3: CJNE R0,#3,m4

MOV A, #0

MOV DPTR, #32h

JMP @A+DPTR

m4: CJNE R0,#4,m5

MOV A, #0

MOV DPTR, #56h

JMP @A+DPTR

m5: CJNE R0,#5,m6

MOV A, #0

MOV DPTR, #36h

JMP @A+DPTR

m6: CJNE R0,#6,m7

MOV A, #0

MOV DPTR, #65h

JMP @A+DPTR

m7: CJNE R0,#7,m0

MOV A, #0

MOV DPTR, #20h

JMP @A+DPTR

END

Вывод: Приобретён опыт работы в IDE Keil uVision, а именно в написании программы под i8051микроконтроллеры и их отладки. Изучена и опробована система команд однокристального микроконтроллера i8051. Изучены принципы работы с портами и памятью.

 

 

Выполнил Кочубей П.М Мартынова А.С

 

Проверил: Онышко Д.А