КАТЕГОРИИ:
Архитектура-(3434) Астрономия-(809) Биология-(7483) Биотехнологии-(1457) Военное дело-(14632) Высокие технологии-(1363) География-(913) Геология-(1438) Государство-(451) Демография-(1065) Дом-(47672) Журналистика и СМИ-(912) Изобретательство-(14524) Иностранные языки-(4268) Информатика-(17799) Искусство-(1338) История-(13644) Компьютеры-(11121) Косметика-(55) Кулинария-(373) Культура-(8427) Лингвистика-(374) Литература-(1642) Маркетинг-(23702) Математика-(16968) Машиностроение-(1700) Медицина-(12668) Менеджмент-(24684) Механика-(15423) Науковедение-(506) Образование-(11852) Охрана труда-(3308) Педагогика-(5571) Полиграфия-(1312) Политика-(7869) Право-(5454) Приборостроение-(1369) Программирование-(2801) Производство-(97182) Промышленность-(8706) Психология-(18388) Религия-(3217) Связь-(10668) Сельское хозяйство-(299) Социология-(6455) Спорт-(42831) Строительство-(4793) Торговля-(5050) Транспорт-(2929) Туризм-(1568) Физика-(3942) Философия-(17015) Финансы-(26596) Химия-(22929) Экология-(12095) Экономика-(9961) Электроника-(8441) Электротехника-(4623) Энергетика-(12629) Юриспруденция-(1492) Ядерная техника-(1748)
Кросс-системы для разработки и отладки ППО Для подготовки текстов, получения объектных кодов и отладки ППО требуются средства автоматизации разработки программ в виде кросс-систем для универсальных мини- и микроЭВМ.
В минимальный состав ПО кросс-систем входят:
¨ редактор текстов;
¨ программа-транслятор, обеспечивающая преобразование исходного текста ППО в объектный модуль (ASM48, ASM51);
¨ редактор внешних связей (LINK), позволяющий включать в программу модули, разработанные независимо друг от друга;
¨ программу, обеспечивающую настройку перемещаемых программных модулей на абсолютные адреса (LOCATE);
¨ отладчики, интерпретирующие выполнение программ в различных режимах: трассировки, пофрагментного выполнения команд и т.д. и ряд других модулей в зависимости от типа МК или контроллера.
Отладка ППО представляет собой отдельную сложную задачу, которая не поддается формализации и требует высокого профессионализма разработчика.
Отладка также выполняется в несколько этапов:
¨ автономная отладка каждой процедуры в статическом режиме, где проверяется правильность вычислений, последовательностей переходов внутри процедуры, отсутствие зацикливаний и т.п.
¨ комплексная отладка в статическом режиме, где проверяется правильность алгоритма управления (по последовательности формирования управляющих воздействий);
¨ комплексная отладка в динамическом режиме без подключения объекта для определения реального времени выполнения ППО и его отдельных фрагментов.
С помощью отладчиков разработчику предоставлен доступ к любому ресурсу МК, имеется возможность покомандного и пофрагментного исполнения программ и останова по условию, а также подсчета числа тактов выполнения программы или ее фрагментов, инициирования прерываний, дисассемблирования содержимого памяти программ и т.д.
Кросс-отладчики позволяют промоделировать все возможные варианты работы программы, также возможна проверка работоспособности программы при нештатных ситуациях в условиях поступления некорректных входных воздействий.
Наиболее мощные средства отладки позволяют моделировать и среду обитания МК, т.е. различные объекты управления и датчики, подключаемые к нему и другие устройства (через библиотеку моделей объектов и устройств сопряжения с МК). Главным недостатком кросс-систем является невозможность прогона программ в реальном времени МК и комплексной проверки АС и ППО. Эта проблема частично разрешима с помощью отладочных комплексов на основе микроЭВМ, построенной на однотипном процессоре и модулей ВСЭ.
Таблица А.1 - Команды внутренних пересылок и арифметико-логических преобразований
№
Мнемоника
Выполняемые
п/п
команды
Комментарии
преобразования
Команды пересылки
MOV A,Rn
Пересылка регистра в аккумулятор
AC:= (Rn); Rn=0-7
MOV A,@Rn
Пересылка байта из РПД в аккумулятор
AC:= [(Rn)]; Rn=0-1
MOV A,#dan
Пересылка непосредственного операнда в аккумулятор
AC:= dan
MOV Rn,A
Пересылка АС в регистр
(Rn):=AC; Rn=0-7
MOV Rn,#dan
Пересылка непосредственного операнда в регистр
(Rn):= dan; Rn=0-7
MOV @Rn,A
Пересылка АС в РПД
[(Rn)]:= AC; Rn=0-1
MOV @Rn,#dan
Пересылка непосредственных данных в РПД
[(Rn)]:= dan; Rn=0-1
MOV A,PSW
Пересылка PSW в АС
AC:=PSW
MOV PSW,AC
Пересылка АС в PSW
PSW:= AC
MOV A,T
Пересылка таймера/счетчика в АС
AC:=T
MOV T,A
Пересылка АС в таймер/счетчик
T:=AC
XCH A,Rn
Обмен регистра с АС
AC:=(Rn); (Rn):=AC;
Rn=0-7
XCH A,@Rn
Обмен АС с РПД
AC:= [(Rn)]; [(Rn)]:= AC;
Rn=0-1
XCHD A,@Rn
Обмен младших тетрад АС и байта РПД
AC[3-0]:= [(Rn)][3-0]; [(Rn)][3-0]:= AC[3-0];
Rn=0-1
MOVP A,@A
Пересылка байта из текущей страницы памяти программ в аккумулятор
PC[7-0]:= AC;
AC:=((РС[11-0]));
MOVР3 A,@А
Пересылка байта из третьей страницы памяти программ в аккумулятор
PC[11-8]:= 0011;
PC[7-0]:= AC;
AC:=((РС[11-0]));
Команды пересылки с портами
MOVX A,@Rn
Пересылка байта из ВПД в АС
AC:=ВПД[(Rn)]; Rn=0-1
MOVX @Rn,A
Пересылка АС во ВПД
ВПД[(Rn)]:= AC; Rn=0-1
MOVD A,Pp
Ввод тетрады из порта Рр схемы расширителя ВР43 (р=4-7)
RgCOP:=Pp.00;
AC[3-0]:=(Pp); AC[7-4]:=0
MOVD Pp,A
Вывод тетрады в порт Рр схемы расширителя ВР43 (р=4-7)
RgCOP:=Pp.11
RgPp:=AC; Pp:= RgPp
OUTL BUS,A
Пересылка АС в порт BUS
RgBUS:=AC; BUS:=RgBUS;
INS A,BUS
Стробируемый ввод данных из порта BUS
AC:=BUS
OUTL Pp,A
Пересылка АС в порт Рp (р=1,2)
RgPp:=AC; Pp:=RgPp;
IN A,Pp
Пересылка данных из порта Рр в АС
AC:=RgPp & Pp
Арифметические команды
ADD A,Rn
Сложение регистра с аккумулятором
AC:= (Rn) + AC; Rn=0-7
ADD A,@Rn
Сложение байта из РПД с аккумулятором
AC:= [(Rn)] + AC;
Rn=0-1
ADD A,#dan
Сложение непосредственного операнда с аккумулятором
AC:= dan + AC
ADDC A,Rn
Сложение регистра с аккумулятором и переносом
AC:= (Rn) + AC + C;
Rn=0-7
ADDC A,@Rn
Сложение байта из РПД с аккумулятором и переносом
AC:= [(Rn)] + AC + C;
Rn=0-1
ADDC A,#dan
Сложение непосредственного операнда с аккумулятором и переносом
AC:= dan + AC + C
DA A
Десятичная коррекция АС
Если PSW[CA]=1 или AC[3-0] > 9, то
AC[3-0]:=AC[3-0]+6; иначе, если PSW[CY]=1 или AC[7-4] >9 то
AC[7-4]:=AC[7-4] + 6;
INC A
Инкремент аккумулятора
AC:=AC + 1
INC Rn
Инкремент регистра
(Rn):=(Rn) + 1; Rn=0-7
INC @Rn
Инкремент байта в РПД
[(Rn)]:=[(Rn)] +1; Rn=0-7
DEC A
Декремент аккумулятора
AC:=AC - 1
DEC Rn
Декремент регистра
(Rn):=(Rn) - 1; Rn=0-7
Логические команды
ANL A,Rn
Логическое И регистра с аккумулятором
AC:= (Rn) & AC; Rn=0-7
ANL A,@Rn
Логическое И байта из РПД с аккумулятором
AC:= [(Rn)] & AC;
Rn=0-1
ANL A,#dan
Логическое И непосредственного операнда с аккумулятором
AC:= dan & AC
ORL A,Rn
Логическое ИЛИ регистра с аккумулятором
AC:= (Rn) V AC; Rn=0-7
ORL A,@Rn
Логическое ИЛИ байта из РПД с аккумулятором
AC:= [(Rn)] V AC;
Rn=0-1
ORL A,#dan
Логическое ИЛИ непосредственного операнда с аккумулятором
AC:= dan V AC
XRL A,Rn
Сложение по модулю 2 регистра с аккумулятором
AC:= (Rn) Å AC; Rn=0-7
XRL A,@Rn
Сложение по модулю 2 байта из РПД с аккумулятором
AC:= [(Rn)] Å AC;
Rn=0-1
XRL A,#dan
Сложение по модулю 2 непосредственного операнда с аккумулятором
AC:= dan Å AC
CLR A
Очистка аккумулятора
AC:=0
CPL A
Инверсия аккумулятора
AC:=~AC
SWAP A
Обмен тетрад в аккумуляторе
AC[7-4]:= AC[3-0];
AC[3-0]:= AC[7-4];
RL A
Циклический сдвиг влево аккумулятора
AC:= L1(AC);
AC[0]:= AC[7]
RLC A
Сдвиг влево аккумулятора через перенос
AC:= L1(AC);
AC[0]:= C; C:= AC[7]
RR A
Циклический сдвиг вправо аккумулятора
AC:= R1(AC);
AC[7]:= AC[0]
RRC A
Сдвиг вправо аккумулятора через перенос
AC:= R1(AC);
AC[7]:= C; C:= AC[0]
Логические команды с портами
ANLD Pp,A
Логическое И аккумулятора и порта Рр (р=4-7)
RgCOP:=Pp.01
RgPp:=AC & RgPp;
Pp:= RgPp
ORLD Pp,A
Логическое ИЛИ аккумулятора и порта Рр (р=4-7)
RgCOP:=Pp.10
RgPp:=AC V RgPp;
Pp:= RgPp
ANL BUS,#d
Логическое И константы и порта BUS
RgBUS:=RgBUS & dan; BUS:=RgBUS
ORL BUS,#d
Логическое ИЛИ константы и порта BUS
RgBUS:=RgBUS V dan; BUS:=RgBUS;
ANL Pp,#d
Логическое И константы и порта Рр (р=1,2)
RgPp:=RgPp & dan; Pp:=RgPp;
ORL Pp,#d
Логическое ИЛИ константы и порта Рр (р=1,2)
RgPp:=RgPp V dan; Pp:=RgPp;
Таблица А2 - Команды управления режимами работы МК48 и работы с флагами
№
Мнемоника
Выполняемые
п/п
команды
Комментарии
преобразования
STRT T
Запуск таймера
T:= T + ALE:32
STRT CNT
Запуск счетчика
T:= T + T0
STOP TCNT
Останов таймера/счетчика
T:= T
EN TCNTI
Разрешение прерываний от таймера
Et:= 1
DIS TCNTI
Запрещение прерываний от таймера
Et:= 0
EN I
Разрешение внешнего прерывания
Eint:= 1
DIS I
Запрещение внешнего прерывания
Eint:= 0
SEL RB0
Выбор нулевого банка регистров
PSW[BS]:=0
SEL RB1
Выбор первого банка регистров
PSW[BS]:=1
SEL MB0
Выбор нулевого банка памяти программ
MB:=0
SEL MB1
Выбор первого банка памяти программ
MB:=1
ENTO CLC
Разрешение выдачи синхросигнала на выход TО
NOP
Пустая команда
CLR C
Сброс флага переноса в PSW
PSW[C]:= 0
CLR FO
Сброс флага F0 в PSW
PSW[F0]:= 0
CLR F1
Сброс флага F1
F1:=0
CPL C
Инверсия флага переноса в PSW
PSW[C]:=PSW[~C]
CPL F0
Инверсия флага F0 в PSW
PSW[F0]:= PSW[~F0]
CPLF1
Инверсия флага F1
F1:= ~F1
Таблица А.3 - Команды передачи управления
№
Мнемоника
Выполняемые
п/п
команды
Комментарии
преобразования
JMP adr11
Безусловный переход
PC[11]:= MB; PC[10-0]:= adr11
CALL adr11
Вызов подпрограммы
PC[11]:= MB; PC[10-0]:= adr11;
(SP):= PSW[7-4].PC[11-8];
(SP+1):= PC[7-0]; SP:=SP+2
RETR
Возврат из подпрограммы и восстановление PSW
SP:= SP-1; PC[7-0]:= (SP); SP:=SP-1;
PC[11-8]:= (SP)[3-0];
PSW[7-4]:= (SP)[7-4]
RET
Возврат из подпрограммы
SP:= SP-1; PC[7-0]:= (SP); SP:=SP-1;
PC[11-8]:= (SP)[3-0];
JMPP @A
Косвенный переход в текущей странице памяти программ
PC:= PC[11-8]. [AC];
DJNZ Rn,adr8
Декремент регистра и переход, если не нуль
Rn:=(Rn) - 1; Если Rn<>0, то
PC[7-0]:= adr8, иначе PC:=PC+1;
JC adr8
Условный переход, если перенос
Если C¹0, то PC[7-0]:= adr8, иначе PC:=PC+1
JNC adr8
Условный переход, если нет переноса
Если C=0, то PC[7-0]:=adr8, иначе PC:=PC+1
JZ adr8
Условный переход, если АС=0
Если AC=0, то Z:=1;
PC[7-0]:=adr8, иначе PC:=PC+1; Z:= 0
JNZ adr8
Условный переход, если АС не равен нулю
Если AC¹0, то Z:=0;
PC[7-0]:=adr8, иначе PC:=PC+1; Z:= 1
JT0 adr8
Условный переход, если на входе Т0 высокий уровень
Если T0= 1, то PC[7-0]:= adr8, иначе PC:=PC+1
JNT0 adr8
Условный переход, если на входе Т0 низкий уровень
Если T0= 0, то PC[7-0]:=adr8, иначе PC:=PC+1
JT1 adr8
Условный переход, если на входе Т1 высокий уровень
Если T1= 1, то PC[7-0]:= adr8, иначе PC:=PC+1
JNT1 adr8
Условный переход, если на входе Т1 низкий уровень
Если T1= 0, то PC[7-0]:=adr8, иначе PC:=PC+1
JF0 adr8
Условный переход, если флаг F0 установлен
Если F0= 1, то PC[7-0]:= adr8, иначе PC:=PC+1
JF1 adr8
Условный переход, если флаг F1 установлен
Если F1= 1, то PC[7-0]:=adr8, иначе PC:=PC+1
JTF adr8
Условный переход, если флаг переполнения таймера установлен
Если TF=1, то TF:=0;
PC[7-0]:=adr8, иначе PC:=PC+1;
JNI adr8
Условный переход, если на входе ^ZPR низкий уровень
Если ZPR=0, то
PC[7-0]:=adr8, иначе PC:=PC+1
JBb adr8
Условный переход, если бит аккумулятора равен единице (b=0-7)
Если AC[b]= 1, то
PC[7-0]:=adr8, иначе PC:=PC+1
Таблица А.4 - Команды, модифицирующие флаги
№
команды
Мнемоника
PSW
CY CA F0 BS
Признаки
F1 MB TF Z
15-17
ADD
+ + - -
- - - -
18-20
ADDC
+ + - -
- - - -
CLR C
0 - - -
- - - -
CPL C
+ - - -
- - - -
CLR F0
- - 0 -
- - - -
CPL F0
- - + -
- - - -
CLR F1
- - - -
0 - - -
CPL F1
- - - -
+ - - -
DA A
+ + - -
- - - -
JTF
- - - -
- - 0 -
MOV PSW,A
+ + + +
- - - -
RETR
+ + + +
- - - -
RLC A
+ - - -
- - - -
RRC A
+ - - -
- - - -
SEL MB0
- - - -
- 0 - -
SEL MB1
- - - -
- 1 - -
SEL RB0
- - - 0
- - - -
SEL RB1
- - - 1
- - - -
DJNZ Rn,adr
- - - -
- - - +
JZ adr
- - - -
- - - +
JNZ adr
- - - -
- - - +
Дата добавления: 2014-01-14 ; Просмотров: 431 ; Нарушение авторских прав? ; Мы поможем в написании вашей работы!
Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет