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

книги / Вычислительная техника и информационные технологии. Цифровые автоматы и микроконтролеры. Руководство к лабораторным работам в системе PROTEUS 7.2 SP6

.pdf
Скачиваний:
15
Добавлен:
12.11.2023
Размер:
4.8 Mб
Скачать

SADEN0

EQU 0B9H

SADEN1

EQU 0BAH

SCON1EQU 0C0H

SBUF1 EQU 0C1H

ROMSIZE

EQU 0C2H

PMR

EQU 0C4H

STATUS

EQU 0C5H

TA

EQU 0C7H

T2CONEQU 0C8H

T2MOD

EQU 0C9H

RCAP2L

EQU 0CAH

RCAP2H

EQU 0CBH

TL2

EQU 0CCH

TH2

EQU 0CDH

PSW

EQU 0D0H

WDCON

EQU 0D8H

ACC

EQU 0E0H

EIE

EQU 0E8H

B

EQU 0F0H

EIP

EQU 0F8H

;Директива BIT определяет новый символ для

;битовой области, равный данному выражению

;*** Bit equate table

IT0

BIT 88H

IE0

BIT 89H

IT1

BIT 8AH

IE1

BIT 8BH

TR0

BIT 8CH

TF0

BIT 8DH

TR1

BIT 8EH

TF1

BIT 8FH

P1_0

BIT 90H

P1_1

BIT 91H

111

P1_2

BIT 92H

P1_3

BIT 93H

P1_4

BIT 94H

P1_5

BIT 95H

P1_6

BIT 96H

P1_7

BIT 97H

RI

BIT 98H

TI

BIT 99H

RB8

BIT 9AH

TB8

BIT 9BH

REN

BIT 9CH

SM2

BIT 9DH

SM1

BIT 9EH

SM0

BIT 9FH

EX0

BIT 0A8H

ET0

BIT 0A9H

EX1

BIT 0AAH

ET1

BIT 0ABH

ES

BIT 0ACH

ET2

BIT 0ADH

ES1

BIT 0AEH

EA

BIT 0AFH

P3_0

BIT 0B0H

P3_1

BIT 0B1H

P3_2

BIT 0B2H

P3_3

BIT 0B3H

P3_4

BIT 0B4H

P3_5

BIT 0B5H

P3_6

BIT 0B6H

P3_7

BIT 0B7H

PX0

BIT 0B8H

PT0

BIT 0B9H

PX1

BIT 0BAH

112

PT1

BIT 0BBH

PS

BIT 0BCH

PT2

BIT 0BDH

PS1

BIT 0BEH

RI_1

IT 0C0H

TI_1

IT 0C1H

RB8_1

IT 0C2H

TB8_1

IT 0C3H

REN_1

IT 0C4H

SM2_1

IT 0C5H

SM1_1

IT 0C6H

SM0_1

IT 0C7H

C_RL2 IT 0C8H

C_T2

BIT 0C9H

TR2

BIT 0CAH

EXEN2BIT 0CBH

TCLK BIT 0CCH

RCLK BIT 0CDH

EXF2

BIT 0CEH

TF2

BIT 0CFH

P

BIT 0D0H

FL

BIT 0D1H

OV

BIT 0D2H

RS0

BIT 0D3H

RS1

BIT 0D4H

F0

BIT 0D5H

AC

BIT 0D6H

CY

BIT 0D7H

RWT

BIT 0D8H

EWT

BIT 0D9H

WTRF BIT 0DAH

WDIF

BIT 0DBH

PFI

BIT 0DCH

EPFI

BIT 0DDH

 

113

POR

BIT 0DEH

SMOD_1

BIT 0DFH

EX2

BIT 0E8H

EX3

BIT 0E9H

EX4

BIT 0EAH

EX5

BIT 0EBH

EWDI BIT 0ECH

PX2

BIT 0F8H

PX3

BIT 0F9H

PX4

BIT 0FAH

PX5

BIT 0FBH

PWDI BIT 0FCH

;Далее могут следовать объявления символических

;имен пользователя.

DATA1 EQU 48

DATA2 EQU 120

;...

;Директива ORG n указывает компилятору, что следующую команду

;необходимо поместит по адресу n.

ORG 0

JMP BEGIN ; BEGIN – адресная константа (метка) ; местоположения следующей команды.

ORG 0003H

JMP ISR_ IT0 ; переход на подпрограмму обслуживания ; прерывания от внешнего прерывания.

...

ORG 100

BEGIN: MOV SP,#200 ; перемещение вершины стека в ячейку 200

; ...

114

MOV R0,#DATA1

MOV R1,#DATA2 MOV B,#20

CALL COPYB ; копируем 20 байт, начиная с адреса

DATA1,

;в область, начиная с ячейки DATA2.

;...

COPYB: MOV A,@R0

; эта подпрограмма копирует данные

MOV @R1,A

;изобласти,накоторуюуказываетR0,

INC R0

; в область, на которую указываетR1,

INC R1

; черезB в подпрограмму передается

