Link complete, no warnings

При обнаружении какой-либо ошибки компоновщик выводит на экран монитора сообщение, в котором указывается характер ошибки, а также предупреждение об аварийном завершении работы:

**XLINK ABORTED**

 

 

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

 

3.5.1. Отладкой (debugging) называется процесс обнаружения, локализации и устранения ошибок в программе.

Отладка разрабатываемой программы выполняется с помощью программы-отладчика на IBM-совместимом компьютере или с помощью программно-аппаратных средств, обзор которых приведен в книге [ 2 ].

В настоящем учебном пособии рассмотрена отладка программы с помощью эмулятора ПЗУ, который является самым доступным для начинающих разработчиков аппаратным средством отладки. Эмулятор ПЗУ – это устройство, которое подклю-чается к панели ПЗУ, установленной на плате микропроцессорной системы, вместо микросхемы ПЗУ и полностью имитирует работу этой микросхемы. Исполняемая программа загружается в эмулятор ПЗУ с помощью компьютера, с которым эмулятор связан последовательным или параллельным каналом передачи данных..

Автор в своей повседневной работе использует эмулятор ПЗУ ЧИП32-02, созданный инженерами фирмы “ЭФО” (г. Санкт-Петербург). Этот эмулятор подключается к последовательному порту компьютера и предназначен для имитации работы микросхем EPROM типов 27(С)64, 27(С)128, 27(С)256. Техническое описание и инструкция по эксплуатации эмулятора приведены в прил. 2.

3.5.2. Для загрузки программы в эмулятор ПЗУ ЧИП-32-02 используется следующая командная строка:

chip.exe <*.hex> <EPROM-type> <COM-number> ,

где chip.exe– имя исполняемого файла программы-загрузчика,

*.hex– имя hex-файла загружаемой программы,

EPROM-type– тип имитируемого ПЗУ (64, 128 или 256),

COM-number – номер последовательного порта компьютера (1 или 2),

к которому подключен эмулятор ПЗУ.

Запуск загруженной программы выполняется с помощью аппаратного сброса микропроцессорной системы.

3.5.3. При отладке программы полезно создать командный файл, в котором бы содержались все команды, необходимые для трансляции, компоновки и загрузки отлаживаемой программы в эмулятор ПЗУ.

Такой командный файл (присвоим ему имя make_all.bat) может состоять, например, из следующих команд:

A8051 program.msa

xlink 8051 program.r03 /O=program.hex

Chip.exe program.hex 256 2

Теперь достаточно запустить командный файл make_all.bat для того, чтобы программа, исходный модуль которой имеет имя program.msa, была оттранслирована, скомпонована и загружена в эмулятор ПЗУ, подключенный к порту COM2 компьютера.

3.5.4. После исправления ошибок, выявленных в процессе отладки, программу записывают в ПЗУ (с помощью специального программатора, работающего под управлением компьютера), эмулятор ПЗУ отключают от микропроцессорной системы, а в панель ПЗУ устанавливают микросхему с “зашитой” программой.

На этом завершается разработка программы и начинается ее эксплуатация.


ЛИТЕРАТУРА

Гилмор Ч. Введение в микропроцессорную технику: Пер. с англ. – М: Мир, 1984. – 334 с.

Гребнев В.В. Незнакомое знакомое семейство. Однокристальные микроЭВМ семейства MCS-51 фирмы Intel. – Псков: Псковская коммерческая палата, 1996. – 47 с.

Першиков В.М., Савинков В.М. Толковый словарь по информатике. – М.: Финансы и статистика, 1991. – 543 с.

Сташин В.В., Урусов А.В., Мологонцева О.Ф. Проектирование цифровых устройств на однокристальных микроконтроллерах. – М.: Энергоатомиздат, 1990. – 224 с.

MCS 51 Microcontroller Family User’s Manual.– Intel Corporation, 1994.


ПРИЛОЖЕНИЕ 1

СИСТЕМА КОМАНД МК СЕМЕЙСТВА MCS-51

