Разделы
Публикации
Популярные
Новые
Главная » Классические однокристальные микроконтроллеры

1 ... 13 14 15 16 17 18 19 20

ADRCOLUMN . DSB 1 ;Номер колонки,

AOR PAGE .OSB 1 ; Номер страницы. NCOL .DSB 1 ;Кол-во обновляемых столбцов. NPAGE .DSB 1 ;Кол-во обновляемых страниц, TNCOL .DSB 1 ;Текущее значение адреса столбца. TADR .DSB 1 ;Текущее значение адреса данных.

P D .ЕОи Р4 ; Порт данных микроконтроллера.

CS1 EQU Р1.1 ;Линия выбора SED1520.

CS2 .EQU Р1,2 ; Линия выбора SED1521,

AO.EQU PI.О ;Линия управления АО.

SWR , .EQU Р1,4 ;Линия сигнала записи,

.RSEG AROM.CODE ; Перемещаемый сегмент

SED:

; Установка сигналов управления.

CLR АО

SETB CS1

SETB CS2

SETB SWR

;CS1, ;CS2,

;WR.

;Включение дисплея.

MOV A, #OAFH MOV P D,A

SETB

SETB

SETB

CSl CS2 SWR SWR CSl CS2

; Запись кода команды OnDispl

;в порт микроконтроллера,

.Активизация SED1520, ; Активизация SED1521. ;Начало сигналла записи SWR,

; Окончание сигнала записи SWR.

; Выключение CS1,

; Выключение CS2.

MOV A,#3DH ; ЗОН соответствует

MOV NCOL.A ,; 61 столбцу.

MOV DPTR,#PIXEL1 ;Адрес начала таблицы данных PIXEL1,

; Полный цикл обновления данных в буфере SED1520

CLR CS1 ; Активизируем SED1520 на все время

CALL SED1520 ;выполнения подпрограммы SWD1520,

SETB CS1 ;Выключение SED1520.

;Полный цикл обновления данных в буфере SED1521

MOV DPTR,#PIXEL2 ;Адрес начала таблицы данных Pixel2.

CLR CS2 ; Активизируем SED1521 на все время

CALL SED1520 ;выполнения подпрограммы SWD1520,

SETB CS2 ; Выключение SED1521.

RET ;Выход из программы SED.

.RSEG SEDS.CODE

SED1520:

LL1:

PUSH ADR PAGE ; Сохранение адреса страницы. PUSH NPAGE ; Сохранение количества страниц.

MOV A.NCOL ; Востановление кол-ва столбцов

MOV TNCOL.A ;для цикла внутри страницы.

MOV А,ADR COLUMN;Востановление начального адреса

MOV TADR.A ;столбца для цикла внутри страницы.

PAGE:

;Определение переменных.

CLR А ;Адрес столбца

MOV ADR COLUMN,A;имеет значение 0.

MOV А, #0В8Н ;Это адрес страницы О

MOV ADR PAGE,A ;см, таблицу 1.

MOV А. #4 ; Используем все

MOV NPAGE,А ; 4 страницы.

; Выбор страницы.

MOV А,ADR PAGE

MOV P D,A

CLR SWR

SETB SWR

;Запись в порт микроконтроллера ;адреса страницы. ;Формирование сигнала записи SWR. .Окончание сигнала записи SWR.

COLUMN:

; Выбор столбца.

MOV А,TADR MOV P D,A

; Запись в порт микроконтроллера :адреса столбца.



CLR SWR ; Формирование сигнала записи SWR.

SETB SWR ; Окончание сигнала записи SWR.

WR D:

Запись байта данных.

SETB АО ;Д0 = 1 Теперь в контроллеры SED1b20/1521 ;можно передавать данные образа ; изображения,

CLR MOVC INC MOV CLR SETB CLR

A,@A+DPTR ;Чтение данных из таблиц кодовой памяти. DPTR

P D,A ;Байт данных выставляем на шину данных. SWR ;Формирование сигнала записи SWR. SWR ;Окончание сигнала записи SWR, АО ;АО = О

ШС TADR ;Формирование адреса следующего столбца.

DJNZ TNCOL,COLUMN ;Цикл по столбцам. INC ADR PAGE ;Формирование адреса следующей страницы.

DJNZ NPAGE.LLI ;Цикл по страницам.

POP POP ;страницы.

NPAGE ;Восстановление кол-ва страниц.

ADR PAGE ;Восстановление начального адреса

;Возврат из подпрограммы SED1520. .RSEG DATE,CODE

PIXELI: ;Образ экрана SED1520.

; Правая половина индикатора PG12232A.

; Адреса столбцов увеличиваются справа налево.

;PAGEO, 8 строк в нижней части индикатора.

