Методическое указание к лабораторной работе №9

advertisement
Министерство образования и науки РФ
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
Нижегородский государственный
технический университет им. Р. Е. Алексеева
Кафедра "Электрооборудование, электропривод и автоматика"
ФУНКЦИОНИРОВАНИЕ ОДНОКРИСТАЛЬНОЙ
МИКРОЭВМ К1816ВЕ51
Методические указания к лабораторной работе №9 по курсу
"Микропроцессорные системы"
Для направления 13.03.02 очной формы обучения
Нижний Новгород
2014 г.
Введение
Целью работы является изучение функционирования вычислительной
системы на базе ОМЭВМ К1816ВЕ51, взаимодействие отдельных компонентов системы, системы команд и способов программирования.
1. Архитектура и структурная организация ОЭВМ
Структурная схема МК51 приведена на рис.1. Основу структурной схемы МК51 образует внутренняя двунаправленная 8-битная шина, которая
связывает между собой все основные узлы и устройства: резидентную память, арифметико-логическое устройство (АЛУ), блок регистров специальных функций, устройство управления и порты ввода/вывода.
8-битное АЛУ может выполнять арифметические операции сложения,
вычитания, умножения и деления; логические операции И, ИЛИ, исключающее ИЛИ, а также операции циклического сдвига, сброса, инвертирования
и т.п. В АЛУ имеются программно недоступные регистры Т1 и Т2, предназначенные для временного хранения операндов, схема десятичной коррекции и схема формирования признаков.
Память программ и память данных, размещенные на кристалле МК51,
физически и логически разделены, имеют различные механизмы адресации,
работают под управлением различных сигналов и выполняют различные
функции.
Память программ (ПЗУ или СППЗУ) имеет емкость 4 Кбайта и предназначена для хранения команд, констант, управляющих слов инициализации,
таблиц перекодировки входных и выходных переменных и т.п. Резидентная
память программ (РПП) имеет 16-битную шину адреса, через которую обеспечивается доступ из счетчика команд (СК) или из регистра-указателя
данных (РУД).
Резидентная память данных (РПД) предназначена для хранения переменных в
процессе выполнения прикладной программы, адресуется одним байтом и
имеет емкость 128 байт. Кроме того, к адресному пространству РПД примыкают адреса регистров специальных функций (РСФ).
Аккумулятор (А) является источником операнда и местом фиксации результата при выполнении арифметических, логических операций и ряда операций передачи данных.
Регистр состояния программы (PSW) содержит информацию о состоянии программы. Функциональное назначение битов PSW дано в табл.1.
2
Рис.1. Структурная схема МК51
3
Регистр В используется во время операций умножения и деления. Для
других инструкций регистр В может рассматриваться как дополнительный
сверхоперативный регистр.
8-битный указатель стека (РУС) может адресовать любую область РПД.
Его содержимое инкрементируется прежде, чем данные будут запомнены в
стеке в ходе выполнения команд PUSH и CALL. Содержимое РУС декрементируется после выполнения команд POP и RET.
Двухбайтный регистр-указатель данных (РУД) обычно используется для
фиксации 16-битного адреса в операциях с обращением к внешней памяти.
Распределение пространства памяти показано на рис. 2 и 3. Общий объем
памяти может достигать 128 Кбайт: 64 Кбайт памяти программ и 64 Кбайт
памяти данных.
Рис.2. Пространство памяти МК51
В составе средств МК51 имеются регистровые пары с символическими
именами ТН0 , TL0 и TH1,TL1, на основе которых функционируют два независимых программно-управляемых 16-битных таймера/счетчика событий.
Регистр с символическим именем SBUF представляет собой два независимых регистра: буфер приемника и буфер передатчика. Загрузка байта в
SBUF немедленно вызывает начало процесса передачи через последовательный порт. Когда байт считывается из SBUF, это значит, что источником является приемник последовательного порта.
Регистры с символическими именами IP, IE, TMOD, ICON и PCON
используются для фиксации и программного изменения управляющих битов и битов состояния схемы прерывания, таймера/счетчика,
4
приемопередатчика последовательного порта и для управления мощностью
электропитания МК51.
Рис. 3. Адресное пространство внутренней памяти данных
РУМ (PCON) - регистр управления мощностью (потреблением),
РРТС (TMOD) - регистр режимов таймера/счетчика,
РУСТ (TCON) - регистр управления таймером/счетчиком,
РУПП(SСОN) - регистр управления последовательным портом;
РП (IP) - регистр приоритетов прерываний,
РМП (IE) - регистр разрешения прерывания
Все четыре порта МК51 (Р0...Р3) предназначены для ввода или вывода
информации побайтно. Каждый порт содержит управляемые регистрзащелку, входной буфер и выходной драйвер.
Выходные драйверы портов 0 и 2, а также входной буфер порта 0 используются при обращении к внешней памяти (ВП). При этом через порт 0 в
режиме временного мультиплексирования сначала выводится младший байт
адреса ВП, а затем выдается или принимается байт данных. Через порт 2 выводится старший байт адреса в тех случаях, когда разрядность адреса равна
16 битов. Все выводы порта 3 могут быть использованы для реализации альтернативных функций. Порт 0 является двунаправленным, а порты 1, 2, и 3
квазидвунаправленными. Каждая линия портов может быть использована
независимо для ввода или вывода информации.
Блок синхронизации предназначен для выработки синхронизирующих и
управляющих сигналов, обеспечивающих координацию совместной работы
блоков однокристальной микроЭВМ во всех доступных режимах работы.
5
Таблица 1
Регистр состояния программы (PSW)
Биты Наименование Назначение битов
Флаг переноса. Изменяется во время
аппаратно или
выполнения некоторых арифметических программно
и логических инструкций
Флаг дополнительного переноса
аппаратно или
программно
Флаг 0. Флаг состояния,
программно
определяемый пользователем
7
CY
6
АС
5
F0
4
RS1
Указатель банка рабочих регистров
программно
3
RS0
RS1 RS0
00
01
10
11
OV
Указатель банка рабочих регистров.
Банк 0 с адресами (00h-07h)
Банк 1 с адресами (08h-0fh)
Банк 2 с адресами (10h-17h)
Банк 3 с адресами (18h-1fh)
программно
Флаг переполнения.
В арифметических командах флаг
знака.
аппаратно или
программно
2
1
0
P
Резервный, содержит триггер доступный по записи и чтению, который
можно использовать
Битов четности. Аппаратно сбрасывает- аппаратно или /
ся/устанавливается в каждом цикле
программно
инструкций для указания четного/нечетного количества разрядов аккумулятора, находящихся в состоянии "1 "
Рис.4. Блок синхронизации
6
Доступ к биту
Кварцевый резонатор, подключаемый к внешним выводам Х1 и Х2
корпуса МК51, управляет работой внутреннего генератора, который в свою
очередь формирует сигналы синхронизации. Устройство управления МК51
на основе сигналов синхронизации формирует машинный цикл фиксированной длительности. Все машинные циклы МК51 одинаковы, состоят из 12
периодов сигналов синхронизации, начинаются фазой S1P1 и заканчиваются
фазой S6P2.
РВПП(РSEN) -управляющий сигнал разрешения внешней памяти программ;
CABП(ALE) - управляющий сигнал строба внешней памяти;
ПРОГ(PROG)- управляющий сигнал для программирования РПП;
ОРПП/ДП (ЕА/VРР) - управляющий сигнал отключения резидентной
памяти программ / подача напряжения программирования,
СВР/ АП (RST/ VPD) - управляющий сигнал сброса / напряжение питания подано.
2. Система команд МК51
Система команд МК51 содержит 111 базовых команд которые удобно
разделить по функциональному признаку на пять групп команды передачи
данных, арифметических операций, логических операций операций передачи
управления и операций с битами.
Система команд МК51 много мощнее и шире системы команд МК48
так как кроме всех команд МК48 в ее состав входят команды умножения,
деления, вычитания, операции над битами, операции со стеком и расширенный набор команд передачи управления.
Большинство команд (94) имеют формат один или два байта и выполняются за один или два машинных цикла. При тактовой частоте 12 МГц длительность машинного цикла составляет 1 мкс.
Ниже приведены 13 типов команд МК51. Первый байт команды любого типа и формата всегда содержит код операции (КОП) Второй и третий
байты содержат либо адреса операндов, либо непосредственные операнды
Состав операндов МК51 шире, чем МК48, и включает в себя операнды
четырех типов биты, 4-битные цифры, байты и 16-битные слова.
В отличие от МК48, который имеет только три битовых флага, МК51
имеет 128 программируемых флагов пользователя. Имеется также возможность адресации отдельных битов блока регистров специальных функций и
портов.
7
Для адресации битов используется прямой 8-битный адрес (bit). Косвенная
адресация битов невозможна. Четырехбитные операнды используются
только при операциях обмена (команды SWAP и XCHD). Восьмибитным
операндом может быть ячейка памяти программ или данных (резидентной
или внешней), константа (непосредственный операнд), регистры специальных функций (РСФ), а также порты ввода-вывода. Порты и РСФ адресуются только прямым способом. Байты памяти могут адресоваться также и
косвенным образом через адресные регистры (R0, R1, DPTR, PC). В табл. 2
приведена система команд микроЭВМ семейства МК51.
Существуют следующие способы адресации операндов - источников:
- регистровая адресация;
- прямая адресация;
- косвенно-регистровая адресация;
- непосредственная адресация;
- косвенная адресация по сумме базового и индексного регистра.
Первые три способа используются также для адресации операнда назначения. Указанные пять способов адресации, используемые в различных сочетаниях, обеспечивают 21 режим адресации.
ad - прямой 8-битный адрес байта РПД (0-127), порта или РСФ;
add - прямой 8-битный адрес назначения;
ads - прямой 8-битный адрес источника;
# d - непосредственный операнд (константа);
rel - 8-битный относительный адрес передачи управления (-127...+128);
Ri - обобщенное имя регистра косвенного адреса (R0 или R1);
Rn - обобщенное имя рабочего регистра (n=0÷7);
← - операнд присваивания (замещение);
↔ - оператор взаимного обмена;
 ,  ,  - операторы логических операций: И, ИЛИ, исключающее ИЛИ;
