Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_otmp / Keil_51_v750a_OK_work / gs51_ch5_rus.doc
Скачиваний:
33
Добавлен:
14.04.2015
Размер:
477.18 Кб
Скачать

Примеры

C:0x100

/* Адрес 0x100 в памяти программ */

I:100

/* Адрес 0x64 во внутреннем ОЗУ 8051 */

X:0FFFFH

/* Адрес 0xFFFF во внешней памяти данных */

B:0x7F

/* Битовый адрес 127 или 2FH.7 */

B2:0x9000

/* Адрес 0x9000 банке программы №2 */

Спецификации типа

µVision2 автоматически производит неявное преобразование типов в выражениях. Вы можете указать в выражениях явное приведение к требуемому типу данных. Запись приведения типов в выражениях, используемых в отладчике, полностью соответствует правилам, принятым в языке Си. Пример:

(unsigned int) 31.2

/* получить беззнаковое целое 31 из вещественного значения */

Операторы

Отладчик µVision2 поддерживает все операторы языка программирования Си. Все операторы имеют такой же смысл, как и их Си-эквиваленты.

Различия между выражениями µVision2 и Си

Имеется ряд различий между выражениями в µVision2 и в языке программирования Си:

  • µVision2 не различает регистр букв в символических именах и названиях отладочных команд.

  • µVision2 не поддерживает преобразование выражений в типизированные указатели, такие как char * или int *. Типы указателей извлекаются из информации о символах вашей программы. Указатели не могут быть созданы в отладчике µVision2.

  • Вызовы функций, вводимые в окне отладчика µVision2 «Output Window – Command page», относятся к отладочным функциям. Вы не можете вызывать функции вашей программы из этой командной строки. Для получения более подробной информации см. главу 6 «Отладочные функции среды µVision2» на странице 131.

  • µVision2 не поддерживает объединение данных в структуры.

Примеры выражений

В следующих примерах приведены выражения, которые вводились в командной строке отладчика в окне «Output Window» на странице «Command». Также приведен соответствующий вывод для каждого примера. Все примеры проводились в отладочной сессии демонстрационной программы MEASURE.

Константа

>0x1234

/* Простая константа */

0x1234

/* Вывод значения */

>EVAL 0x1234

4660T 11064Q 1234H '...4'

/* Вывод значения в различных системах счисления */

Регистр процессора

>R1

/* Запрос значения регистра R1 */

0x000A

/* вывод значения регистра */

>R1 = --R7

/* Установить R1 и R7 равными значению R7-1 */

Имя функции

>main

/* Получить адрес функции main() из MEASURE.C */

0x00233DA

/* Ответ, функция main начинается с адреса 0x233DA */

>&main

/* Аналогично предыдущему примеру */

0x00233DA

>d main

/* Команда Display: дамп памяти, начиная с адреса main */

0x0233DA:

76 E2 00 04 76 E3 00 04 - 66 E3 FF F7 E6 B6 80 00

v...v...f......

0x0233EA:

E6 B7 00 00 E6 5A 40 00 - E6 D8 11 80 E6 2A 3C F6

.....Z@......*<

0x0233FA:

E6 28 3C F6 E6 CE 44 00 - BF 88 E6 A8 40 00 BB D8

.(<...D.....@..

0x02340A:

E6 F8 7A 40 CA 00 CE 39 - E6 F8 18 44 CA 00 CE 39

..z@...9...D...

Примеры использования адресов

>&\measure\main\cmdbuf[0] + 10

/* Вычисление адреса */

0x23026

>_RBYTE (0x233DA)

/* Прочитать байт из памяти программ по адресу 0x233DA */

0x76

/* Ответ */

Пример вывода списка символических имен

>dir \measure\main /* Вывести имена, определенные в функции main() модуля MEASURE */

R14 idx . . . uint /* Вывод */

R13 i . . . uint

0x0002301C cmdbuf . . . array[15] of char

Соседние файлы в папке Keil_51_v750a_OK_work