Програма за управление на цап em31dac. S03, написана на Асемблер за i8051



Дата27.09.2016
Размер86.76 Kb.
#10748
ТипПрограма
АПАРАТНА ДИАГНОСТИКА НА МИКРОПРОЦЕСОРНА СИСТЕМА ЧРЕЗ ВЪТРЕШНОСХЕМЕН ЕМУЛАТОР ЕМ31

Цел на упражнението.

Студентите да се запознаят с използването на микропроцесорен вътрешносхемен емулатор за апаратна диагностика на микропроцесорна система, изградена с микроконтролер i8031.


Опитна постановка.

Постановката за провеждане на упражнението включва микропроцесорна система с микроконтролер i8051, вътрешносхемен емулатор и персонален компютър. Програмното осигуряване на персоналния компютър включва DOS емулатор за Windows DosBox, екранен текстови редактор PE3, кросасемблер A8051, свързващ редактор XLINK и комуникационна програма CONECT за връзка на развойния компютър с емулатора.

Като примерна приложна програма в развойната система присъства програма за управление на ЦАП EM31DAC.S03, написана на Асемблер за i8051.
Задачи за изпълнение.


  1. В работния плот на Windows да се стартира DOS-емулатора DosBox.

  2. Да се стартира комуникационната програма CONECT.

C:\>CONECT

От този момент нататък развойният компютър играе роля на интелигентен терминал за емулатора.



  1. Да се разучат командите на мониторната програма. Да се експериментират командите O, H, P, M, I, C, F, U:

    • с командата O разрешете управляващите сигнали RD и WR;

    • с командата H да се изобрази съдържанието на външната даннова памет от адреси 8000 до 8FFF, а след това съдържанието на външната програмна памет от адрес 0000 до 0FFF (може да се ноложи модифициране на адресното поле с командата U);

    • с командата P да се изведе съдържанието на програмната памет от 0000 до 0FFF и да се коментира разликата с командата H;

    • с командата I да се запълни външната даннова памет от адрес 8000 до 8FFF с константата 55H, след което същата област да се визуализира с командата H;

    • с командата C да се копира инициализираната област на адреси 9000 до 9FFF, след което двете области да се сравнят;

    • с командата M да се промени съдържанието на няколко последователни адреса в областта 8000-80FF, след което да се изобразят групово с командата H;

    • с командата M запишете алтернативно 0 и 1 еднобитовите клетки в битовото адресно пространство на адреси 78 до 7F, след което с командата H разпечатайте съдържанието на вътрешното данново пространство и определете на кой адрес съответстват;

    • с командата F претърсете програмната памет за байт 75 в областта 0800-08FF;

    • с командата W да се извърши проверка на външната даннова памет от адрес 8000 до 9FFF и да се засече времето за изпълнение на теста;

  2. От командния прозорец на програмата CONECT заредете изпълнимия файл EM31DAC.HEX в паметта на емулатора.

  3. Проверете наличието на изпълним код в областта 0000-004F.

  4. Стартирайте програмата и наблюдавайте резултата от изпълнението и.

  5. По указание на ръководителя на упражнението поставете точка на прекъсване и наблюдавайте изпълнението на програмата в постъпков режим.


Информационна част.
- листинг на програмата от файла EM31DAC.LST

################################################################################

# #

# Micro Series 8051 Assembler V1.80/MD2 12/Feb/12 18:48:38 #



# #

# Source = em31dac.s03 #

# List = em31dac.lst #

# Object = em31dac.r03 #

# Options = #

# #


# (c) Copyright IAR Systems 1985 #

################################################################################

1 ; Processor: 8052

2 ; Target assembler: IAR 8051 assembler (A8051)

3

4 7F90 DAC1L equ 7f90h



5 7F80 DAC1H equ 7f80h

6

7 0000 org 0



8

9 0000 Res:

10 0000 020033 ljmp Start

11


12 ; External interrupt 0 (INT0)

13


14 0003 ExtInt0:

15 0003 32 reti

16 0004 00 nop

17 0005 00 nop

18 0006 00 nop

19 0007 00 nop

20 0008 00 nop

21 0009 00 nop

22 000A 00 nop

23


24 ; Timer 0 interrupt (TIM0)

25


26 000B TimInt0:

27 000B 32 reti

28 000C 00 nop

29 000D 00 nop

30 000E 00 nop

31 000F 00 nop

32 0010 00 nop

33 0011 00 nop

34 0012 00 nop

35


36 ; External interrupt 1 (INT1)

37


38 0013 ExtInt1:

39 0013 32 reti

40 0014 00 nop

41 0015 00 nop

42 0016 00 nop

43 0017 00 nop

44 0018 00 nop