.DCB ООН,ООН,ООН,ООН,ООН,ООН

.DCB ООН,ООН,ООН,ООН,ООН,ООН

.DCB ООН,ООН,ООН,ООН,ООН,ООН

.DCB 80Н.80Н,80Н,00Н,00Н.00Н

.DCB 00Н,00Н,00Н,00Н,80Н,80Н

.DCB 80Н,ООН,ООН,ООН,ООН,ООН

.DCB ООН,ООН,ООН,ООН,ООН,80Н

.DCB 80Н.80Н,80Н,00Н,00Н,00Н

.DCB ООН, ООН,ООН,ООН,ООН,ООН

.DCB ООН,ООН,ООН,ООН.ООН,80Н

.DCB 80Н

;PAGE1

,DCB ООН,ООН,ООН,ООН,ООН,ООН

,DCB ООН,ООН,ООН,ООН,ООН,ООН

.DCB ООН.ООН.ООН,ООН,ООН,ООН

.DCB OFFH,OFFH,OFFH,ОСОН,ОСОН,ОСОН

.DCB ОСОН,ОСОН,ОСОН,ОСОН,OFFH,OFFH

.DCB OFFH,ООН,ООН,ООН,ОСОН,OFOH

.DCB 1СН,0ЕН,0С6Н,0ЕЗН,ЗЗН,19Н

,DCB 0С9Н,0С9Н,99Н, 13Н,ЗЗН,0Е2Н

ОСВ ОС6Н,ОСН,38Н,0ЕОН,00Н,00Н

.DCB ООН, ООН, ООН, ООН, ООН, OFFH

.ОСВ OFFH

;PAGE2

.DCB ООН,ООН,ООН,ООН,ООН,ООН

.DCB ООН,ООН,ООН,ООН,ООН,ООН

.DCB ООН,ООН,ООН,ООН,ООН,ООН

.DCB OFFH,OFFH,OFFH,ОЗН,ОЗН,озн

.DCB озн,озн,ОЗН,озн,OFFH,OFFH

.DCB OFFH,ООН,ООН,ООН,01Н,07Н

.DCB 1СН,18Н,11Н,ЗЗН,26Н,64Н

.ОСВ 66Н,23Н,31Н,98Н,8СН,0С7Н

.DCB 0ЕЗН,30Н, 1СН,07Н,00Н,00Н

.DCB 0F0H,0F0H,ОСОН,ОСОН,ОСОН,OFFH

,DCB OFFH

;PAGE3, 8 строк в верхней части индикатора.

. DCB ООН, ООН, ООН, ООН, ООН, ООН

.DCB ООН,ООН,ООН,ООН,ООН,ООН

.ОСВ ООН,ООН,ООН,ООН,ООН,ООН

.DCB 01Н,01Н,01Н,00Н,00Н,00Н

.DCB 00Н,00Н,00Н,00Н,01Н,01Н



.DCB 01H, ООН, ООН, ООН, ООН, ООН

.DCB ООН,ООН,ООН,ООН,ООН,ООН

.DCB 00Н,01Н,01Н,01Н,00Н,00Н

.DCB ООН,ООН,ООН,ООН,ООН,ООН

.DCB 01Н,01Н,01Н,01Н,01Н,01Н

.DCB 01Н

PIXEL2: ;Образ экрана SED1521.

;Левая половина индикатора PG12232A.

iАдреса столбцов увеличиваются справа налево.

;PAGE0, 8 строк в нижней части индикатора.

.DCB .DCS .DCB .DCB .DCB .DCB .DCB .DCB .DCB .DCB .DCB

;PAGE1

.DCB .DCB .DCB .DCB .DCB .DCB .DCB .DCB .DCB .DCB .DCB

80H,80H, ООН,ООН, 80Н,80Н, ООН,ООН, 80Н,00Н, ООН,ООН, 80Н,80Н, ООН,ООН, ООН,ООН, ООН, ООН, ООН

ООН,ООН, ООН,ООН, 80Н,00Н, ООН,ООН, ООН,ООН, ООН,ООН, 80Н,80Н, ООН,ООН, ООН,ООН ООН,ООН

ООН,ООН ООН,ООН ООН,ООН 80Н,80Н ООН,ООН ООН,ООН 80Н,80Н ООН,ООН ,ООН,ООН ООН,ООН

OFFH,OFFH,ООН, ООН, ООН, ООН ООН,ООН,ООН.ООН,ООН,ООН OFFH,OFFH,OFFH, ООН, ООН, 80Н ОСОН.ОЕОН.70Н,038Н, OFFH, OFFH OFFH,ООН,ООН,ООН,ООН,ООН 80Н.ОЕОН,OFOH,38Н,1СН,0СН ОСИ,OFFH,OFFH,OFFH, OFFH, ОСИ ОСИ,1CH,38H,OFOH,ОЕОН,80H ООН,ООН,ООН,ООН,ООН, ООН ООН,ООН,ООН,ООН,ООН,ООН ООН