Таблица П.1

Мнемокод КОП Б Ц Мнемокод КОП Б Ц
ACALL 0xxH ADDC A,R6 3E
ACALL 1xxH ADDC A,R7 3F
ACALL 2xxH ADDC A,@R0
ACALL 3xxH ADDC A,@R1
ACALL 4xxH ADDC A,#data
ACALL 5xxH B1 AJMP 0xxH
ACALL 6xxH D1 AJMP 1xxH
ACALL 7xxH F1 AJMP 2xxH
ADD A,addr AJMP 3xxH
ADD A,R0 AJMP 4xxH
ADD A,R1 AJMP 5xxH A1
ADD A,R2 2A AJMP 6xxH C1
ADD A,R3 2B AJMP 7xxH E1
ADD A,R4 2C ANL A,addr
ADD A,R5 2D ANL A,R0
ADD A,R6 2E ANL A,R1
ADD A,R7 2F ANL A,R2 5A
ADD A,@R0 ANL A,R3 5B
ADD A,@R1 ANL A,R4 5C
ADD A,#data ANL A,R5 5D
ADDC A,addr ANL A,R6 5E
ADDC A,R0 ANL A,R7 5F
ADDC A,R1 ANL A,@R0
ADDC A,R2 3A ANL A,@R1
ADDC A,R3 3B ANL A,#data
ADDC A,R4 3C ANL addr,A
ADDC A,R5 3D ANL addr,#data

 

Таблица П.1 (продолжение)

Мнемокод КОП Б Ц Мнемокод КОП Б Ц
ANL C,bit DEC R7 1F
ANL C,/bit B0 DEC @R0
CJNE A,addr,rel B5 DEC @R1
CJNE A,#data,rel B4 DIV AB
CJNE R0,#data,rel B8 DJNZ addr,rel D5
CJNE R1,#data,rel B9 DJNZ R0,rel D8
CJNE R2,#data,rel BA DJNZ R1,rel D9
CJNE R3,#data,rel BB DJNZ R2,rel DA
CJNE R4,#data,rel BC DJNZ R3,rel DB
CJNE R5,#data,rel BD DJNZ R4,rel DC
CJNE R6,#data,rel BE DJNZ R5,rel DD
CJNE R7,#data,rel BF DJNZ R6,rel DE
CJNE @R0,#data,rel B6 DJNZ R7,rel DF
CJNE @R1,#data,rel B7 INC A
CLR A E4 INC addr
CLR bit C2 INC DPTR A3
CLR C C3 INC R0
CPL A F4 INC R1
CPL bit B2 INC R2 0A
CPL C B3 INC R3 0B
DA A D4 INC R4 0C
DEC A INC R5 0D
DEC addr INC R6 0E
DEC R0 INC R7 0F
DEC R1 INC @R0
DEC R2 1A INC @R1
DEC R3 1B JB bit,rel
DEC R4 1C JBC bit,rel
DEC R5 1D JC rel
DEC R6 1E JMP @A+DPTR

 

Таблица П.1 (продолжение)

Мнемокод КОП Б Ц Мнемокод КОП Б Ц
JNB bit,rel MOV addrD,addrS
JNC rel MOV bit,C
JNZ rel MOV C,bit A2
JZ rel MOV DPTR,#data16
LCALL addr16 MOV R0,A F8
LJMP addr16 MOV R0,addr A8
MOV A,addr E5 MOV R0,#data
MOV A,R0 E8 MOV R1,A F9
MOV A,R1 E9 MOV R1,addr A9
MOV A,R2 EA MOV R1,#data
MOV A,R3 EB MOV R2,A FA
MOV A,R4 EC MOV R2,addr AA
MOV A,R5 ED MOV R2,#data 7A
MOV A,R6 EE MOV R3,A FB
MOV A,R7 EF MOV R3,addr AB
MOV A,@R0 E6 MOV R3,#data 7B
MOV A,@R1 E7 MOV R4,A FC
MOV A,#data MOV R4,addr AC
MOV addr,A F5 MOV R4,#data 7C
MOV addr,R0 MOV R5,A FD
MOV addr,R1 MOV R5,addr AD
MOV addr,R2 8A MOV R5,#data 7D
MOV addr,R3 8B MOV R6,A FE
MOV addr,R4 8C MOV R6,addr AE
MOV addr,R5 8D MOV R6,#data 7E
MOV addr,R6 8E MOV R7,A FF
MOV addr,R7 8F MOV R7,addr AF
MOV addr,@R0 MOV R7,#data 7F
MOV addr,@R1 MOV @R0,A F6
MOV addr,#data MOV @R0,addr A6