45 0019 00 nop

46 001A 00 nop

47


48 ; Timer 1 interrupt (TIM1)

49


50 001B TimInt1:

51 001B 32 reti

52 001C 00 nop

53 001D 00 nop

54 001E 00 nop

55 001F 00 nop

56 0020 00 nop

57 0021 00 nop

58 0022 00 nop

59


60 ; Serial port interrupt (SERIAL)

61


62 0023 SerInt:

63 0023 32 reti

64 0024 00 nop

65 0025 00 nop

66 0026 00 nop

67 0027 00 nop

68 0028 00 nop

69 0029 00 nop

70 002A 00 nop

71


72 ; Timer 2 interrupt (TIM2) (52 or higher)

73


74 002B TimInt2:

75 002B 32 reti

76 002C 00 nop

77 002D 00 nop

78 002E 00 nop

79 002F 00 nop

80 0030 00 nop

81 0031 00 nop

82 0032 00 nop

83


84 0033 Start:

85 0033 C2E0 clr ACC

86 0035 907F90 mov DPTR,#DAC1L

87 0038 F0 movx @DPTR,A

88 0039 907F80 mov DPTR,#DAC1H

89 003C Begin:

90 003C 2401 add A,#1

91 003E F0 movx @DPTR,A

92 003F 80FB sjmp Begin

93


94 0041 end
Errors: None ###########

Bytes: 65 # em31dac #

CRC: 3C50 ###########
- Команди на мониторната програма "POLYBUG-31"
B P|D - показване | изтриване на поставените точки на прекъсване;

C M|V ADDR1 ADDR2 ADDR3 - преместване | сравняване на масив

с начален адрес ADDR1 и краен адрес ADDR2 на | с нов начален адрес ADDR3;


F B|W ADDR1 ADDR2 BYTE|WORD - търсене на байт или дума в масив с начален адрес ADDR1 и краен адрес ADDR2;
G P|A ADDR - продължаване изпълнението на програмата от текущото

съдържание на програмния брояч или стартиране на програма от ADDR.


H C|X|D ADDR1 ADDR2 - показване съдържанието на масив от паметта с начален адрес ADDR1 и краен адрес ADDR2. При атрибут C се визуализира съдържанието на програмната памет, при X - външната памет за данни, при D - вътрешната памет за данни на микроконтролера. При атрибут D ADDR1 и ADDR2 са с дължина 1 байт и са в обхвата 00-7F.
I X|D ADDR1 ADDR2 BYTE - инициализиране на памет от начален адрес ADDR1 до краен адрес ADDR2 с байт. При атрибут D ADDR1 и ADDR2 са с дължина 1 байт и са в обхвата 00-7F.
L - зареждане на данни по комуникационния канал в програмната памет на емулатора. Зарежданият файл е в INTEL HEX формат, като не може да се зарежда масив по-дълъг от 64K байта. Тази команда се използва от комуникационната програма CONECT.
M C|X|D|B ADDR - показване съдържанието на клетка от паметта с адрес ADDR; с въвеждането на две шестнадесетични цифри това съдържание може да се промени. При атрибут C се работи с програмната памет, при атрибут X - с външната памет за данни, при атрибут D - с вътрешната памет за данни, при атрибут B - с битовото адресно пространство на микроконтролера. При атрибут D

ADDR е с дължина 1 байт и е в обхвата 00-7F. При атрибут B ADDR е с дължина 1 байт и е в обхвата 00-7F, както и реално съществуващ адрес на бит от регистрите с побитово адресиране.

Допълнителни атрибути на командата са:

- стрелка надолу - показване съдържанието на следващия адрес;

- стрелка нагоре - показване съдържанието на предходния адрес;

- SPACE - показване съдържанието на текущия адрес;

- ENTER - изход от командата.
O R|P - Изводите P3.6 и P3.7 се използват като сигнали за четене (RD) и запис (WR) от външна памет за данни | Изводите P3.6 и P3.7 се използват като периферия с общо предназначение. Когато се използват като сигнали за четене и запис пред промта на монитора се изписват символите R и W.
P ADDR1 ADDR2 - извеждане на данни от паметта с начален адрес ADDR1 и краен адрес ADDR2 по комуникационния канал във формат INTEL HEX. Тази команда се използва от комуникационната програма CONECT, като изведената информация се записва като файл. Работи се с програмната памет.
Q C|X ADDR R|W BYTE - циклично четене | запис на BYTE на адрес ADDR от паметта. При атрибут C се работи с програмната памет, при което режимът е четене и задаването на командата завършва с ADDR. При атрибут X се работи с външната памет за данни и се задава и режим четене или запис, като при запис се добавя и атрибута BYTE. От командата се излиза с натискане на произволен бутон на клавиатурата.
R @|REG - показване съдържанието на всички микропроцесорни

регистри (@) или показва само указания с REG регистър като позволява

промяна на стойността му. Имената на регистрите са същите, както при разпечатването им с командата R @.
S C|X ADDR R|W BYTE - статично четене | запис на BYTE в адрес ADDR от паметта. При атрибут C се работи с програмната памет, като режимът е четене и задаването на командата завършва с ADDR. При атрибут X се работи с външната памет за данни и се задава и режим на четене или запис, като при запис се добавя и атрибута BYTE. От командата се излиза с натискане на кой да е бутон от клаввиатурата.
T N|T NUM - трасиране на една или на NUM(брой) инструкции. NUM е четири шестнадесетични цифри.
U S|U|A 0|1 - модифициране | възстановяване на адресното поле на емулатора, с цел достъп на потребителя до затъмнените от атрибутите на емулатора части на адресното поле на емулиранатна система. Атрибутът S управлява дешифрирането на разположената в емулатора RAM памет на адреси 0000-77FF. При команда U S 1 тя е разположена в програмното адресно пространство, а при U S 0 - в адресното поле за външни данни. Атрибутът U управлява дешифрирането на разположената в емулатора RAM паммет на адреси

F800-FBFF. При U U 1 тя е разположена в програмното адресно пространство, а при команда U U 0 - в адресното поле за външни данни. Атрибутът A управлява адресната линия A15. При команда U A 1 към настройваната система се подава инвертирана A15, при което стават достъпни ресурси намиращи се на адреси заети от схемите на емулатора. При команда U A 0 към настройваната система се подава неинвертирана A15. Състоянието на атрибутите S, U и A се индицира

със съответния символ пред промта на монитора. Когато състоянието е 1 символът присъства, а когато е 0 отсъства.
V P|D ADDR - поставяне | изтриване на точка на прекъсване

на адрес ADDR.


W ADDR1 ADDR2 - тестване на памет с начален адрес ADDR1 и

краен адрес ADDR2. Последователно се изпълняват линеен, адресен и

матричен тест. За по-големи масиви тестът е продължителен. По време

на матричния тест се изобразява текущият адрес за проверка. Тази

команда работи с адресното поле за външни данни.
Символът | в показаните командни редове на командите

означава алтернативност (вариантност). По време на изпълнение на

командите на мониторната програма действат следните клавишни

комбинации:

- CNTRL/W или CNTRL/S - спиране на извеждането;

- CNTRL/X или CNTRL/C - спиране на командата;

- ESC - връщане от POLYBUG в главното меню на комуникационната

програма CONECT.

Адресът винаги е ЧЕТИРИ ШЕСТНАДЕСЕТИЧНИ ЦИФРИ.

Байтът е ДВЕ ШЕСТНАДЕСЕТИЧНИ ЦИФРИ, думата - ЧЕТИРИ.

Мониторната програма POLYBUG вмъква интервали в командния ред

автоматично.

Параметрите за комуникация на програмата CONECT са: 4800bit/s, 8 бита данни, 2 стопови бита, без контрол по четност.
2. Особености на емулатора EM31
Емулаторът EM31 може да изпълнява програми от тестваната система в цялото адресно поле без областта, заета от атрибутите на емулатора.

Атрибутите на емулатора EM31 заемат област разположена от E000 до FFFF в програмната памет и от FD00 до FFFF във външната памет за данни.

Регистрите и вътрешната памет за данни на EM31 са достъпни за потребителя чрез своето копие в служебен RAM. Зареждането им в контролера става при стартиране на потребителска програма или при трасиране.

Потребителят може да използва вградените вътрешно RAM области от адрес 0000 до 77FF и F800 до FBFF, като с командата U се задава разполагането им в програмното или данново адресно поле.

Емулаторът EM31 използва вектора на апаратното прекъсване INT0, намиращ се на адреси 0003-0005, за поставяне на точки на прекъсване и за трасиране на инструкции при постъпково изпълнение. Този вектор се управлява от мониторната програма и потребителско прекъсване по INT0 се обслужва на второ ниво извън реално време. След командата U S 0 адреси 0003-0005 се намират в настройваната система и трасирането на инструкции и обслужването на точки на прекъсване е невъзможно.

Поставянето на точки на прекъсване е възможно ако програмния код е разположен в RAM памет.



При процедура RESET емулаторът автоматично прехвърля съдържанието на програмната памет в настройваната система от адреси 0000-77FF в RAM паметта на емулатора на същите адреси и променя вектора на INT0.


Сподели с приятели:




©obuch.info 2022
отнасят до администрацията

    Начална страница