. DCB OFFH,OFFH,ОСОН,ОСОН,ОСОН,OFOH

.DCB OFOH, ООН, ООН, ООН, ООН, ООН

.DCB OFFH, OFFH, OFFH, 0ЕН,07Н,03Н

.DCS 01Н,ООН,ООН,ООН,OFFH,OFFH

.DCB OFFH,ООН,ООН,ООН,ООН,ООН

.DCB 0FH,3FH,7FH, ОЕОН, ОСОН, ЗОН

. DCB 80Н, OFFH, OFFH, OFFH, OFFH, 80H

. DCB 80H,ОСОН,ОЕОН,07FH,03FH,OFH

.DCB ООН,ООН,ООН,ООН,ООН,ООН

.DCB ООН,ООН,ООН,ООН,ООН,ООН

.DCB ООН

;PAGE3, 8 строк в верхней части индикатора.

.DCB .DCB . DCB .DCB .DCB .DCB .DCB . DCB .DCB .DCB .DCB

01Н, 01Н, 01Н, ООН, 01Н, ООН, 01Н, 01Н, ООН, ООН, ООН

01Н,01Н,01Н, ООН,ООН,ООН, 01Н,01Н,00Н, ООН,ООН,ООН, ООН,ООН,ООН, ООН,ООН,ООН, 07Н,07Н,07Н, 01Н,00Н,00Н, ООН,ООН,ООН, ООН, ООН, ООН,

01Н,01Н ООН,ООН ООН,ООН 01Н,01Н ООН,ООН 01Н,01Н 07Н,01Н ООН,ООН ООН,ООН ООН,ООН

; PAGE2

Подпрограмма выводит на экран индикатора надпись Фитон . Образ изображения находится в таблицах PIXEL!, PIXEL2. В более подробном описании эта несложная программа вряд ли нуждается, поскольку снабжена подробными комментариями.

Тактирование индикатора

Тактирование индикатора прогце всего осуществлять с помощью микроконтроллера MCS-51 со встроенным узлом PWM (ШИМ). В рассматриваемом случае использовался микроконтроллер 80С552 фирмы Philips. У него имеются две независимые выходные линии, частота и скважность сигналов на которых легко Настраиваются. В описываемом случае одна линия была применена для тактирования индикатора. Вторая линия обеспечивала функционирование преобразователя отрицательного напряжения, поскольку использовался индикатор с расширенным температурным Диапазоном. Частота сигналов на линиях одинакова и зависит от



тактовой частоты микроконтроллера. Настраиваются линии ШИМ очень просто:

;Настройка PWM

MOV А,#0СН MOV PWMP.A MOV A,#7FH MOV PWMO.A MOV PWMI.A

; Настройка предделителя.

.Определение скважности сигнала.

Ассемблер МСЛ-51

Для того, чтобы понять программу SED, следует ознакомиться с кратким описанием последовательности работы с ассемблером МСА-51.

Ассемблер МСА-51 позволяет получить код, пригодный для исполнения на любом процессоре, совместимом с Intel 8051 по системе команд.

В языке ассемблера каждой инструкции исполняемого кода соответствует мнемоническое обозначение - так называемая ассемблерная мнемоника. Ассемблерные мнемоники разрабатываются фирмой-изготовителем процессоров и обычно выбираются так, чтобы отражать сущность соответствующих инструкций. Например, мнемоника ADD обозначает операцию сложения (от addition - сложение (англ.)).

Вы можете использовать осмысленные символические имена (идентификаторы) для указания адресов переменных, массивов и адресов перехода вместо их абсолютных значений. Это делает программу более понятной (читаемой) и упрощает ее сопровождение (документирование, тестирование, модификацию).

Любая ассемблерная программа может содержать:

описания машинных инструкций (т. е. мнемоники с операндами)

директивы ассемблера, например, директивы определения идентификаторов, макроопределения и т. п.

. команды управления ассемблером, например, включение и выключение генерации листинга.

Кроме директив и команд, поведением ассемблера во время трансляции управляют опции командной строки, указанные при запуске.

Полное описание ассемблера находится в пакете Project-51. Мы лишь разъясним некоторые основные понятия, связанные с рассматриваемой программой.

Технология создания программ

Исходные тексты программ на языке ассемблера транслируются с помощью макроассемблера МСА-51, результатом транс-

ляции являются файлы в перемещаемом объектном формате МСО.

