Порядок выполнения работы

1. Набрать исходный текст примера программы, произвести его трансляцию. Запустить отладчик-симулятор, загрузить программу в НЕХ-формате.

2. По заданию преподавателя занести исходные данные в соответствующие регистры или ячейки ОЗУ.

3. Выполняя программу в пошаговом режиме (клавиша F10), прослеживать логику выполнения программы, наблюдать за соответствующими изменениями содержимого аккумулятора, регистров, ячеек ОЗУ, признака С.

4. Проверить полученный результат.

5. Повторить пп.2-4 для других данных.

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

РАЗРАБОТКА И ОТЛАДКА ПРОГРАММ С ИСПОЛЬЗОВАНИЕМ ПОДПРОГРАММ. РАБОТА С ЛИНИЯМИ ВВОДА-ВЫВОДА

Цель работы: закрепление знаний по данной теме, полученных на лекционных занятиях.

Пояснения к работе

Основные теоретические знания студенты получают в ходе лекционных занятий. Ниже приводятся типовые примеры программ по данной теме.

 


;1)принять через P1 байт информации,

;   при (B4)=0 вывести через BUS (2AH)

;   при (B4)=1 вывести через BUS (3AH)

MOV A,#0FFH; подготовка порта

OUTL P1,A;   P1 к вводу

IN A,P1;   (A)<--(P1)

JB4 M1;  переход при (B4)=1

MOV R1,#2AH; иначе ук-ть на яч. 2AH

JMP M2;     обход

M1: MOV R1,#3AH; указать на яч. 3AH

M2: MOV A,@R1; вывод сод-го ячейки

OUTL BUS,A;     через порт BUS

END

;2)принять через BUS байт информации,

;если принято  BBH, то вывести через P1;(R7),

; иначе вывести через P1 (3AH)

INS A,BUS; (A)<--(BUS)

XRL A,#0BBH; если принято BBH, то

JZ M1;     переход

MOV R0,#3AH; иначе

MOV A,@R0; (A)<--(3AH)

     

JMP M2;   обход (A)<--(R7)

M1: MOV A,R7; (A)<--(R7)

M2: OUTL P1,A; (P1)<--(A)

END

;3)принять через P1 первое число

;принять через P2 второе число,

;если первое > второго найти их разность,

; иначе найти их сумму

;результат отнять от (R7)

;окончательный рез-т вывести через BUS

MOV A,#0FFH; подготовка

OUTL P1,A;   портов P1

OUTL P2,A;   и P2 к вводу

IN A,P1;   принять и сохра-

MOV R3,A;    нить 1-е число

IN A,P2;   принять и сохра-

MOV R4,A;    нить 2-е число

CLR C;   очистка C

CPL A;   сравнить 2-е и 1-е

ADD A,R3;    числа

JNC M1;  переход, если 2-е > 1-го

CALL RAZN;иначе вызов п/п разности

JMP M2;  обход суммирования

M1: CALL SUM; вызов п/п суммы

 

M2: MOV A,R7; подготовка к вызову

MOV R3,A;    п/п разности

    MOV A,R2;    с новыми данными

MOV R4,A; (R2)<--(R7)-(R2)

CALL RAZN; вызов п/п разности

MOV A,R2; вывод окончательного

OUTL BUS,A; результата через BUS

JMP EXIT;  обход подпрограмм

;п/п нахождения разности

;(R2)<--(R3)-(R4)

RAZN: MOV A,R3;

CPL A;

ADD A,R4;

CPL A;

MOV R2,A;

RET  ;

;п/п нахождения суммы

;(R2)<--(R3)+(R4)

SUM: MOV A,R3;

ADD A,R4;

MOV R2,A;

RET  ;

EXIT: NOP  ;

END




Порядок выполнения работы

1. Набрать исходный текст примера программы, произвести. Запустить отладчик-симулятор, загрузить программу в НЕХ-формате.

2. Получить исходные данные у преподавателя, занести их в соответствующие регистры, ячейки ОЗУ или порты.

3. Выполняя программу в пошаговом режиме (клавиша F10), наблюдать за соответствующими изменениями содержимого аккумулятора, регистров, ячеек ОЗУ, признака С, портов, счетчика команд РС, указателя стека SP, содержимого стека (PC, SP, стек - для примера N3).

4. Повторить пп.2,3 для других значений.

5. Повторить пп.2-4 для других примеров программ.

 

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

РАЗРАБОТКА И ОТЛАДКА ПРОГРАММ, ИСПОЛЬЗУЮЩИХ ТАЙМЕР/СЧЕТЧИК, ОБРАБОТКА ВНЕШНЕГО ПРЕРЫВАНИЯ И ПРЕРЫВАНИЯ ОТ ТАЙМЕРА

Цель работы: закрепление знаний по данной теме, полученных на лекционных занятиях.