@ - префикс косвенной адресации;
# - префикс непосредственного операнда;
(Y) - содержимое регистра или ячейки памяти с именем Y;
((Y)) - содержимое ячейки памяти, адресуемой содержимым Y (косвенная адресация).
Многие команды содержат поля: «приемник», «источник», которые
определяют тип данных, метод адресации и участвующие операнды.
8
Форматы команд МК51
9
Таблица 2
7-4\ 3-0
0000(0)
0001(1)
0010(2)
0011(3)
0000(0)
HOP
JВС bit, addr
JB bit,addr
JNB bit,addr
0100(4) JCaddr
0101(5) JNC addr
0110(6) JZ addr
0111(7) JNZ addr
1000(8)
SJMP addr
1001(9) MOV
DPTR, #data
1010(А) ORL
C,/bit
1011(8) ANL C, /
bit
1100(С)
PUSH direct
1101(0)
POP direct
1110(Е) MOVX
@DPTR, A
1111(F) MOVX
@DPTR, A
10
0001(1)
AJMP addr
ACALL addr
AJMP addr
ACALL
addr
AJMP
addr
ACALL
addr
AJMP
addr
ACALL
addr
AJMP
addr
ACALL
addr
AJMP
addr
ACALL
addr
AJMP
addr
ACALL
addr
AJMP
addr
ACALL
addr
Система команд однокристальных микроЭВМ семейства МК51
0010(2)
0011(3)
0100(4)
0101(5)
0110(6)
LJMP addr
RRA
INC A
INC direct
INC @R0
LCALL addr RRC A
DEC A
DEC direct
DEC @ R0
RET
RLA
ADD A,#data ADD A, direct ADD A, @R0
RETI
RLCA
ADDC A,
ADDC A,
ADDC
#data
direct
A, @R0
ORL diORL direct, ORL A,
ORL A, diORL
rect, A
#data
#data
rect
A, @R0
ANL di- ANL direct,
ANL
ANL A,
ANL
rect, A
#data
A,#data
direct
A, @R0
XRL diXRL direct,
XRL A,
XRL A, diXRL
rect, A
#data
#data
rect
A,@RO
ORL
JMP @A+
MOV A,
MOV direct,
MOV
C, bit
DPTR
#data
#data
@R0,#data
ANL
MOVC A,
DIVAB
MOV direct,
MOV direct,
C,bit
@A+PC
direct
@ R0
MOV
MOVC A,
SUBB A,
SUBB A,
SUBB A,
bit, С
@A+ DPTR
#data
direct
@R0
MOV
INC
MUL AB
MOV @R0,
C, bit
DPTR
direct
CPL bit
CPL С
CJNEA,
CJNE A, diCJNE @R0,
#data, addr
rect, addr
#data, addr
CLR
CLR С
SWAP A
XCH A,
XCH
bit
direct
A,@R0
SETB
SETB C
DA A
DJNZ direct,
XCHD A,
bit
addr
@R0
MOVX
MOVX
CLR A
MOV A,
MOV A,
A, @R0
A, @R1
direct
@ R0
MOVX
MOVX
CPL A
MOV diMOV
@R0, A
@R1,A
rectA
@R0, A
0111(7)
INC @R1
DEC @ R1
ADD A,
@R1
ADDC
A, @R1
ORL
A, @R1
ANL A,
@R1
XRL
A,@R1
MOV
@R1,#data
MOV direct,
@ R1
SUBB A,
@R1
MOV @R1,
direct
CJNE @R1
#data, addr
XCH A,
@R1
XCHD
A,@R1
MOV
A,@R1
MOV
@R1,A
Окончание табл.2
7-4 \ 3-0,
0000(0)
0001(1)
0010(2)
0011(3)
1000(8)
INC R0
DEC R0
ADD A,R0
ADDC
A, R0
1001(9)
INC R1
DEC R1
ADD A,R1
ADDC
A, R1
1010(A)
INC R2
DEC R2
ADD A,R2
ADDC
A,R2
1011(B)
INC R3
DEC R3
ADD A,R3
ADDC
A, R3
1100(C)
INC R4
DEC R4
ADD A,R4
ADDC
A,R4
1101(D)
INC R5
DEC R5
ADD A,R5
ADDC
A,R5
1110(E)
1111(F)
INC R6
INC R7
DEC R6
DEC R7
ADD A,R6 ADD A,R7
ADDC
ADDC
A, R6
A, R7
0100(4)
ORL A, R0
ORL A, R1
ORL A, R2
ORL A, R3
ORL A, R4
ORL A, R5
ORL A, R6 ORL A, R7
0101(5)
ANL A, R0
ANL A,R1
ANL A, R2
ANL A, R3
ANL A, R4
ANL A, R5
ANL A,R6 ANL A, R7
0110(6)
XRL A, R0
XRL A, R1
XRL A, R2
XRL A, R3
XRL A, R4
XRL A, R5
XRL A, R6 XRL A, R7
0111(7)
MOV R0,
#data
MOVR1,
#data
MOVR2,
#data
MOV R3,
#data
MOV R4,
#data
MOVRS,
#data
MOV direct, MOV direct, MOV direct,
R0
R1
R2
SUBB
SUBB
SUBB
A, R0
A,R1
A, R2
MOV R0,
MOV R1,
MOV R2,
direct
direct
direct
CJNE R0,
CJNE R1,
CJNE R2,
#data,addr #data, addr #data, addr
XCH A, R0 XCH A, R1 XCH A, R2
MOV
direct, R3
SUBB
A,R3
MOV
R3, direct
CJNE R3,
#data, addr
XCH A, R3
MOV direct, R4
SUBB
A, R4
MOV
R4, direct
CJNE R4,
#data, addr
XCH A, R4
MOV
direct R5
SUBB
A, RS
MOV R5,
direct
CJNE RS,
#data, addr
XCH A, RS
MOV di- MOV direct, R6
rect, R7
SUBB
SUBB
A,R6
A, R7
MOV R6,
MOV R7,
direct
direct
CJNE R6, CJNE R7,
#data, addr #data, addr
XCH A, R6 XCH A, R7
1110(Е)
DJNZ R0,
addr
MOV A, R0
DJNZ R1,
addr
MOV A, R1
DJNZ
R2,addr
MOV A, R2
DJNZ
R3,addr
MOV A, R3
DJNZ
DJNZ
R4,addr
R5, addr
MOV A, R4 MOV A, R5
DJNZ
DJNZ
R6,addr
R7,addr
MOV A, R6 MOV A, R7
1111(F)
MOV R0, A
MOVR1,A
MOV R2, A
MOV R3, A
MOV R4, A
MOV R6, A MOV R7, A
1000(8)
1001(9)
1010(А)
1011(В)
1100(С)
1101(0)
MOV R5, A
MOV R6,
#data
MOV R7,
#data
11
3. Структурная схема лабораторной работы
3.1. Структура УМПК-51 и краткое описание основных узлов
На рис.5 представлена структурная схема учебной микроЭВМ УМПК-51.
Как видно из рисунка, в состав УМПК-51 входят следующие узлы:
- блок ОЭМВ;
- дешифратор адреса (ДА);
- блок клавиатуры и дисплея (БКД);
- блок постоянной памяти (ПЗУ);
- блок оперативной памяти (ОЗУ);
- блок цифро-аналогового преобразователя (ЦАП);
- блок аналого-цифрового преобразователя (АЦП);
- источник опорного напряжения (ИОН);
- блок последовательного интерфейса (БПИ);
- схема имитатора внешних устройств (ИВУ);
В блок ОЭВМ входит однокристальная микроЭВМ ВЕ51, буфер магистрали данных и управления, а также регистр адреса.
Буфер данных служит для организации внутренней магистрали данных
микроЭВМ. Буфер переключается на ввод данных при чтении команд или данных из памяти или внешних устройств. Регистр адреса фиксирует младший
байт адреса, который выводится через те же выводы ВЕ51, что и данные.
Дешифратор адреса формирует сигналы управления для памяти и внешних
устройств при обращении программы по определенным адресам, а именно.
- четыре выборки на ОЗУ и ПЗУ объемом по 2 Кбайт каждое при чтении и
записи информации в память;
- выборку для контроллера клавиатуры и дисплея;
- строб записи в регистр ЦАП;
- строб записи в триггер запуска АЦП;
- выборку чтения буфера АЦП;
- выборку чтения бита готовности АЦП и выхода компаратора.
Блок клавиатуры и дисплея построен на основе БИС программируемого контроллера клавиатуры и дисплея КР580ВВ79 и служит для организации работы клавиатуры и дисплея в мультиплексном режиме. Ввод
Рис. 5. Структурная схема микроЭВМ УМПК-51
информации и управление работой УМПК-51 осуществляется с помощью 16 цифровых клавиш и 13 клавиш управления. Информация выводится
на дисплей, состоящий из 6 семисегментных индикаторов.
Блок постоянной памяти реализован на двух ППЗУ с УФ стиранием
типа К573РФ2 объемом по 2 Кбайт, одна из которых содержит управляющую программу - монитор.
Блок оперативной памяти команд содержит две ИС ОЗУ типа
КР537РУ8 объемом по 2 Кбайт. Пользователь имеет возможность записывать и считывать данные из ОЗУ, а также вводить и запускать программы.
Распределение адресов регистров специальных функций, ПЗУ, ОЗУ в
адресном пространстве УМПК-51 представлено в прил. 1 и 2 .
Блок цифро-аналогового преобразователя построен на базе ИС ЦАП
КР572ПА1 и осуществляет преобразование 8-разрядного кода в аналоговое напряжение в диапазоне от -10,24 В до +10,16 В. Выходное напряжение ЦАП выводится на разъем микроЭВМ и, кроме того, подается на вход
компаратора, что позволяет сравнивать выходное напряжение ЦАП с
внешним напряжением, подаваемым на другой вход компаратора.
14
Блок аналого-цифрового преобразователя собран на основе ИС АЦП
1113ПВ1 и реализует 8-разрядное преобразование внешнего аналогового
напряжения от -10,24В до +10,168, поступающего с разъема микроЭВМ.
Источник опорного напряжения выдает напряжение +10,24 В, используемое в качестве опорного для ЦАП.
Блок последовательного интерфейса преобразует выходной сигнал ТхD
ВЕ51 с уровнем ТТЛ в сигнал с уровнем -15В/+5В, а также преобразует
сигнал с линии RS-232 в сигнал с ТТЛ-уровнем, подаваемый на вход RxD
BE51.
Схема имитатора внешних устройств предназначена для формирования воздействий на ВЕ51 через порт Р1 и отображения состояния этого порта. Кодовая комбинация, набранная с помощью переключателей, может быть
считана через порт Р1, а состояние выходов этого порта отображается с
помощью светодиодов, при этом переключатели должны быть разомкнуты.
Клавиша Т0 со схемой антидребезга используется для формирования воздействия на вход таймера ВЕ51 при изучении работы внутреннего таймера/счетчика событий. Клавиша I0 предназначена для формирования сигнала
прерывания на входе INT0 BE51.
3.2. Органы управления и индикации, функции монитора.
Внешний вид переключателей и светодиодов порта Р1 представлен на
рис.6, а органы управления и индикации - на рис.7.
Функции, выполняемые переключателями и светодиодами порта Р1, а
также дисплеем и цифровыми клавишами, не требуют дальнейших пояснений, что же касается клавиш управления клавиатуры УМПК-51, их назначение необходимо рассмотреть подробнее.
Клавиша "RS" ("Reset") предназначена для сброса (начальной установки) УМПК-51, которая может быть проведена как с обнулением содержимого внешней памяти (ОЗУ), так и без нее, в зависимости от положения клавиши 10 в момент нажатия клавиши "RS". В нажатом положении клавиши
проводится обнуление ОЗУ УМПК-51, в отпущенном положении клавиши
инициализация не проводится.
Клавиша "РМ" ("Programm Memory") переводит микроЭВМ в режим
просмотра внешней памяти (ОЗУ И ПЗУ) и ее изменения (только ОЗУ). В
поле адресов дисплея отображается адрес ячейки, в поле данных - ее содержимое. Просмотр памяти вперед осуществляется с помощью клавиши "+1"
("Запись/Увеличить"), после каждого нажатия адрес памяти увеличивается
на
15
единицу. Просмотр памяти назад осуществляется нажатием на клавишу "1" ("Уменьшить"), после каждого нажатия адрес памяти уменьшается на единицу. Изменение содержимого ячейки памяти с адресом, индицируемым в
поле адресов дисплея, происходит посредством набора с помощью цифровых клавиш кода для записи в эту ячейку с последующим нажатием клавиши
"-1".
Рис.6 Переключатели и светодиоды порта Р1
Рис.7. Органы управления и индикации микроЭВМ УМПК-51.
Вывод на дисплей содержимого программного счетчика осуществляется нажатием на клавишу "PC" ("Programm counter").
Просмотр и изменение содержимого внутренней памяти данных 8Е51
осуществляется с помощью клавиши "DМ" ("Data memory"). На дисплей
выво-
16
дится адрес и содержимое ячейки внутренней памяти данных и возможен
просмотр и изменение содержимого памяти аналогично внешней памяти.
Просмотр и изменение содержимого битов побитно адресуемой области
внутренней памяти ВЕ51 производится с помощью клавиши "ВТ" ("BIT").
На дисплее индицируется адрес и содержимое бита (0 или 1) и возможен их
просмотр и изменение аналогично памяти.
Просмотр и изменение содержимого внутренних регистров ВE51 осуществляется нажатием на клавишу "RG" ("Registers"), после чего на дисплей
выводится мнемоническое обозначение регистра и его содержимое в следующем порядке:
Асc - аккумулятор;
В - регистр В;
FL - регистр флагов и указатель стека (PSW);
DPH - старший байт регистра DPTR;
DPL - младший байт регистра DPTR;
SP - указатель стека SP;
РСН - старший байт программного счетчика.
PCL - младший байт программного счетчика;
В0r0 - регистр R0 0-го банка регистров;
............
В3r7 - регистр R7 3-го банка регистров.
Просмотр и изменение содержимого регистров производится аналогично просмотру и изменению памяти.
Запуск программы пользователя в пошаговом режиме осуществляется
нажатием на клавишу "ST" ("Step"). При этом выполняется одна команда и
на дисплей выводится новое значение программного счетчика.
Запуск программы пользователя в автоматическом режиме осуществляется нажатием на клавишу "RU" ("Run").
Клавиша "DA" ("Digital-to-analog") используется для преобразования
требуемого кода в напряжение с помощью ЦАП, при этом коду 00Н соответствует напряжение -10.24 В, а коду FFH - +10.16 В.
Клавиша "AD" ("Analog-to-digital") используется для преобразования
измеряемого внешнего напряжения в цифровой код. Возможен как однократный, так и циклический запуск преобразования, с отображением как
шестнадцатиричного кода, так и напряжения в вольтах.
17
Клавиша "NL" ("Net Load") инициирует обмен УМПК-51 с инструментальной ЭВМ или другими устройствами по последовательному каналу
связи RS-232С.
Для примера рассмотрим последовательность ввода и выполнения
простейшей программы, позволяющей обменять содержимое аккумулятора и ячейки встроенной памяти данных с адресом 03, с последующей
записью содержимого аккумулятора в регистр R0 нулевого банка рабочих
регистров.
Здесь и далее листинг программы будет представлен в следующем виде:
Адрес
1000Н:
Коды
С503
Метки
1002Н:
1202F3
STOP
Мнемоника
Комментарии
ХСН А, 03Н ; Обмен данными между
;аккумулятором и ячейкой
;встроенной памяти
;данных с адресом 03Н
LCALL ;Останов
Для записи этой программы необходимо произвести следующую последовательность действий:
1. Открыть ячейку внешней памяти с адресом 1000Н (напомним, что
символ "Н" после числа означает его шестнадцатиричное представление). Для этого последовательно нажимаются клавиши "РМ", "1", "0", "0",
"0", после чего дисплей примет вид: 1 0 0 0 XX, где XX означает неопределенность информации, содержащейся на данный момент в ячейке памяти.
2. Записать в открытую ячейку первый байт программы. Для этого
нажать клавиши: "С", "5", после чего дисплей примет вид: 1 0 0 0 С 5.
3. Нажать клавишу "+1". При этом произойдет запись байта С5 в
ячейку памяти 1000Н и переход на следующую ячейку памяти: 1001
XX.
Аналогично (повторяя пункты 2 и 3) записываем в память остальные
байты программы.
После записи программы вводятся начальные данные. Например, запишем в аккумулятор число 55Н, а в ячейку 03Н встроенной памяти данных - число AАН.
Для записи числа в аккумулятор вводится директива просмотра и изменения содержимого внутренних регистров ВЕ51 нажатием клавиши
"RG", при этом на дисплей выводится сообщение: АссХХ, озн ачающее, что
18
открыта ячейка, хранящая содержимое аккумулятора. Доступ к другим регистрам можно осуществить нажатием клавиш "+1" и "-1".
Вводим число, предназначенное для записи в аккумулятор, для этого последовательно нажимаем клавиши "5", "5", после чего дисплей примет вид:
Асс 55.
Нажатием клавиши "+1" запишем число 55Н в аккумулятор.
Далее произведем запись во встроенную память данных. В нашем случае
это можно сделать двумя способами, поскольку ячейка 03Н встроенной памяти данных является одновременно регистром общего назначения r3 нулевого банка рабочих регистров.
В первом случае воспользуемся директивой "RG": нажимаем клавишу
"RG" и после появления начального сообщения несколько раз нажимаем клавишу "+1" до появления сообщения: b 0 г 3 X X, которое означает, что открыт доступ к регистру r3 нулевого банка рабочих регистров. Последовательно нажимая клавиши "А", "А", "+1", запишем в регистр значение ААН.
Во втором случае введем директиву просмотра и изменения содержимого внутренней памяти данных "DM". Дисплей примет вид:
А - _ , после чего необходимо ввести адрес ячейки памяти. Нажимаем
клавиши "0", "3", после чего на дисплее появится сообщение:
А - 0 3 X X, означающее, что открыт доступ к ячейке 03Н встроенной
памяти данных. Записываем новое значение в эту ячейку, для чего последовательно нажимаем клавиши "А", "А", "+1".
После ввода начальных данных программа запускается на выполнение.
Для этого открывается стартовая ячейка памяти программы (1000Н) последовательным нажатием клавиш "РМ", "1", "0", "0", "0", после чего программа
запускается на выполнение нажатием на клавишу "RU".
В результате выполнения последней команды программы управление
передается подпрограмме STOP монитора УМПК-51, после чего выполнение
программы пользователя прекращается и на дисплей выводится последнее
значение программного счетчика. В нашем случае на дисплей будет выведено сообщение: 1005ХХ.
Для просмотра результатов выполнения программы откроем ячейку аккумулятора и ячейку 03Н встроенной памяти данных. В ячейке аккумулятора
будет записано значение ААН: Асс АА.
В ячейке 03Н встроенной памяти данных должно быть записано значение 55Н: А-03 55.
19
Таким образом, в результате выполнения программы произошел обмен
содержимого аккумулятора и ячейки встроенной памяти с адресом 03, что
соответствует корректному выполнению программы.
4. Использование ПЭВМ для отладки программ
Существуют три способа ввода программ в память УМПК-51.
- ввод программы в ОЗУ с клавиатуры УМПК-51;
- запись программ в ПЗУ типа К537РФ2 с последующей ее установкой
в свободное посадочное место;
- загрузка программы в память УМПК-51 с инструментального ЭВМ по
последовательному интерфейсу RS-232C.
Первый метод подробно описан во 2-м разделе. К его достоинствам
можно отнести отсутствие каких-либо дополнительных технических
средств, все операции по вводу и выполнению программ выполняются исключительно с помощью УМПК-51. Недостатком метода является большая
трудоемкость при вводе, редактировании и отладке программ большого объема.
При втором методе выполняется следующая последовательность действий: ассемблируется исходный текст программы с получением объектного
кода; файл, содержащий объектный код, программируется в ПЗУ, после
чего производится установка ПЗУ и запуск программы. Очевидно, что для
реализации этого способа требуется наличие инструментальной ЭВМ с
кросс-средствами и программатора ПЗУ, кроме того, цикл отладки программы получается довольно длительным и трудоемким. Преимуществом
является то, что окончательная версия программы в ПЗУ не требует ввода
или загрузки после включения УМПК-51 и может быть запущена в любой
момент.
По третьему методу объектный код программы, полученный в результате ассемблирования исходного текста на инструментальной ЭВМ, загружается в ОЗУ по последовательному каналу RS-232 (алгоритм загрузки подробно описан в данном разделе). Этот метод дает наименее трудоёмкий и
наиболее быстрый цикл отладки программ. Недостатком его является необходимость использования инструментальной ЭВМ.
Как уже отмечалось, использование инструментальной ЭВМ в процессе подготовки программ для УМПК-51 дает наименее трудоемкий и наиболее
быстрый цикл отладки программ. Настоящий раздел посвящен методике использования инструментальной ЭВМ для подготовки программ для систем
на базе МК51 с проверкой их работы на УМПК-51.
20
Метод подготовки программ для МК51 на ПЭВМ включает в себя следующие этапы:
1) написание программы на языке ассемблера МК51 в виде текстового
файла;
2) трансляция программ с языка ассемблера МК51 в объектный код;
3) передача объектного кода программы в память реального устройства;
4) выполнение полученной программы, анализ правильности работы;
5) при необходимости коррекция исходного текста и повторение цикла.
Для выполнения первого этапа может быть использован любой текстовый
редактор, не использующий специального формата, например "Norton
Editor".
Для трансляции программ с языка ассемблера можно использовать программу кросс-ассемблера ASM51, входящую в состав программных средств
лаборатории "Пирамида". Порядок и правила работы с этой программы приведены в описании "Кросс-ассемблер ASM51. Руководство пользователя",
поставляемом вместе с программой, поэтому для успешного выполнения
экспериментов данного раздела необходимо внимательно изучить указанное
руководство.
Для запуска программы ASM51 необходимо задать командную строку
следующего формата:
ASM51.exe <исходный файл> -«листинг трансляции> <объектный код>.
Исходный файл - имя файла, в котором находится текст программы на
языке ассемблера ВЕ51.
Листине трансляции - имя файла, получаемого в результате трансляции,
в котором содержится подробная информация об ошибках, отображается
распределение памяти, показаны коды для записи в выходной файл объектного кода.
Объектный код - имя файла, получаемого в результате трансляции, который содержит объектный код и готов для загрузки в память УМПК-51.
4.1. Краткое описание отладчика
Для логической отладки программы на инструментальной микроЭВМ можно использовать полноэкранный отладчик-эмулятор FD51 для
программ,
21
написанных на языке ассемблера для однокристальных микро-ЭВМ
КР1816ВЕ51/КМ1816ВЕ31/КМ1816ВЕ51.
Для запуска FD 51 нужно запустить файл FD 51.ехе.
Сразу после запуска отладчик готов к приему команд пользователя - курсор находится в командной строке. В нижней строке экрана имеется меню
функциональных клавиш [F1]-[F10] - они выполняют наиболее употребительные команды. Остальные команды вводятся пользователем с клавиатуры с использованием алфавитно-цифровых клавиш. При вводе этих команд
можно пользоваться для редактирования клавишами [Ins], [Del], [Backspace],
[Home], [End], [Esc]. Помните, что после начала ввода команды и до нажатия клавиши [Enter] функциональные клавиши недоступны.
Отладчик FD-51 использует следующие функциональные клавиши.
[F1] - выполнить текущую инструкцию загруженной программы. Текущая инструкция - это инструкция, выделенная в окне дисассемблированного
текста светлым прямоугольником. После выполнения на экране можно сразу
наблюдать результаты ее выполнения.
[F2] - выполнять программу до следующей команды по адресу за текущей инструкцией. Эта клавиша позволяет выполнить подпрограмму или
цикл как одну инструкцию, что удобно, так как не нужно просматривать уже
отлаженные подпрограммы.
[F3] - позволяет представить числовую информацию на экране (содержимое регистров и памяти) в десятичной, а при повторном нажатии - в
двоичной форме. (После запуска информация представлена в шестнадцатеричном виде.)
[F4] - переключает большое окно памяти c внутренней (INT RAM) на
внешнюю память (EXT RAM) и обратно.
[F6] - установка точек прерывания.
[F6] - переключает форму представления памяти в окне в двоичную и
обратно.
[F7] - листает окно памяти данных вверх на одну строку.
[F8] - листает окно памяти данных вниз на одну строку.
[F9] - листает окно памяти программ вверх на одну строку.
[F10]- листает окно памяти программ вниз на одну строку.
Для быстрого листания можно пользоваться следующими клавишами.
[Ноmе] - листает окно памяти данных вверх на одну страницу.
[End] - листает окно памяти данных вниз на одну страницу.
22
[PgUp] - листает окно памяти программ вверх на одну страницу.
[PgDn] - листает окно памяти программ вниз на одну страницу.
Команды отладчика:
Н
Получить справку по командам.
L [<тип памяти>< нач. адрес>,] <файл. спец.>[/А
Загрузить файл в память. <Тип памяти> может быть I, E или Р. В соответствии с этим параметром файл загружается во внутреннюю (Int),внешнюю
(Ext) или программную (Pgm) память. <Нач. адрес> и <тип памяти> указывается только при загрузке чистого двоичного кода.
Пример: L P 1000,name.c51 - загрузить двоичный файл в программную память с адреса 1000.
S <тип памяти><нач. адрес>-<кон. адрес>,<файл. спец.>
Сохранить область памяти в дисковом файле (допускается любая корректная в DOS спецификация файла, например COM1). <нач.адрес> и
<кон.адрес> указывают соответственно начало и конец сохраняемой области.
Пример: S P 1000-1400, t.c51
Выполнить программу с <нач. адреса> до <кон. адреса>. Если <нач. адрес> не указан, выполнение начинается с текущей команды (текущая команда выделена белым прямоугольником). <Кон. адрес> можно не указывать,
если используются точки прерывания. Выполняющуюся программу можно
остановить нажатием любой клавиши.
Пример: G 100,FF0 или G,100
RSTC - сбросить счетчик времени выполнения программы.
QUIT - выход в DOS.
RST - имитируется сброс процессора.
N - и Вы как будто только что запустили FD51.
Переход в режим полноэкранного редактирования осуществляется
нажатием клавиши [Enter] без ввода команды. Теперь можно перемещать
курсор по экрану с помощью клавиш управления курсором и изменять содержимое регистров, памяти и флаги набором чисел на клавиатуре. Можно
изменить также начальный адрес дисассемблированного текста (текущей
инструкции) и начальные адреса окон памяти (в первых строках окон). Полноэкранное редактирование можно производить и при десятичном, и при двоичном представлении информации на экране. Во время редактирования
остаются доступными все команды, вводимые функциональными клавишами.
23
Чтобы вернуться в командную строку, нажмите [Enter] снова. Для быстрого перемещения курсора по экрану можно пользоваться клавишами [Tab]
и [Shift]- [Tab].
Режим ассемблера
Для перехода в режим ассемблера (ввода команд отлаживаемой программы в мнемонических обозначениях) нужно в режиме полноэкранного
редактирования поместить курсор в поле текущей инструкции загруженной
программы. Теперь наберите мнемонику (например "MOV А,#45") и
нажмите [Enter]. Если мнемоника верна, то соответствующие ей коды заносятся в память программ, а окно устанавливается на следующий адрес.
При ассемблировании поддерживаются имена регистров специального
назначения. При возникновении неоднозначности следует числовые значения предварять нулем. Для выхода из режима ассемблера нажмите клавишу
"Q" или уведите курсор из поля текущей инструкции.
Р RTD, <нач. адрес>-<число команд>,<устройство>
Распечатать листинг откорректированной программы. (По умолчанию
вывод осуществляется на печать). В команде вместо устройства можно указать имя файла.
Т ON ,<имя файла>
Вывод откорректированной программы по шагам. Если не указать
имя файла, то вывод пойдет на печать. Трассировка по шагам выполняется
командой F1. Режим трассировки выключается командой T OFF.
Рассмотрим порядок работы:
1. Включить ПЭВМ под руководством преподавателя.
После автоматической загрузки операционной системы DOS и Norton Commander на экране высвечиваются две стандартные панели.
2. Войти в директорию C:\PIRAMIDE\1816:
3. Создать новый файл в редакторе Norton Edit:
-нажать комбинацию клавиш [Shift] + [F4], в появившемся окне ввести имя
файла с расширением .а51 (например, t.a5l),
- нажать клавишу [Enter] .
4. Набрать свою программу.
24
ORG 1000H
EQU STOP,02F3H
ADD А, 10 ;Сложить аккумулятор с мл. байтом числа
MOV 10, А ;3аписать результат в ячейку 10Н
MOV А, #0Н ;Обнулить аккумулятор
ADDC А, 11Н ;Сложить ст. байт числа с учетом переноса
MOV 11H, А ;3апись результата в ячейку 11Н
LCALL STOP ;Останов
В программе использована подпрограмма монитора STOP.
5. Сохранить файл, нажав клавишу [F2].
6. Выйти из редактора, нажав клавишу [F10].
7. Оттранслировать полученный файл с помощью командной строки:
ASM51.exe Т.А51 T.LST T.CS1
- нажать клавишу [Enter] для ввода.
В результате получаются файл листинга трансляции Т. LST и файл объектного кода Т.С51 (Т - имя файла).
8. При наличии сообщения об Ошибке (звуковой сигнал) - снова войти
в редактор:
- навести курсор на свой файл,
- нажать на клавишу [F4],
- исправить ошибки и повторить пункты 5 - 7.(Ошибки можно посмотреть в своем файле с расширением.а51.)
9. При отсутствии ошибок подключить кабель связи к УМПК-51 и инструментальной ЭВМ в соответствии с рекомендациями, изложенными в
руководстве пользователя на программу RS232-51.
10.Включить питание УМПК-51, запустить программу связи по RS-232
нажатием на клавишу[NL]УМПК-51.
11. Ввести на инструментальной ЭВМ командную строку
RS232-51 Т.С51 W #2
12. Просмотреть содержимое ячеек УМПК-51 и убедиться, что данные
переданы правильно.
Подготовка к работе
Подать питающие напряжения на микроЭВМ включением переключателя "СЕТЬ" источника питания.
25
Провести начальную установку нажатием на клавишу "R" микроЭВМ, при
этом на дисплей выводится сообщение г Е A d Y, означающее, что микроЭВМ
готова к приему директив.
Задание
1. Сложить два числа А+В, если сумма >0, то выполнить операцию C  D, в
противном случае очистить 7 битов регистра R7.
2. Вычислить выражение А-В, если результат >0, то выполнить операцию
С  D, в противном случае очистить 0 бит регистра R0 (первого банка регистров).
3. Вычислить выражение А*В, если результат >FFh, то выполнить операцию C-D, в противном случае - операцию инвертирования результата умножения.
4. Выполнить выражение A  B, если результат >0, то установить 7 бит
регистра R6 (второго банка регистров), в противном случае сбросить этот бит.
5. Выполнить выражение A  B, если результат >0, то выполнить операцию С  D, в противном случае очистить R0 (второго банка регистров). Результат
в R0.
6. Написать программу реализации логической функции P1.0=(P1.7  P1.6)
 (P1.4  P1.5) (с использованием команд проверки битов).
7. Написать программу реализации логической функции Р1.0=(Р1.7  Р1.6)
 (P1.4  Р1.5), но с использованием байтовых команд.
8. Написать программу реализации логической функции P1.0=(P1.7  P1.6)
 (Р1.4  Р1.5), нос использованием битового процессора.
9. Выполнить выражение А/В, если результат целое число, то поменять
местами тетрады числа С, в противном случае занести число 0 в R5 (первого
банка регистров).
10.Организовать поочередное включение индикаторов младшей тетрады
порта Р1 в правую сторону, а старшей тетрады порта Р1 в левую сторону
(выполнить привязку к реальному времени).
26
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Структурная схема, основные блоки и функциональные клавиши
УМПК-51.
2. Архитектура ОМЭВМ, основные блоки.
3. Методы адресации (примеры).
4. Форматы и система команд.
5. Особенности портов ОМЭВМ.
6. Формат слова состояния (PSW). Назначение флагов. Особенности
работы с числами со знаком.
7. Команды управления.
СПИСОК ЛИТЕРАТУРЫ
1. Однокристальные микроЭВМ: Справочник/ А.В. Боборыкин, Г.П.
Липовецкий, Г.В. Литвинский и др.; Под ред. А.В. Боборыкина. - М.: МИКАП, 1994. -400 с.
2. Проектирование цифровых устройств на однокристальных микроконтроллерах/ В.В. Сташин, А.В. Урусов, О.Ф. Мологонцева. - М.: Энергоатомиздат, 1990. - 224 с.
27
28
Download