С помощью утилиты обслуживания библиотек MCLIB несколько объектных файлов могут быть объединены в пользовательскую библиотеку (файл формата MCL).

Объектные файлы библиотеки, пользовательские и стандартные (т. е, поставляемые в комплекте с кросс-средствами) связываются в единую программу редактором связей (линкером) MCLINK. Результатом могут являться файлы в форматах:

МСЕ (объектный файл с кодами и отладочной информацией формата Phyton);

HEX (абсолютный объектный файл в формате Intel HEX);

ZAX (файл с отладочной информацией в формате ZAX).

Таким образом, приводимая ниже процедура трансляции несколько сложнее и содержит большее число промежуточных шагов, чем описанная в основной части книги. Вначале написанная вами программа транслируется в файл в объектном формате МСО и только после этого преобразуется линкером в НЕХ-формат, понимаемый программатором. Подобная многоступенчатость позволяет избежать сбора в основном тексте вашей программы всех необходимых для ее функционирования подпрограмм - многие из них, особенно те, которые вы часто используете, могут быть вынесены в так называемые библиотеки, и включаться в вашу программу не вставкой их в текст вашей программы, а выдачей соответствующей команды линкеру.

Адресные пространства

Как правило, в контроллерах одновременно используется несколько различных типов физической памяти: постоянная (ПЗУ), в которой обычно хранится исполняемый код, и оперативная (ОЗУ), предназначенная для размещения переменных, массивов и т. д.

Различные аппаратные конфигурации памяти поддерживаются при помощи концепции адресного пространства. Пользователь может объявить несколько адресных пространств (например, одно - для ПЗУ, одно - для ОЗУ), причем при этом он может самостоятельно задать для этих адресных пространств диапазоны адресов, в том числе и указать разрывы.

Затем пользователь может распределить код и данные по адресным пространствам так, как это ему требуется, либо воспользоваться установками по умолчанию.

Как объявляются адресные пространства

Линкер всегда создает нижеприведенные стандартные адресные пространства:



Имя адресного пространства

DATA

BDATA

IDATA

SFRS

XDATA

CODE

Диапазон адресов

OOOH-OFFH

000H-07FH

020H-02FH

000H-07FH

080H-0FFH

OOOH-OFFFFH

OOOH-OFFFFH

Размеры этих адресных пространств можно переопределять при помощи опции линкера -А. Как правило, это бывает нужно только для IDATA, XDATA, CODE.

Другие адресные пространства (при необходимости) объявляются в командной строке линкера той же опцией -А*. При этом для каждого адресного пространства указывается атрибут allocation и диапазон адресов.

Понятие сегмента

Сегмент - это область программной памяти или памяти данных, расположенная в некотором адресном пространстве. Каждьп! сегмент имеет имя, назначенное пользователем, и некоторые атрибуты.

Абсолютные и перемещаемые сегменты

Тип сегмента (абсолютный или перемещаемый) определяется директивой объявления сегмента .ASEG или .RSEG.

Код/данные, размещенные в абсолютном сегменте, привязываются к абсолютным физическим адресам уже в исходном тексте. Имена, определенные в абсолютном сегменте, получают значения, не изменяющиеся в процессе связывания (линкования, т. е. результата работы линкера).

Расположение кода/данных из перемещаемого сегмента на этапе ассемблирования определяется смещением от начала сегмента (точнее, от начала части сегмента, находящейся внутри данного модуля). Абсолютные адреса вычисляются в процессе связывания программы после определения размера сегмента и размещения его с конкретного физического адреса.

Типы сегментов

Сегменты типа bit предназначены для резервирования места под битовые объекты (адресуемые при помощи bit addressing mode). В сегментах с allocation bit адреса есть адреса битов. Особенность имен, определенных в сегментах с таким типом состоит в том, что их можно использовать только в битовых инструкциях. Отметим, что старшая половина адресного пространства BIT резервирована для битов в регистрах специального назначения.

Сегменты типа data предназначены для резервирования во встроенном ОЗУ кристалла места под прямо- и косвенно-адресуемые объекты (адресуемые при помощи direct addressing mode и indirect addressing mode).

Сегменты типа bdata предназначены для резервирования во встроенном ОЗУ кристалла места под прямо- и косвенно-адресуемые объекты, отдельные биты которых можно будет также адресовать побитно (т. е. при помощи bit addressing mode). Особенность имен, определенных в сегментах с таким типом - их можно использовать в операторах вычисления адреса бита.

Сегменты типа idata предназначены для резервирования во встроенном ОЗУ кристалла места под косвенно-адресуемые объекты (адресуемые при помощи indirect addressing mode).

