Скачиваний:
21
Добавлен:
23.06.2014
Размер:
50.69 Кб
Скачать

Федеральное Агентство по образованию РФ

Томский Межвузовский Центр дистанционного образования

Томский государственный университет

систем управления и радиоэлектроники (ТУСУР)

Кафедра промышленной электроники (ПрЭ)

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

По дисциплине: «Основы микропроцессорной техники»

Тема: «Отладка прикладных программ для микропроцессора серии МК48»

(Учебные пособия: «Основы микропроцессорной техники» автор: Шарапов А.В., Томск-2002; 2003)

Выполнил:

Студент ТМЦДО

Гр.

Специальность: 210106(200400)

Ф.И.О.

логин

пароль

19 марта 2009 г.

Н-ск 2009

Цель работы: приобретение навыков отладки прикладных программ для однокристальных микроконтроллеров семейства МК48 с помощью программных средств: ассемблера, линковщика и эмулятора.

    1. Создадим исходный код программы TEST1.asm, реализующей 8-канальный распределитель логической единицы по линиям порта Р1:

MOV A,#1

M1: OUTL P1,A

RL A

NOP

DJNZ R1,$

JMP M1

END

    1. В результате выполнения программы TEST1 , единица в аккумуляторе циклически сдвигается влево, при выполнении команды DJNZ R1,$ содержимое R1 уменьшается от FF до 0. Замена команды NOP командой INC A приводит к изменению содержимого аккумулятора (прибавление 1 к содержимому А с каждым циклом). При замене RL на RR, происходит изменение направления сдвига, состояние триггера переноса С не изменяется.

2.1 В режиме PatchCode запишем программу временной задержки:

MOV R0,#0

DJNZ R0,$

2.2 С помощью счетчика циклов (Set Cycles), определили время выполнения программы задержки, оно составляет 514 циклов.

3.1 Запишем код программы PROG.asm:

EN I

JMP M1

JMP CLOK

M1: STRT CNT

INC A

MOVD P4,A

SWAP A

MOVD P5,A

JMP M1

CLOK: ENT0 CLK

RETR

END

3.2 Изменение содержимого порта Р2 , вызвано использованием четырех младших разрядов (Р2.0 – Р2.3) для подключения расширителя ввода/вывода (4-х разрядные порты Р4, Р5). При работающей программе, имитация программного прерывания (INT=0), вызывает программу обслуживания прерывания CLOK, управление передается по адресу 0003h (JMP CLOK). Прерывание по таймеру можно запретить, выполнив системный сброс или команду DIS TCNTI. При вызове подпрограммы указатель стека изменяется с 00 на 01, а в стек заносится адрес следующей команды. При возврате из подпрограммы по команде RETR – содержимое стека восстанавливается прежним. При наличии внешних событий, каждое событие увеличивает содержимое таймера/счетчика Т1, после того как в Т1 значение превысит FF, таймер/счетчик обнуляется и выставляется в tf единица.

4.1 Проверим на эмуляторе работу программы COMP.asm, формирующей в аккумуляторе двоично-десятичный код числа датчиков, информация с которых превышает пороговое значение, находящееся в аккумуляторе. Код программы COMP.asm:

MOV R2,#0

MOV R0,#32

MOV R7,#32

CPL A

MOV R1,A

M1: MOV A,R1

ADD A,@R0

JNC M2

XCH A,R2

ADD A,#1

DA A

XCH A,R2

M2: INC R0

DJNZ R7,M1

MOV A,R2

4.2 Работа программы COMP.asm: после выполнения команды ADD A,@R0, проверяется наличие флага переноса С, при отсутствии флага – происходит переход на метку М2, при наличии флага переноса (А < @R0) – выполняется обмен А и R2, к содержимому А добавляется #1 выполняется десятичная коррекция и производится обмен содержимого А и R2.

5.2 Разработаем и отладим программу (задание 12) TEST12.asm, которая выводит в линии порта Р1 – «бегущий» 0 меняющий направление. Код программы:

MOV A,#0FEH ;в А 11111110

M1: OUTL P1,A ;А в Р1

RL A ;сдвиг А влево

NOP ;холостая команда

DJNZ R1,$ ;временная задержка

JB7 M1 ;переход если бит А (b=7) единица

M2: OUTL P1,A

RR A ;сдвиг А вправо

NOP

DJNZ R1,$

JB0 M2 ;переход если бит А (b=0) единица

JMP M1 ;зацикливание программы

END

6. Ответы на контрольные вопросы:

  • SEL MB1 ;выбор первого банка ПП

JMP adr ;переход к подпрограмме adr

  • Для условного перехода из первой страницы программной памяти в третью необходимо чтобы команда перехода по условию указывала на команду JMP XXH, где ХХ-8ми разрядный адрес продолжения программы в третьей странице, т.к команда JMP позволяет передать управление в переделах банка памяти.

  • Системный сброс устанавливает PC и SP в нулевое состояние, выбирает RB0 и МВ0, запрещает прерывания, останавливает таймер/счетчик, сбрасывает в нуль флаги пользователя F0 и F1, запрещает выдачу тактовых импульсов на вывод Т0, подготавливает порты Р1 и Р2 для приема информации (выводит в них байт единиц).

  • Время выполнения программы можно оценить с помощью счетчика циклов (Set Cycles).

Соседние файлы в папке 2-12_Лабораторная_Основы микропроцессорной техники
  • #
    23.06.2014541 б19TEST1.OBJ
  • #
    23.06.2014129 б17TEST12.ASM
  • #
    23.06.201475 б17TEST12.HEX
  • #
    23.06.20141.01 Кб17TEST12.LST
  • #
    23.06.2014586 б17TEST12.OBJ
  • #
    23.06.201450.69 Кб21ОМТ_lab_2.doc