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

Volkov / ЛР_3 Шутова Д.С

.docx
Скачиваний:
12
Добавлен:
28.03.2015
Размер:
27.88 Кб
Скачать

Нижегородский государственный технический университет им. Р.Е. Алексеева

Кафедра «Компьютерные технологии в проектировании и производстве»

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

Изучение директив и логических команд микроконтроллера и препроцессора

выполнил:

студент группы М13-КТЭС

Шутова Д.С

проверил:

Волков М.Б

Нижний Новгород

2014 г.

Цель работы: Изучить директивы и логически команды компилятора MPASM. Разработать алгоритм решения проблемы, в соответствии с которым, используя систему команд, написать программу для МК.

Задание: Разработать программу вычисления двух значений Y*1 и Y*2, по уравнениям. Неизвестные уравнений соответствуют трём переменным, где 1 – день рождения, 2 – месяц рождения, 3 – год рождения. Продемонстрировать разработанную программу в интегрированной среде разработки.

Выполнение:

Вариант №6:

  1. Краткое описание команд и директив:

Директивы бывают:

  • директивы контроля;

    • #define;

    • #include;

    • #undefine;

    • constant;

    • end;

    • equ;

    • org;

    • processor;

    • radix;

    • set;

    • variable;

  • директивы условий;

    • else;

    • endif;

    • endw;

    • if;

    • ifdef;

    • ifndef;

    • while;

  • директивы управления данными;

  • __badram;

  • __badrom;

  • __config;

  • __idlocs;

  • __maxram;

  • __maxrom;

  • cblock;

  • da;

  • data;

  • db;

  • de;

  • dt;

  • dw;

  • endc;

  • fill;

  • res;

  • директивы формирования листинга;

    • error;

    • errorlevel;

    • list;

    • messg;

    • nolist;

    • page;

    • space;

    • subtitle;

    • title

  • директивы управления макросом;

    • endm;

    • exitm;

    • expand;

    • local;

    • macro;

    • noexpand;

  • директивы управления объектным файлом.

    • access_ovr;

    • bankisel;

    • banksel;

    • code;

    • code_pack;

    • extern;

    • global;

    • idata;

    • idata_acs;

    • pagesel;

    • pageselw;

    • udata;

    • udata_acs;

    • udata_ovr;

    • udata_shr;

  1. Алгоритм

Начало

W=27 X1=W

A1:

W=02 X2=W

A2:

W=92 X3=W

A3:

W=0

W=~X1 n_X1=W

W=~X3 n_X3=W

W=X2 W=n_X1&W

W=n_X3&W

tmp1=W

t6_1=W

W=~tmp1

tmp1=W

A4:

A5:

A6:

A7:

W=0

W=~X2 n_X2=W

W=X1 W=n_X2&W

W= X3&W

tmp2=W

t6_2=W

W=~tmp2

tmp2=W

A8:

A9:

A10:

W=0

W=tmp1 W=tmp2|W

Y1=W

A11:

A12:

W=0

A13:

W=t6_1 W=t6_2||W

Y2=W

A14:

Конец

  1. Код программы

; Lab_3

;-------------------------------

#include<p16F877.inc> ; подключение заголовочного файла

; для МК PIC 16F877

;-------------------------------

X1 EQU 0x20 ;

X2 EQU 0x21 ;

X3 EQU 0x22 ;

n_X1 EQU 0x23 ;

n_X2 EQU 0x24 ;

n_X3 EQU 0x25 ;

t6_1 EQU 0x28 ;

t6_2 EQU 0x29 ;

t_val_1 EQU 0x2A ;

t_val_2 EQU 0x2B ;

Y1 EQU 0x2C ;

Y2 EQU 0x2D ;

;-------------------------------

org 0x00 ; начало памяти программ (ПП)

goto main ; произвести переход на метку 'main',

; с которой начнётся выполнение

; основной программы

org 0x05 ; адрес начала размещения кода в ПП

;-------------------------------

main:

;------------------------------- ; загрузка данных в переменные

A1: movlw D'27' ; W = 27

movwf X1 ; X1 = W

A2: movlw D'02' ; W = 02

movwf X2 ; X2 = W

A3: movlw D'92' ; W = 92

movwf X3 ; X3 = W

;------------------------------- ;

A4: clrw ; W = 0

A5: comf X1,W ; W =~ X1

movwf n_X1 ; n_X1 = W

A6: comf X3,W ; W =~ X3

movwf n_X3 ; n_X3 = W

;------------------------------- ; расчёт 1-ой части 1-го уравнения

A7: movfw X2 ; W = 02

andwf n_X1,W ; W = n_X1 & X2

andwf n_X3,W ; W = W & n_X3

movwf t6_1 ; t6_1 = W

comf t6_1,W ; W =~ t6_1

movwf t_val_1 ; t_val_1 = W

;------------------------------- ;

A8: clrw ; W = 0

;------------------------------- ; расчёт 2-ой части 1-го уравнения

A9: comf X2,W ; W =~ X2

movwf n_X2 ; n_X2 = W

A10: movfw X1 ; W = 27

andwf n_X2,W ; W = W & n_X2

andwf X3,W ; W = W & X3

movwf t6_2 ; t6_2 = W

comf t6_2,W ; W =~ t6_2

movwf t_val_2 ; t_val_2 = W

;------------------------------- ;

A11: clrw ; W = 0

;------------------------------- ; расчёт общей части уравнения

A12: movfw t_val_1 ; W = t_val_1

iorwf t_val_2,W ; W = t_val_1 | t_val_2

movwf Y1 ; Y1 = W

;------------------------------- ;

A13: clrw ; W = 0

;------------------------------- ; расчёт 2-го уравнения

A14: movfw t6_1 ; W = t6_1

xorwf t6_2,W ; W = t6_1 || t6_2

movwf Y2 ; Y2 = W

goto main

END

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

??????

  1. Вывод

Соседние файлы в папке Volkov