Сегменты типа xdata предназначены для работы с внешней памятью данных (т. е. с той памятью, обращение к которой возможно при помощи инструкций MOVX). В этих сегментах можно резервировать место для поддержки ОЗУ и внешней периферии и инициализировать память данными для поддержки ПЗУ.

Сегменты типа code предназначены для работы с программной памятью. В этих сегментах можно использовать мнемоники машинных инструкций и инициализировать память данными для генерации таблиц, к которых можно потом обращаться при помощи инструкций MOVC.

Сегменты типа sfrs** резервированы для определения регистров спецназначения (они адресуются только при помощи direct addressing mode). Здесь можно использовать только абсолютные сегменты. Особенность имен, определенных в сегментах с таким типом заключается в том, что их можно использовать в операторах вычисления адреса бита (линкер проверяет, чтобы адрес байта, для которого вычисляется адрес бита, делился бы на 8 без остатка). Кроме того, такие имена нельзя использовать нигде, кроме как в машинных инструкциях с прямой адресацией (какой смысл манипулировать с адресом объекта, который нельзя адресовать косвенно?).

* Допустимо ли банкирование - по означает, что нельзя создавать адресные Пространства с именем, отличным от имени стандартного, т. е. фактически можно только изменять размер стандартного адресного пространства.

** Если вы используете определения регистров спецназначения из комплекта поставки МСА-51, то адресное пространство SFRS и сегменты с allocation sfrs вам никогда не понадобятся непосредственно.



Директивы ассемблера

PMODULE, .LMOOULE начало программного/библиотечного модуля

ENDMOD, .END конец модуля

INCLUDE включение файла в тексг

ASEG, .RSEG, .ENDSEG выбор/объявление абсолютного/перемещаемого сегмента

FUNC. .ENDF объявление подпрограммы

DEFINE объявление имени для всех модулей в файле

EQU, .SET, = объявление имени для текущего модуля

LABELx объявление типизированной метки

DS,\ определение типизированной переменной

DCx инициализация памяти типизированными данными

PUBLIC объявление глобального имени

tXTRNx объявление типизированного внешнего имени

EXTRNF объявление внешней подпрограммы

USING указать, какой банк регистров используется

LMKCMD передача параметров линкеру

WARNING, .ERROR, -MESSAGE вывод сообщений на консоль

ORG установка программного счетчика

ALIGN выравнивание значения программного счетчика

BYTE,.BIT задание operand type для имени

TYPE задание типа для имени

EXTRN объявление внешнего нетипизированного имени

LM0DULE2 начало низкоприоритетного библиотечного модуля

DS резервирование указанного числа байт

DB1 инициализация памяти по 1 байту

DB2, .DB4 инициализация памяти по 2/4 байта

OBJREC прямой вывод данных в объектный файл

Выделенная директива .DSX определяет переменные и массивы заданного типа (резервирование памяти без задания начального значения).

пате .DSB [expression] name .DSW [expression] name . DSD [expression] name .DSC [expression] name .DSi [expression] name .DSL [expression] name .DSR [expression] name .DST [expression]

; беззнаковое значение, 8 бит ;беззнаковое значение, 16 бит ; беззнаковое значение, 32 бит ;знаковое значение, 8 бит ; знаковое значение, 16 бит .знаковое значение, 32 бит ; плавающее значение, 32 бит ; битовое значение

Project-51

Все действия, связанные с написанием, трансляцией и отладкой программ проводились с помогцью профессионального интегрированного пакета Proiect-5L Для отладки программы использовался лнутрисхемиый эмулятор PICH-5] фирмы Фитон .