DJNZ B, COPYB ; количество копируемых байт

RET

;...

;директива DB (DW) выделяет память для одного или нескольких байт

;(слов) и помещает в них указанные значения

TXT: DB 0,1,2,3

...

ISR_ IT0: PUSH ACC

...

POP ACC

RETI

...

END

; директива конца программы

115

ПРИЛОЖЕНИЕ 3

Формат .HEX

Формат .HEX разработан фирмой Intel и отличается тем, что содержит числа в текстовом представлении – в шестнадцатеричной записи.

:10000000000102030405060708090A0B0C0D0E0F78

:10001000101112131415161700E5905403F9EB494B

:10002000F97A00900000E493F8E859F8E4A39368A3

:10003000A37004E4934AFAE4A393F870ECEA540C36

:10004000FB8AA080D4000000000000000000000037

:080050000000000000000000A8

:00000001FF

После двоеточия идет число байтов в строке 10 – кроме последней и предпоследней везде стоит число 10 (десятичное 16), т.е. в каждой строке будет ровно 16 информационных байтов.

Затем следуют два байта адреса памяти – куда писать (в первой строке 0000, во второй это будет 0010, т.е. предыдущий адрес плюс 16, и т.д.). Наконец, после адреса расположен еще один служебный байт, обозначающий тип данных, который в информационных строках равен 00 (а в последней – 02). Только после этого начинаются собственно байты данных.

Иногда встречается строка:

:02 0000 02 0000 FC

Это означает, что данные в ней представляют сегмент памяти, с которого должна начинаться запись (в данном случае 0000).

Заканчивается hex-файл всегда строкой 00000001FF – значение типа данных 01 означает конец записи, данных больше не ожидается.

116

Самым последним байтом в каждой строке идет контрольная сумма (иначе она называется LRC – Longitudinal Redundancy Check) для всех остальных байтов строки, включая служебные. Алгоритм вычисления LRC очень простой – нужно вычесть из числа 256 значения всех байтов строки (не обращая внимания на перенос) и взять «младший» байт результата. Соответственно, проверка целостности строки еще проще – нужно сложить значения всех байтов (включая контрольную сумму), и «младший» байт результата должен равняться нулю. Так, в первой строке число информационных байтов всего два, оба равны нулю, плюс (в начале) число информационных байтов, равное 2, плюс служебный байт типа данных, равный также 2, итого контрольная сумма всегда равна 256 – 2 – 0 – 0 = 252 = 0FC. В последней строке одни нули, кроме типа данных, равного 1, – соответственно, контрольная сумма равна 256 – 1 = 255 = 0FF. Проверим для предпоследней строки:

0

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

1

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

1

0

1

0

0

0

8 + 80 = 88.

Контрольная сумма 128 + 32 + 8 = 168.

88 + 168 = 256.

Контрольная сумма дополняет до 256. По модулю 256.

117

ПРИЛОЖЕНИЕ 4

Отладка программ

К сожалению, чаще всего с первого раза заданный алгоритм функционирования не выполняется. Это может быть следствием ошибок в написании программы или некорректного задания каких-либо данных.

Для поиска ошибок очень полезным бывает режим отладки, который удобней всего выполнять пошагово.

Для запуска режима отладки необходимо нажать на кнопку паузы на нижней панели задач и выбрать закладку «Отладка»

(рис. П4.1).

Рис. П4.1. Запуск в режиме отладки

Отметьте в меню пункт CPU Registers U1 (рис. П4.2). Появится окно регистров. Нажимая на кнопку «шаг» пле-

ера, производим отладку. Можно также вызвать окно регистров специальных функций (рис. П4.3) и внешнюю память (при ее наличии).

118

Рис. П4.2. Выбор режима отладки регистров

Рис. П4.3. Вызов окна регистров специальных функций

В результате появится окно, изображенное на рис. П4.4.

119

Рис. П4.4. Окно исходного кода

Далее необходимо переходить к непосредственному пошаговому выполнению. Назначение функциональных кнопок:

Execute F12 – продолжить выполнение программы;

Step Over F10 – шаг без входа в подпрограмму;

Step Into F11 – шаг с входом в подпрограмму;

Step Out Ctrl+F11 – исполнять код до возврата из подпрограммы. Фактически остановка происходит на следующей за RETURN командой. Использовать эту опцию можно, только находясь в подпрограмме.

Step To Ctrl+F10 – исполнять, пока не будет достигнута

точка останова. Чтобы установить точку останова, необходимо нажать крайнюю правую пиктограмму, в верхней панели окна отладчика

Щелкнув правой кнопкой по окну отладчика, можно изменить его настройки. В появившемся меню есть такие опции:

GOTO LINE – перейти на линию;

GOTO ADDRESS – перейти на адрес;

FIND – найти;

– TOGGLE (SET/CLEAR) BREAK POINT – устано-

вить/очистить точку установки;

ENABLE ALL BREAK POINT – разрешить все точки остановки;

DISABLE ALL BREAK POINT – запретить все точки (не

«удалить»);

120

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