Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчёт 2лр осмс.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
105.47 Кб
Скачать

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«ОРЕНБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

Электроэнергетический факультет

Кафедра промышленной электроники и информационно-измерительной техники

ОТЧЕТ

по лабораторной работе №2

по курсу «Отладочные средства микропроцессорных систем»

Трансляция и отладка программ сложной структуры

ОГУ 210106.65.6013 О

Руководитель

канд. техн. наук, доцент

________________ А.В. Хлуденёв

«___» _____________ 2013 г.

Исполнители

студенты группы 09ПЭ

________________ И.Г. Андреев

______________ Р.Ф. Мурсалимов

«___» _____________ 2013 г.

Оренбург 2013

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

Трансляция и отладка программ сложной структуры

Цель работы:

Получить практические навыки выполнения трансляции и автономной отладки в среде MPLABIDE программ сложной структуры.

Задание:

Разработать и кодировать на языке Ассемблера МК PIC-microалгоритм программы вычисления арифметического выражения 81*62-43*87.

Рисунок 1 - Схема алгоритма подпрограммы mpy

Исходный текст программы приведён ниже:

1. Для первой части лабораторной работы

;Программа вычисления суммы произведений однобайтных чисел

LIST p=16F877, st=OFF

#include "P16F877.INC"

CBLOCK 0x20 ; Структура данных

Mulcnd ; множимое

Mulplr ; множитель

H_byte ; старший байт произведения

L_byte ; младший байт произведения

Count ; счетчик циклов

H_sum ; старший байт суммы

L_sum ; младший байт суммы

ENDC

ORG 0x000 ;вектор старта

goto Start

;************* Подпрограмма умножения ************

Mpy clrf H_byte

clrf L_byte

movlw 8

movwf Count

movf Mulcnd,w

bcf STATUS,C

Loop rrf Mulplr,f

btfsc STATUS,C

addwf H_byte,f

rrf H_byte,f

rrf L_byte,f

decfsz Count,f

goto Loop

retlw 0

;*************************************************

Start clrw

Main clrf H_sum ;очистить сумму

clrf L_sum

movlw 0x51

movwf Mulplr ;51h умножить на 3Eh

movlw 0x3E

movwf Mulcnd

call Mpy ;вызов подпрограммы

movf H_byte,w

movwf H_sum

movf L_byte,w

movwf L_sum

movlw 0x2B

movwf Mulplr ;2Bh умножить на 57h

movlw 0x57

movwf Mulcnd

call Mpy ;вызов подпрограммы

movf L_byte,w

bcf STATUS,C

subwf L_sum,f ;вычесть мл.байты

movf H_byte,w

subwf H_sum,f ;вычесть ст.байты

goto Main

END

Листинг программы

LOC OBJECT CODE LINE SOURCE TEXT

VALUE

00001 list p=16F877, st=OFF

00002 #include "P16F877.INC"

00001 LIST

00002 ; P16F877.INC Standard Header File, Version 1.00 Microchip Technology, Inc.

00373 LIST

00003 CBLOCK 0x20 ; Структура данных

00000020 00004 Mulcnd ; множимое

00000021 00005 Mulplr ; множитель

00000022 00006 H_byte ; старший байт произведения

00000023 00007 L_byte ; младший байт произведения

00000024 00008 Count ; счетчик циклов

00000025 00009 H_sum ; старший байт суммы

00000026 00010 L_sum ; младший байт суммы

00011 ENDC

00012

0000 00013 ORG 0x000;векторстарта

0000 280F 00014 gotoStart

00015 ;************* Подпрограмма умножения ************

0001 01A2 00016 Mpy clrfH_byte

0002 01A3 00017 clrfL_byte

0003 3008 00018 movlw8

0004 00A4 00019 movwfCount

0005 0820 00020 movfMulcnd,w

0006 1003 00021 bcf STATUS,C

0007 0CA1 00022 Loop rrfMulplr,f

0008 1803 00023 btfscSTATUS,C

0009 07A2 00024 addwfH_byte,f

000A 0CA2 00025 rrfH_byte,f

000B 0CA3 00026 rrfL_byte,f

000C 0BA4 00027 decfszCount,f

000D 2807 00028 gotoLoop

000E 3400 00029 retlw0

00030 ;*************************************************

000F 0103 00031 Start clrw

0010 01A5 00032 Main clrfH_sum;очиститьсумму

0011 01A6 00033 clrfL_sum

0012 3038 00034 movlw 0x38

0013 00A1 00035 movwfMulplr;38hумножитьна 18h

0014 3018 00036 movlw0x18

0015 00A0 00037 movwfMulcnd

0016 2001 00038 call Mpy ;вызовподпрограммы

0017 0822 00039 movfH_byte,w

0018 00A5 00040 movwfH_sum

0019 0823 00041 movfL_byte,w

001A 00A6 00042 movwfL_sum

001B 3025 00043 movlw0x25

001C 00A1 00044 movwfMulplr;25hумножитьна 62h

001D 3062 00045 movlw0x62

001E 00A0 00046 movwfMulcnd

001F 2001 00047 call Mpy;вызовподпрограммы

0020 0823 00048 movfL_byte,w

0021 1003 00049 bcf STATUS,C

0022 07A6 00050 addwfL_sum,f;сложитьмл.байты

LOC OBJECT CODE LINE SOURCE TEXT

VALUE

0023 1C03 00051 btfss STATUS,C

0024 2826 00052 goto Summ1

0025 0AA5 00053 incfH_sum,f

0026 0822 00054 Summ1 movfH_byte,w

0027 07A5 00055 addwfH_sum,f ;сложитьст.байты

0028 1003 00056 bcf STATUS,C

0029 30E8 00057 movlw 0xE8

002A 07A6 00058 addwfL_sum,f

002B 1C03 00059 btfss STATUS,C

002C 282E 00060 gotoSumm

002D 0AA5 00061 incfH_sum,f

002E 3003 00062 Summmovlw 0x03

002F 07A5 00063 addwfH_sum,f

0030 2810 00064 gotoMain

00065 END

MEMORY USAGE MAP ('X' = Used, '-' = Unused)

0000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X---------------

All other memory blocks unused.

Program Memory Words Used: 49

Program Memory Words Free: 8143

Errors : 0

Warnings : 0 reported, 0 suppressed

Messages : 0 reported, 0 suppressed