Интегрированность пакета Project-Sl проявляется в то.м, что все этапы разработки связываются в одно целое. Самые трудоемкие эта-г[ы, а именно компиляция/линковка с диагностикой и исправлением ошибок, максимально упрощены.

Project самостоятельно следит за изменениями, которые вы вносите в исходные тексты своих программ. Например, исправив ошибку в исходном тексте, вы можете нажатием одной кнопки выполнить программу до курсора : заставить менеджер проектов перетранслировать изменившиеся модули, загрузить полученную программу в память отладчика и запустить ее до указанной строки. Переход от отладки к редактированию происходит так же прозрачно и быстро.

Пакет Project-51 полностью освобождает вас от всевозможных Б АТ-файлов, зачастую используемых в DOS-приложениях для запуска компиляции и линковки. Опции ассемблера, линкера, библиотекаря также помнить совсем не обязательно, для этого есть соответствующий диалог, который называется Кросс-средства (рис. 1).

Выбор опции кросс-средства с последующим нажатием кнопки Редактировать обеспечивает переход в диалог опций для ассембле-

Кросс-средст во

!ы6ор крос(>срваств.) Катапоги j Процессор j Помято Постаашик кроС!:>средсте ; ОпшиквжДйгякросесредстеа

г 1ДЙ Systems vx

f Keil Software v 5.< ~K8ilS<Awev6x

ijnkef Ubransn

Рсда*;тироЕать...

X Oт^1виa I 7 Cnpasire

Рис. 1. Диалог Кросс-средства



Phytan-MicioCOSM lib

r Коноертироеать модуле...................

ije kohbejjt-hpobarte

В мооуйз-Йибпиотечиого типа

f~ e Monyntj би&яиот8ммого типа GHMStfHf! приоритетом

X Отмена

-9 Справке

ра (рис. 3), линкера (рис. 4) или библиотекаря (рис. 2). При установке пакета Project-51 опции кросс-средств по умолчанию настраиваются так, чтобы максимально быстро начать работу с новым проектом.

Рис. 2. Опции Библиотекаря

ШВЕ

Опции

lOposepxa типоа' : Г Различать регистр для имен ; !тпбдомнза и|4формвция : 15 Создать файя листинга W Дк лючить сганаартнй1й i4CtUDE-фaйл.

Я OcraHOB.nocfie V; rfio 3 ошибок йаполнитеяьные опции командной строки: ;;;;......:

Включить 8 листинг V Та&лииуперекрестньк ссыпок Г Макро исоцники г Г Макро расширения !..РНевктивнь!естроки.;;..

Г Широ14ий вывоа F Рэз&ить на страницы

Строк на страадцу-1

Установить знацвнияпсумсл5

Рис. 3. Диалог Опции ассемблера

Достаточно нажать кнопку Справка или клавишу F1 , чтобы прочитать описание используемого диалога.

Наиболее целесообразным способом изучения пакета, очевидно является такой: с сайта фирмы Фитон скачивается демо-версия Project~51, которая позволяет пройти все этапы разработки от создания проекта до получения отлаженного кода программы.

Пользователь, эксплуатирующий современный пакет Project освобождается от рутинных операций связанных с манипулированием файлами проекта и результата компиляции. Все сделано для того, чтобы максимально сконцентрироваться на решении главных задач, связанных с отладкой программы и аппаратуры. Если в диалоге Кросс-средства выбрать закладку Каталоги , то одноименный диалог однозначно определяет рабочие директории проекта и кросс-средств (см. рис. 5).

В результате работы с пакетом вы получаете отлаженный код, который находится в памяти данных микроконтроллера и который можно сохранить в виде файла нужного формата.

Для этого следует воспользоваться диалогом Запись файла на диск (см. рис. 6).

Основой, обеспечивающей интегрированную поддержку составных частей Project на любом этапе отладки, несомненно является менеджер проектов. Про него можно сказать словами иранского поэта Фердоусси: он везде и нигде . На менеджер проектов нельзя посмотреть (нет такого окна), но любые манипуляции в среде Project так

Phyton-MicroCOSM Imki

яаядл!-тапров b выдл* lEX-ttJai

Рис. 4. Диалог Опции линкера 318

\/ Of. X Отмвна: ? Справка

9i,iF.inp кроосредств Каталоги jnpcubceapl Память j

i Йийпиотеки.

jC,\PHfTON\PrO 51\3 01 95\MCA51\LIB йКрмпиЛйторы f,вхе)

.ijC\PHYTON\PROJ 51\3 01 35\MCA5nBIN Поиск комлилй-сра

£vvc.r. .is директор, 1д(нй ;,г.эд.т--ль.чд)--

~3 О^зор.. j ~3 Обзор... j

~2 Ц. Об50р .

j il; Обзор...

OK I X Отмена I Ф Справке

Рис. 5. Диалог Кросс-средства



Записать фойя на диск

