Соколов Ю.П. Микроконтроллеры семейства MCS-51 (2002) (1095895), страница 14
Текст из файла (страница 14)
В строке состояния указываются клавиши, активные для данногосостояния эмулятора. Кроме фиксированных окон в режиме редактирования выводятся окна программного кода «CSEG», внешней памятиданных «XSEG» и регистров управления из области SFR.Эмулятор может находиться в основном режиме или в режимередактирования содержимого окон. В основном режиме функциональные клавиши выполняют следующие действия:F1 – вызов контекстной помощи,F3 – перезагрузка эмулятора,F4 – переход в режим редактирования содержимого окон,F5 – ввод адреса в программный счетчик,F6 – непрерывный или пошаговый режим работы эмулятора,F7 – включить или выключить отображение данных в окнах,F8 – выполнение команды, выделенной курсором в окне «ФАЙЛ : »,F10 – выход из эмулятораВ окно «КОММЕНТАРИИ» выводятся сообщения о работе эмулятора.
После запуска эмулятора в первой строке окна предлагается ввести имя исполняемого файла с расширением. Расширение отделяетсяот имени файла точкой и должно быть .tsk или .obj. На рис. П3.1 показан ввод файла test.tsk. После завершения ввода имени файла иисправления возможных ошибок в его имени или расширениинеобходимо нажать клавишу ENTER.
Во время работы эмулятора впервой строке отображается число выполненных машинных циклов, вовторой – режим его работы (F6), в третьей – состояние окон (F7), а в64Рис. П3.1режим его работы (F6), в третьей – состояние окон (F7), а в четвертой –комментируются результаты действий и возможные ошибки.В окне «ФАЙЛ : » после успешной загрузки отлаживаемого файлаотображаются в шестнадцатеричной системе счисления текущие 16адресов команд, сами команды, а также их мнемоника. Имя окна дополнится именем загружаемого файла (рис. П3.2). Курсором окна выделяется команда, которая будет выполнена после нажатия клавишиF8 - «Шаг».При выполнении программы в окне регистров «RSEG & SFR»отображается состояние регистров R0...R7 текущего регистрового банка, номер которого указан в строке RB.
Содержимое аккумулятора A,Рис. П3.265портов P0, P1, P2, P3 и буфера последовательного порта SBUF представлено как в байтовом, так и битовом форматах. Отображается состояние программного счетчика PC, указателя вершины стека SP и регистра-указателя DPTR. В окошко СТЕК выводится текущее состояние4 соседних ячеек стека, начиная с вершины стека TS, на которую указывает SP. Стек заполняется в сторону увеличения адресов.Слово состояния PSW представлено как байтом, так и отдельными битами в поле «ФЛАГ»:C – флаг переноса из старшего разряда аккумулятора,AC – флаг переноса из младшей тетрады аккумулятора в старшую,F0 – флаг общего назначения, определяемый пользователем,OV – флаг переполнения в арифметических операциях,P – флаг паритета (четность числа единиц в байте).Кроме того, в этом поле выведено содержимое младшего (RS0) истаршего (RS1) бита номера регистрового банка, указанного в строке RB.В нижней части окна показано содержимое младшего (TL) истаршего (TH) байт таймеров/счетчиков TC0 и TC1.В окне «DSEG» отображается текущее состояние 64 ячеек памяти.
Окно содержит поле адресов и поле данных. В каждой строке поляадресов указан адрес первой в данной строке ячейки памяти.Редактирование содержимого регистров и памятиДля входа в режим редактирования содержимого окон надо нажать клавишу F4. Строка состояния имеет следующий вид (рис. П3.3):Рис. П3.3Для редактирования сегмента программного кода (CSEG) нажатьклавишу С, сегмента данных (DSEG) – D, сегмента регистров (RSEG) R, сегмента внешней памяти данных (XSEG) - X, регистров управления(IP, IE, TMOD, TCON, SCON, PCON) – K.Строка состояния в режиме редактирования указывает на способы навигации в редактируемом окне и на действия для ввода или отмены введенных изменений:HOME - в начало строки,← - на позицию влево,END - в конец строки,→ - на позицию вправо,PgUp - на страницу вверх,↑ - на строку вверх,PgDn - на страницу вниз,↓ - на строку вниз,ENTER - ввод изменений,Ctrl+PgUp - в начало памяти,ESC - отмена изменений,Ctrl+PgDn - в конец памяти.Новые значения вводятся в позицию курсора и выделяются инверсным цветом.
После ввода (ENTER) или отмены (ESC) выделениеснимается, а содержимое окна обновляется.Редактирование сегмента регистров (нажать клавишу R). Дляперемещения курсора между полями шестнадцатеричного и двоичного66представлений содержимого регистров и полем«ФЛАГ» нажать клавишу табуляции (Tab).Содержимое программного счетчика PC,указателя стека SP, номера регистрового банкаRB и окошка стека не редактируется. Курсор в ихпозициях не устанавливается.
Необходимый регистровый банк RB можно установить изменением содержимого младшего (RS0) или старшего(RS1) бита его номера в поле «ФЛАГ». Нарис. П3.4 в регистры R1, R4 и R6 записаны числа2A, 1F и 2D, а в младшую тетраду регистра R7 - 0.Изменения не введены.Редактированиесегментовданных(DSEG, XSEG) и программного кода (CSEG)становится доступным при нажатии клавиши D, XРис. П3.4или C. Окно «DSEG» постоянно находится на экране, а окна «CSEG» и «XSEG» отображаютсятолько при их редактировании. Каждое окно состоит из двух полей: поля адресов и поля данных, разделенных двоеточием (:).
В поле адресовотсутствует автоматическое смещение курсора после ввода символа,поэтому нужно воспользоваться клавишами сдвига вправо или влево. Вполе данных курсор смещается автоматически.Если курсор находится в одном из полей и в него введены изменения (изменения выделены инверсным цветом), то перейти в другуюобласть можно лишь после их ввода (ENTER) или отмены (ESC).При отсутствии изменений перейти из области адресов в областьданных можно клавишами смещения вправо и END, а назад - клавишами смещения влево и HOME, причем END устанавливает курсор в последнюю позицию строки поля данных, а HOME – в первую позициюполя адресов этой строки. При наличии изменений, выделенных инверсным цветом, клавишей END курсор смещается в последнюю, аклавишей HOME – в первую позицию строки поля данных.Для отображения в окне любого сегмента памяти необходимо набрать начальный адрес сегмента в любой строкеобласти адреса и нажать клавишу ENTER.Когда курсор находится в поле данных, в соответствующей его положению строке поля адресаинверсным цветом указывается адрес ячейки памяти, в которой он находится.
На рис. П3.5 показано редактирование сегмента данных «DSEG». Курсор находится в позиции ячейки памяти с адресом1Eh. В ячейки памяти 10h…15h записаны (но невведены) числа 20h…25h соответственно, в старшие тетрады ячеек 16h и 1Eh записаны числа 2 и 3.Все они выделены инверсным цветом.Рис. П3.567На рис. П3.6 показано редактирование сегмента программного кода«CSEG». Курсор находится в позициимладшей тетрады ячейки памяти с адресом 011Eh, в старшую тетраду которой записано число Ah. В младшиететрады ячеек памяти с адресами011Bh и 011Dh записаны (но не введены) числа 5h и Dh соответственно.
Онивыделены инверсным цветом. Послевведения (ENTER), изменения дизассемблируются и показываются в окнеРис. П3.6«ФАЙЛ : » в виде кода и мнемоники.При редактировании кода программынеобходимо выполнить следующие условия.Если заменяется одна команда на другую такой же длины (имеющей то же число байт), то вместо кодов прежней команды записываются коды новой команды.Если новая команда короче (имеет меньшее число байт), то лишние байты надо заполнить нулями, т.е. ввести команду NOP. Если ситуация противоположная, то новый фрагмент кода нужно разместитьпосле всей программы, введя команду безусловного перехода LJMP<B2,B3> (<B2,B3> - адрес начала нового фрагмента).
Если заменяетсяоднобайтовая команда, то трехбайтовая команда безусловного перехода может занять ячейки одной или двух следующих команд. Их нужновнести в новый фрагмент, заполнив нулями оставшиеся не занятымибайты после записи команды LJMP. В конце нового фрагмента командой безусловного перехода необходимо вернуться назад.Редактирование регистров управления (IP, IE, TMOD, TCON,SCON, PCON) становится доступным при нажатии клавиши K в режимередактирования (рис. П3.7). Содержимое каждого регистра представлено в двух полях с шестнадцатеричной и двоичной системой счисления.Переключение между полями выполняется клавишей табуляции «Tab»только в случае отсутствия выделенных изменений. При навигации курсор находится в поле с выделенными изменениями.
Навигация в окнене отличается от рассмотренных выше случаев.На рис. П3.7 курсор находится в позиции регистра IE. В разрядыIE.2 (флаг EX1) и IE.3 (флаг ET1) записаны (но не введены) соответственно 0 и 1. При вводе этих изменений будутразрешены (IE.7 = 1) внешнее прерывание INT0(IE.0 = 1), прерывания от таймеров/счетчиковTC0 (IE.1 = 1) и TC1 (IE.3 = 1). Внешнее прерывание INT1 (IE.2 = 0) и последовательного порта(IE.4 = 0) запрещены. Для ввода изменений нажать ENTER, а для их отмены – ESC.Рис. П3.768Выполнение прерыванийПрерывания, если они разрешены, можно выполнить как в пошаговом, так и непрерывном режимах. Для разрешения прерываний в программе необходимо установить бит IE.7 (EA= 1) и разрешить прерывание от выбранных источников.
При запуске эмулятора регистр IE обнуляется, что запрещает все прерывания.Запрос на прерывание вводится в любой момент времени набором Alt+<S>, где S – буквенное имя прерывания. В эмуляторе EMU-51внешним прерываниям присвоены следующие буквенные имена:i – внешнее прерывание INT0;j – внешнее прерывание INT1;k – прерывание таймера/счетчика TC0;u – прерывание таймера/счетчика TC1.Например, для ввода запроса на прерывание INT0 необходимопри удерживаемой в нажатом состоянии клавише Alt нажать буквеннуюклавишу i (выполнить Alt+i). В 4-й строке окна «КОММЕНТАРИИ» появится сообщение «Установлен запрос прерывания INT0 по фронту(IT0=1)», если прерывание INT0 разрешено (рис.