Таблица П.1 (продолжение)

Мнемокод КОП Б Ц Мнемокод КОП Б Ц
MOV @R0,#data POP addr D0
MOV @R1,A F7 PUSH addr C0
MOV @R1,addr A7 RET
MOV @R1,#data RETI
MOVC A,@A+DPTR RL A
MOVC A,@A+PC RLC A
MOVX A,@DPTR E0 RR A
MOVX A,@R0 E2 RRC A
MOVX A,@R1 E3 SETB bit D2
MOVX @DPTR,A F0 SETB C D3
MOVX @R0,A F2 SJMP rel
MOVX @R1,A F3 SUBB A,addr
MUL AB A4 SUBB A,R0
NOP SUBB A,R1
ORL A,addr SUBB A,R2 9A
ORL A,R0 SUBB A,R3 9B
ORL A,R1 SUBB A,R4 9C
ORL A,R2 4A SUBB A,R5 9D
ORL A,R3 4B SUBB A,R6 9E
ORL A,R4 4C SUBB A,R7 9F
ORL A,R5 4D SUBB A,@Ri
ORL A,R6 4E SUBB A,@R1
ORL A,R7 4F SUBB A,#data
ORL A,@R0 SWAP A C4
ORL A,@R1 XCH A,addr C5
ORL A,#data XCH A,R0 C8
ORL addr,A XCH A,R1 C9
ORL addr,#data XCH A,R2 CA
ORL C,bit XCH A,R3 CB
ORL C,/bit A0 XCH A,R4 CC

Таблица П.1 (продолжение)

Мнемокод КОП Б Ц Мнемокод КОП Б Ц
XCH A,R5 CD XRL A,R3 6B
XCH A,R6 CE XRL A,R4 6C
XCH A,R7 CF XRL A,R5 6D
XCH A,@R0 C6 XRL A,R6 6E
XCH A,@R1 C7 XRL A,R7 6F
XCHD A,@R0 D6 XRL A,@R0
XCHD A,@R1 D7 XRL A,@R1
XRL A,addr XRL A,#data
XRL A,R0 XRL addr,A
XRL A,R1 XRL addr,#data
XRL A,R2 6A        

Условные обозначения:

КОП– код операции,

Б– количество байтов в машинном коде команды,

Ц– количество машинных циклов,

addr – прямой адрес байта (число или символическое имя),

bit – прямой адрес бита (число или символическое имя),

data – значение константы (число),

rel – 8-битный относительный адрес (метка),

addr11 – 11-битный абсолютный адрес (метка),

addr16 – 16-битный абсолютный адрес (метка),

A – аккумулятор

PC – программный счетчик.


ПРИЛОЖЕНИЕ 2

ЭМУЛЯТОР ПЗУ ЧИП32-02

НАЗНАЧЕНИЕ

1.1 Эмулятор ПЗУ ЧИП32-02 (в дальнейшем эмулятор) предназначен для аппаратной имитации работы микросхем ПЗУ с ультрафиолетовым стиранием и объемом памяти 8Кх8, 16Кх8 и 32Кх8 бит.

1.2 Область применения эмулятора – отладка программного обеспечения микропроцессорных систем.

1.3 Эмулятор рассчитан на работу с внешним IBM-совместимым персональным компьютером.