Алресо сочленяемой о&ласти НйУчвльиыи- [о

Формат сшраййемога:(И1Йяа

.утенаертный Intel HF>; Рдсширвниый Intel HEX . - -Дзоичнай..

ОК [

-Адресное просгрзисгво-Г tdata

X Отмена

: lcd

Add iOe

id Ш ftsm Sources

UfclLibraries and Object Files ja Listings

в seci1520.LST - :iJ Map

a LCD.MAP

Рис. 7. Окно Проект

Рис. 6. Диалог Запись файла на диск

ИЛИ иначе связаны с ним. И начинается работа в интегрированно! среде именно с создания проекта.

Основным компонентом, содержащим всю необходимую для разработки информацию, является проект. Окно проекта отображает содержимое текущего проекта (рис. 7).

Любой файл в окне Проекту доступен для редактирования. Project располагает встроеннЫ: редактором, поставляемым большинством востребованны! функций, таких как работа с блоками, поиск, замена, контекстно выделение текста. Но разработчик может использовать и внешний редактор. Тогда файлы просто добавляются в окно проекта (кноп ка Add ).

Sed 1520.1st - это файл листинга, текст которого приведен в од-* ном из последующих разделов.

Отладка программы с помощью внутрисхемного эмулятора

Поскольку программа не очень сложна, отладка в основном свелась к проверке целесообразности использования бита totobhocti BUSY контроллеров SED. В паспорте на индикатор нет четкого описания особенностей работы контроллеров SED в плане формирования внутреннего слова состояния и связанных с этим временных затрат. Применение внутрисхемного эмулятора позволяет легко справиться с этой проблемой.

Согласно документации на SED-контроллеры любые действия, связанные с записью в контроллеры индикатора команд и данных, должны осуществляться после проверки состояния бита готовности BUSY. Если этот бит статусного регистра контроллера индикатора установлен, то контроллер выполняет внутренние операции и недоступен. Бит придется проверять еще и еще, до тех пор, пока BUSY не будет сброшен внутренней логикой. Только тогда внешний по отношению к индикатору процессор может выполнить действие, например, по передаче байта данных в видеопамять. Бит готовности - это старший бит в статусном регистре контроллеров SED1520/1521 (табл. 1).

Для анализа BUSY в представленную выше программу следует добавить подпрограмму RDBUSY:

.EQU Р1.3 ;Линия сигнала чтения.

; Установка сигналов управления.

SETB SRD ;RD =1 ;Линия сигнала чтения.

; Подпрограмма чтения бита готовности.

.RSEG BUS,CODE

RDBUSY:

MOV A, #OFFH

MOV PD.A ; Настройка порта данных на ввод.

CLR SRD ;Перевод линии сигнала чтение в активное состояние. MOV А,P D ; Чтение статусного регистра. SETB SRD ; Окончание сигнала RD.

RLC А ;С = бит готовности.

JC RDBUSY ;Цикл пока бит установлен.

Теперь любое обращение к SED контроллерам (выбор страницы или столбца, запись байта данных) должно предваряться выполнением подпрограммы RDBUSY, выход из которой возможен только при сброшенном бите готовности. Текст программы должен выглядеть так:

PAGE:

;Выбор страницы. CALL RDBUSY



COLUMN:

;Выбор столбца. CALL RDBUSY

WR D:

;Запись байта данных, CALL RDBUSY


Приступим к отладке. Прежде чем начать работу с эмулятором, его необходимо собрать.

Конструктивно эмулятор PICE состоит из трех плат: основной платы MR1, сменной платы PR1 (она называется под ) с эмулирующим процессором МЕ-ХХХ и сменной платы AR1 с эмуляциоиной головкой. Схема сборки эмулятора представлена на рис. 8.

Основная плата всегда располагается сверху. На этой плате находятся! разъемы для подключения кабелей канала RS-232 и трассировщика. К разъемам на нижней стороне основной ruiai ты пристыковывается плата PR1. Н| плате PR1 установлен разъем питаний эмулятора, куда со штатного блока пит тания подается напряжение -1-5 В. !

К ра;5ъемам на нижней стороне ruia-ты PR1 присоединяется плата эмуляциоиной головки AR1. Если вы работаете с эмулятором автономно, т. е. без подключения к отлаживаемому устройству, то плату AR1 можно не устанавливать.

Затем необходимо подключить эмулятор к свободному последовательному порту вашего компьютера и подать на плату эмулятора питание. Соединительный кабель для последовательного канала и блок питания входят в комплект поставки.

До ознакомления с аппаратурой и программным обеспечением эмулятора не рекомендуется вставлять его в отлаживаемый макет.

Запустите программу поддержки эмулятора с помощью ярлыка с надписью Р1СЕ-ХХ In-Circuit Emulator (пользователи полного пакета Project-XX/ESA могут сначала запустить программу Phyton Project-XX , которая предложит выбрать, какой отладчик запустить - симулятор или эмулятор).

Рис. 8. Схема сборки эмулятора

На экране появится диалог Параметры связи . В диалоге вы должны задать параметры последовательного канала связи с эмулятором.

Последовательный-порт

Выберите номер последовательного порта, к которому вы подключили эмулятор. Рекомендуется подключать мышь к порту СОМ1, а эмулятор - к порту COM2.

Скорость связи

Здесь осуществляется выбор скорости обмена по последовательному каналу. Эмулятор поддерживает скорости обмена до 115 кбод и мы рекомендуем устанавливать именно это значение скорости.

Если по каким-либо причинам связь на 115 кбод не устанавливается, сбросьте на несколько секунд питание эмулятора и попытайтесь установить более низкую скорость. Понижение скорости также имеет смысл при возникновении канальных ошибок при работе эмулятора.

Кнопка Demo

Нажатие этой кнопки запускает программную оболочку эмулятора в демонстрационном режиме. Подключать эмулятор при этом не требуется. Демонстрационный режим позволяет ознакомиться с эмулятором, не имея его аппаратной части.

Если после того, как вы нажали кнопку ОК , программа поддержки не смогла установить связь с эмулятором, то выдается сообщение Установить связь не удалось , и вы возвращаетесь в диалог выбора параметров связи.

Если связь с эмулятором установлена успешно, то на экран выдается диалог, в котором можно задать конфигурацию аппаратуры эмулятора. Когда вы подтвердите правильность конфигурации нажатием кнопки Ок , эмулятор перейдет к вьшолнению начальных тестов и инициализации своей аппаратуры.

Процесс тестирования отображается на экране. По окончании тестов открывается главное окно, и вам предлагается выбрать, какой из демонстрационных примеров загрузить.

Если вы не хотите, чтобы это меню появлялось на экране при последующих запусках эмулятора, выберите в нем пункт Never show this menu on start-цр . После загрузки примера вы можете самостоятельно исследовать возможности эмулятора, перемещаясь по меню и диалогам.

Каждое окно, меню и диалог имеют собственную страничку в справочной информации, которая вызывается клавишей Р1 .

Следующие шаги связаны с работой в интегрированной среде Project, а именно - с оболочкой эмулятора, где создадим проект. В



диалоге Кросс-средства выберем ассемблер МСА-51 и наберем во встроенном редакторе текст программы SED.

Любая попытка выполнить программу по шагам или запустить ее на непрерывное выполнение приведет к компиляции исходьюго текста проекта. Ошибки компиляции выводятся в специальное окно сообщений. Программная оболочка эмулятора имеет множество окон просмотра, выводить которые на экран следует по мере необходимости. На рис. 9 представлена конфигурация проекта, включающая минимальный набор окон необходимых для работы с проектом.

Перед выполнением откомпилированной без ошибок программы осуществим сброс микроконтроллера. Это можно сделать с помощью соответствуюн^ей кнопки, либо установив курсор на первую команду и воспользовавшись кнопкой NEW РС JЮкaльнoгo меню окна исходного текста, установим новое значение счетчика ко.манд.

Окно исходного текста

Кнопки выполнения программы

Значения текущих переменных

Окно регистров CPU


Рис. 9. Конфигурация объекта 324

В подпрограмме RDBUSY сделаем возврат по команде JC не на метку RDBUSY, которая является основной точкой входа, а на метку RDB, после которой поставим только одну команду NOP (рис. 1). Теперь достаточно установить на команду NOP безусловную точку останова, чтобы отследить состояние бита готовности. Если произойдет хоть один останов на NOP (а переход сюда возможен только когда бит BUSY установлен), то программу обслуживания индикатора следует использовать с подпрограммой анализа бита готовности RDBUSY. В противном случае эта подпрограм.ма не нужна.

примечание. Безусловные точки останова - это самый простой тип точек останова из применяемых в инструменталь]№1х отладочных средствах. Такие точки срабатывают, когда выполняющаяся в непрерывном режиме отлаживаемая программа достигает адреса точки. При этом программа останавливается, а команда, находящаяся по адресу точки останова, не выполняется. Количество одновременно установленных точек в эмуляторе PICE-51 не ограничено. Устанавливать и снимать безусловные точки останова можно несколькими способами. Самый простой и удобный способ - воспользоваться командой локального меню или кнопкой Вгеак на линейке управления окна Исходный текст . Точка ставится/снимается по адресу, соответствующему позиции каретки в окне. Строка, на которой установлена безусловная точка останова, выделяется красным цветом (рис. 10).

Возможен и другой вариант анализа бита готовности, связанный с использованием внешних входов трассировщика и процессора точек останова внутрисхемного эмулятора PICE-51. Но это несколько сложнее.

Итак, запускаем программу на непрерывное выполнение. Изображение слова Фитон на экране индикатора появляется, а на ука-

dlsm sm(M2,14)

.RSEG BUS,CODE

мои ft.ttSFFH

HOU Р.О.Й

CLR SRD

мои ft.P.D

SETB SRD

RLC Й

JC RDB

! 3*

ft=9

RD=1

Рис. 10. Окно Исходный текст с установленной точкой останова



1 ... 13 14 15 16 17 18 19 20
© 2004-2024 AVTK.RU. Поддержка сайта: +7 495 7950139 в тональном режиме 271761
Копирование материалов разрешено при условии активной ссылки.
Яндекс.Метрика