Пояснения к работе

Основные теоретические знания студенты получают в ходе лекционных занятий. Ниже приводятся типовые примеры программ по данной теме.

 


;1) бесконечный подсчет импульсов на T0

; 1 вариант

    MOV R6,#00H; очистка R6

M0: JT0 M0     ; ожидание "0"

    INC R6;подсчет очередного имп-са

    MOV R7,#08H; задержка

M1: DJNZ R7,M1; на 50 мкс (20 м.ц.) и

    JMP M0    ; возврат на ожид-е "0"

    NOP

; 2 вариант

    MOV R6,#00H; очистка R6

M10: JT0 M10  ; ожидание "0"

     INC R6; подсчет очередного имп-са

M11: JNT0 M11; ожидание "1"

     JMP M10; возврат на ожидание "0"

     END

 

;2) задержка на 4000 мкс (4000/80=50 тик)

   MOV A,#0CEH; 256-50=206=CEH

   MOV T,A;

   STRT T   ;запуск таймера

M0: JTF M1   ;ожидание переполнения

   JMP M0        ; таймера

M1: STOP TCNT; останов т/с

   END

;3) задержка на 20 с

 ;(на вход T1 подаются имп-сы с T=1с)

   MOV A,#0ECH; 256-20=236=ECH

   MOV T,A;

   STRT CNT;запуск в режиме счетчика

M0: JTF M1  ;ожидание переполнения

   JMP M0 ;  таймера

M1: STOP TCNT; останов т/с

   END

 

;4) подсчет импульсов на T0 за 4000 мкс

   MOV A,#0CEH; 256-50=206=CEH

   MOV T,A;

   STRT T; запуск таймера

M0: JNT0 M1; ожидание "0"

   JTF M2; проверка выхода по времени

   JMP M0; продолжить ожидание "0"

M1: INC R6; подсчет очередного имп-са

   MOV R7,#08H; задержка

M3: DJNZ R7,M3; на 50 мкс (20 м.ц.) и

   JMP M0;        возврат на ожид-е "0"

M2: STOP TCNT; останов т/с

   END

 

;5) подсчет 10 импульсов на входе T0

   MOV R6,#00H; очистка R6

M0: JT0 M0; ожидание "0"

   INC R6; подсчет очередного имп-са

   MOV A,R6; проверка R6

    XRL A,#0AH; на 10

    JZ M2;         и выход при (R6)=10

M1: JNT0 M1; ожидание "1"

   JMP M0; возврат на ожидание "0"

M2: NOP

   END


 

; 6) выдержка времени в 1сек с использованием прерываний от таймера

; R6 - счетчик числа переполнений T, 49 переполнений=1 003 520 мкс

        JMP START; переход на начало  основной программы

       NOP

       NOP

       NOP

       NOP

NOP

       INC R6; вектор 7

       RETR

START: MOV R6,#00H; очистка R6

            EN TCNTI; разрешение прерываний от Т/С ((tie)=1)

            MOV A,#2CH; запись в Т 44 (44*80=3520 мкс),

          MOV T,A        ;   т.е. лишнего времени

            STRT T; запуск таймера

; выдержка 1 сек

M0:     MOV A,R6    ; проверка (R6)

           XRL A,#31H; на 49 переполнений

           JNZ M0      ; возврат, если не 49

; останов таймера/счетчика

      STOP TCNT

; запрещение прерываний

           DIS TCNTI; (tie)=0

 END

; 7) подсчет 10 импульсов на входе INT с использованием внешнего прерывания

; R6 - счетчик числа импульсов

     JMP START; переход на начало основной программы

     NOP

     INC R6; вектор 3

MOV R7,#96H; задержка для окончания

Z0:    DJNZ R7,Z0; импульса

     RETR

START: MOV R6,#00H; очистка R6

         EN I; разрешение внешних прерываний ((ie)=1)

; подсчет 10 импульсов

M0:     MOV A,R6; проверка (R6)

          XRL A,#0AH; на 10

          JNZ M0     ; возврат, если не 10

; запрещение внешних прерываний

          DIS I; (ie)=0

END



Порядок выполнения работы

1. Выполнить пп.1 и 2 лабораторной работы №2. С помощью счетчика машинных циклов можно следить за временем (1 м.ц.= 2,5 мкс).

2. На входах Т0, Т1, INT  установить логическую "1".

3. Выполняя программу в пошаговом режиме или в непрерывном со средней скоростью, прослеживать логику выполнения программы, наблюдать за соответствующими изменениями содержимого аккумулятора, регистров, таймера, признака переполнения таймера, признаков разрешения прерываний. Подача импульса на вход Т0, Т1, INT осуществляется сменой на соответствующем входе логической "1" на логический "0" и через "некоторое время" возврата "1". Повторить п.3 для других примеров программ.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: