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

1 ... 14 15 16 17 18 19 20

занную точку останова мы не попадаем. Похоже, что отрезок времени Tbusy от записи информации в контроллеры индикатора до считывания бита готовности достаточно большой, и все процессы внутри контроллеров индикатора успевают завершиться. Попробуем уменьшить Tbusy, увеличив для этого тактовую частоту микроконтроллера. Сделать это очень просто, поскольку эмулятор PICE-51 имеет синтезатор частоты. Изменение частоты тактирования проводится из диалога Конфигурация аппаратуры (см. рис. 11).

Так вот, вплоть до максимальной частоты 33 МГц останов на RDB: NOP не происходит. Отсюда следует сделать вывод о том, что анализ бита готовности при работе с индикатором не нужен. Надо понимать, что речь идет о нашем, частном случае подключения индикатора к микроконтроллеру семейства MCS-5I. Для микроконтроллеров семейства MCS-51 с укороченным циклом команд следует провести отдельное тестирование.

POD Р0!>Ы-6 Проиегар: Опции

Г*Рапршить fjirunntST с ппчты пользователя г* Программа полеэоватвпя иамгагэувтДОТ. , ., I Р9-чрр1иить чтение йуфвса тоьсилр^адии влОм/ й

Токтавь1й генератор' й

в'Наамулоторв.частота l.riOS кГи s ** Внешний платы попьзоватйла)

Измвренивя частота 12С31 кГц В 11воа 6 №полоЗуется кв*

Управляющий сигна ои >й(не ш

г Нож1саввопа/оыоош1 вьшвго назвочения

B BQriP3?HCnorta3V9TcatfaK

(5-Упраелярщий сигналомEeed f Ножка ввола/вывойа о5шего назначения

J X Отмена I 9 Справка

Рис. 11. Диалог Конфигурация аппаратуры эмулятора ВРЕМЯ ВЫПОЛНЕНИЯ ПРОГРАММЫ

Время выполнения программы SED с подпрограммой анализа бита готовности RDBUSY составляет 20128 мкс. Без этой подпрограммы время выполнения 8446 мкс. Тестирование проводилось при тактовой частоте 12 МГц. Время выполнения фиксируется в одноименном окне эмулятора (см. рис 12).

Ш Время выполнения про...

RasBt I Freq

Time Last Freq

8,439.30 us 8,439.30 us 12001 kHz

Рис. 12. Окно Время выполнения программы

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

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

Для этого поставим безусловную точку останова на любую команду SETB SWR. Данная команда встречается в тексте программы три раза: запись номера страницы, запись номера столбца и запись байта данных. Всегда сразу перед следующей процедурой обращения к контроллерам индикатора после окончания сигнала записи по команде SETB SWR, следует вызов подпрограммы RDBUSY. В этой подпрограмме тоже поставим безусловную точку останова на команду SETB SRD. После сброса процессора запустим программу на непрерывное выполнение. Практически незамедлительно произойдет останов на первой безусловной точке останова, при этом команда SETB SWR выполнена не будет. Цвет выделения данной строки изменится с красного на желтый.

Последующий запуск программы до второй безусловной точки останова обеспечит выполнение интересующего нас участка программы от окончания сигнала записи по команде SETB SWR до чтения статусного регистра MOV A,P D. В строке Last окна Время выполнения программы указывается время выполнения программы после последнего останова, и это время составляет 6 мкс при тактовой частоте 12 МГц. При тактовой частоте 33 МГц Tbusy = 2,2 мкс.

Трассировка внешних сигналов и временные диаграммы

Программа SED, управляющая работой ЖК-индикатора PG12232 на основе контроллеров SED1520/1521, по сути формирует на линиях микроконтроллера сигналы CS1, CS2, WR. Проконтролировать данные сигналы можно с помощью осциллографа, запустив программу на непрерывное выполнение. Современный эмулятор PICE-51, с помощью которого проводилась отладка программы, способен предоставить пользователю сервис и в области анализа внешних, по отношению к эмулируемому микроконтроллеру, цифровых сигналов. Помимо выводов эмулируемого микроконтроллера эмулятор имеет восемь цифровых входов, каждый из которых может быть распаян в нужное



место схемы. Состояние восьми внешних сигналов фиксируется в аппаратном буфере трассировщика внутрисхемного эмулятора.

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

Аппаратный буфер, реализованный на основе ОЗУ эмулятора (256 кбайт), хранит состояния сигналов в некотором внутреннем формате эмулятора. Одна запись, называемая фреймом, имеет разрядность в 128 бит и сохраняется на каждом цикле микроконтроллера. Объем буфера позволяет иметь под рукой информацию о 16000 фреймов.

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

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

ЕхЮ. Активизация CS1

Ext1. Активизация CS2

Ext2. Окончание SWR


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

Подсоединим линию ExtO эмулятора к порту Р1.1 микроконтроллера-это сигнал CS1 дляSED1520. ЕХТ1 подключимк Р1.2 (CS2), и к ЕХТ2 подсоединим сигнал записи SWR, обеспечиваемый портом Р1.4. После вьшолнения некоторой части программы по шагам или до точки останова заглянем в аппаратный буфер трассировщика с помощью окна Трассировщик . В окне легко найти, например по мнемоникам команд, то место, где активизируются оба сигнала CS и происходит запись команды во внутренние контроллеры индикатора с целью его включения (рис. 13).

Столбец Ext 7..О окна трассировщика показывает состояние интересующих нас сигналов.

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

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


Рис. 13. Окно Трассировщик 328

Рис. 14. Временные диаграммы сигналов управления



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

Пример 2. Сопряжение виртуальной модели индикатора с логической моделью процессора

Программный отладчик-симулятор PDS-51 фирмы Фитон умеет выполнять так называемые файлы сценария (ФС). Основная цель использования ФС - создание моделей внешней по отношению к процессору среды. С гюмощью ФС можно, например, моделировать напряжение на входе АЦП, сигналы на цифровых входах и т. п., а также моделировать устройства ввода и отображения информации, например, графический ЖК-индикатор PG12232. В комплекте PDS-51 поставляются несколько примеров ФС, которые вы можете легко модифицировать для собственной задачи.

Чтобы освоить моделирование внешней среды, вам придется приложить определенные усилия - по крайней мере, прочитать соответствующий материал в электронном справочнике симулятора PDS-51, Если вы знаете язык Си, то это сильно упростит задачу.

Отлаженную с помощью эмулятора программу SED далее легко использовать с PDS-51. Программа небольшая, и ее запросто можно применять в приложениях с объемом кода до 2К. Такие приложения живут даже в демо-версии симулятора PDS-51.

Текст модели индикатора для PDS-51

Модель ЖК-индикатора не поддерживает режим чтение-модификация-запись, и в ней нет статусного регистра с битом готовности, не нужна тактовая частота.

Модель индикатора PG 122*32 состоит из трех файлов: Sedl520.cmd; Lcd pl.cmd; Lcd defs.h - выполнение программы SED

совместно с файлами сценария СЕШХЕВЕЗШШШШШШШШШЬЛЗ обеспечивает вывод названия фир-

мы Фитон на виртуальный инди-ЫТ(©)Н катор(рис.15). г1 i Ч;>П SED1520.cmd-этот файл сце-

--- пария содержит функции, выполня-

Рис. 15. Виртуальный индикатор ющие Отображение индикатора в

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

/ SED1520 LCD Indicator

ttinclude <system.h> ttinclude <lcd defs.h>

uchar LeftHalf[244]; uchar RightHalf[244];

ulong WindowHandle;

uint CurPage; uint CurColumn;

/.+ DrawColumn ° */

void DrawColumn(uint half number, uint page, uint column)

uint byte index = page * COLUMNS IN-PAGE + column;

uchar byte = LeftHalf[byte index];

if (half number == 1) byte = RlghtHalf[byte index];

uint X = (half number * COLUMNS lN PAGE + column) * SCALE; uint у = page * 8 * SCALE;

uint i;

uchar mask = 0x80;

for (i = 0; i < 8; i++) {

ulong color = BACKGROUND COLOR; if (byte & mask) color = PIXEL COLOR; SelectBrush(WindowHandle, color); Fi IIRect(WindowHandle, x, y, x + SCALE, y + SCALE); mask = 1; у += SCALE;

DrawPage



void DrawPage(uint half number, uint page)

uint column;

for (column = 0; column < COLUMNS.IN PAGE; column++) DrawColumn(half number, page, column);

/.+ DrawHalf

void DrawHaIf(uint half.number)

uint page;

for (page = 0; page < NUM PAGES; page++) DrawPage(half number, page);

/.+ DrawLCD

void DrawLCDO

DrawHalf(O); DrawHalf(l);

UpdateWi ndow(Wi ndowHandle);

/*+ InitLCDWindow

void lnitLCDWindow(char title[]) {

WindowHandle = OpenUserWindow(title); SetBkCoIor(W1ndowHandIe, BACKGROUND COLOR); uint width = COLUMNS,IN-PAGE * 2 * SCALE; uint height = NUM PAGES * 8 * SCALE; SetWindowSize(WindowHandle, width, height);

void mainO {

TerminateAlIScri pts(); ExecScri pt( LC0 P1-.);

lnitLCDWindow(.<SED1520 LCD Indicator ); DrawLCDO;

uint P1 addr = AddrExpr( P1>.); uint P2 addr = AddrExpr( P4 );

whi le (1) {

WaitMemoryAccess(P2 addr, AS DATA, 1, MA WRITE); ucnarControl = GetByte(P1 addr, AS DATA); uchar Data = GetByte(P2 addr, AS DATA);

if ((Control & AO) == 0) { Conf i gurat i on if ((Data & OxFC) == 0xB8) Set page address CurPage = NUMPAGES - (Data & 3) - 1;

if ((Data & 0x80) == 0) Set column address CurColumn = COLUMNS IN PAGE - Data - 1;

Lcd p1.cmd

Этот файл сценария отслеживает запись программой данных в видеопамять индикатора и вызывает функцию отображения столбца:

#include <system.h> #include <lcd defs.h>

void mainO {

uint P1 addr = AddrExpr( RAM P1 ); uint P2 addr = AddrExpr( RAM P4 ); uint P1 addr = AddrExpr( P1>); uint P2 addr = AddrExpr( P4 ); uchar Last WR;

whi le (1) (

WaitMemoryAccess(P1 addr, AS DATA, 1, MA I/JRITE);

uchar Control = GetByte(P1 addr, AS DATA); uchar Data = GetByte(P2 addr, AS DATA);

if ((Control & AO) != 0)



if (Last WR == 0 && (Control & WR) != 0) WR Front

printf( Write data: %02X , Data);

uint byte index = CurPage * COLUMNS IN PAGE +

if ((Control & CSl) == 0)

RightHalf[byteindex] = Data; DrawColumn(1, CurPage, CurColumn);

if ((Control & CS2) == D) {

LeftHalf[byte index] = Data; DrawColumn(0, CurPage, CurColumn);

Last WR = Control & WR;

Lcd defs.h

Объявления констант, переменных и функций, необходимые обоим файлам сценария для реализации модели индикатора:

#define uchar unsigned char #define uint unsigned int #define ulong unsigned long

#define AO ObOOOOOOOl #define CSl ObOOOOOOlO #define CS2 ObOOOOOlOO #define WR ObOOOIOOOO define NUM PAGES 4 #define COLUMNS.IN PAGE 61 #define SCALE 4

ffdefine BACKGRDUND COLOR OxEFEFAF define PIXEL COLOR OxIFlFIF

extern uchar LeftHalf[]; extern uchar RightHalf[];

extern u i nt CurPage; extern ui nt CurColumn;

void DrawLCDO;

void DrawColumn(uint half number, uint page, uint column);

Для создания и редактирования текстов моделей внешних устройств можно использовать встроенный редактор симулятора PDS-51, либо любой другой, внешний по отношению к пакету Project-51 редактор. Файлы моделей внешней среды нужно отлаживать примерно также, как прикладные программы с помощью окон Исходный текст и Переменные , т. е. выполнять модели по шагам и до курсора , ставить точки останова, просматривать значения переменных и т.п. Для отладки по исходному тексту предназначено окно Исходного Текст файла сценария. Это окно открывается автоматически, если при запуске модели через меню главного окна в диалоге запуска файла установить опцию Отлаживать .,

Рассматриваемая программа поддержки ЖК матрицы совместно с файлами модели индикатора функционирует без ограничений на демонстрационной версии симулятора PDS-51 из пакета Project-51.

Скачать такую версию можно с сайта фирмы Фитон : http: www.phyton.ru

Файлы модели индикатора (Sedl520.cmd, Lcd pl.cmd, Lcd defs.h) следует поместить в системную директорию PDS-51. Тогда в меню Пользователь симулятора появится строка SED 1520 LCD indicator . Выбор этой строки приведет к запуску модели индикатора.

Пример работы с симулятором

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

Попробуем анимировать надпись Фитон , выводимую программой SED, на модель индикатора. А именно, заставим вращаться против часовой стрелки фирменную спираль, которая используется в слове Фитон вместо буквы о . Проводить математические изыскания и реализовывать программно алгоритм пересчета координат выводимых точек мы не будем. Используем более простые методы.



в кодовой памяти создадим четыре таблицы, в каждую из которых поместим образ спирали повернутой на 90, 180, 270 и 360°:

R 270: ; PAGED

; Образ спи

В 90: ; PAGE0

.DCB .DCB .ОСВ

; PAGE1

.DCB .DCB .DCB

;PAGE2

.DCB -DCB .DCB ;PAGE3:

.DCB .DCB .DCB

рали повернутой на 90 градусов

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

0С0Н,0Р0Н,ЗСН,06Н,0СЗН,71Н 19Н,8СН,0ССН,0ССН,8СН, 19Н 31Н,63Н,0С6Н,0СН,ЗСН,0Е0Н

03Н,0РН,ЗСН,70Н,63Н,0С6Н 8CH,99H,99H,98H,8DH,0C7H 60H,78H,0FH,03H,00H,00H

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

;Образ спирали, повернутой на 180°

В 180: ;PAGEO

;PAGE1

;PAGE2

;PAGE3

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

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

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

.DCB 0Е0Н,38Н,0СН,0С7Н,0ЕЗН,31Н

,DCB 19Н,8СН,0С4Н,66Н,26Н,64Н

.DCB 0ССН,88Н,18Н,38Н,0Е0Н,80Н

,0СВ 07Н,1СН,ЗОН,63Н,47Н,осей

.DCB 0С8Н,99Н,93Н,93Н,98Н,0ССН

,DCB 0C7H,63H,70H,38H,0FH,03H

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

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

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

;Образ спирали, повернутой на 270°

;PAGE1

; PAGE2

; PAGE3

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

.ОСВ ООН, ООН, ЗОН, 80Н,ЗОН,ООН

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

.DCS ООН, ООН, ОСОН, OFOH, 1ЕН,06Н

.ОСВ 0ЕЗН,0В1Н, 19Н,99Н,99Н,31Н

.DCB 63Н,0С6Н,0ЕН,ЗСН, OFOH, ОСОН

.DCB 07Н,ЗСН,30Н,63Н,0С6Н,8СН

.DCB 98Н,31Н,ЗЗН,ЗЗН,31Н,98Н

.DCB 8ЕН,0СЗН,60Н,ЗСН,0ЕН,03Н

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

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

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

;образ спирали, повернутой на 360°

R 360: ;PAGEO

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

,DCB ОСОН, OFOH, 1СН,0ЕН,0С6Н,0ЕЗН ,DCB ЗЗН,19H,0C9H,0C9H,99H,13Н ,DCB ЗЗН,0Е2Н,0С6Н,0СН,38Н,0Е0Н

.DCB 01Н,07Н, 1СН, 18Н, 11Н,ЗЗН .DCB 26Н,64Н,66Н,23Н,31Н,98Н .DCB 8СН,0С7Н,0ЕЗН,30Н, 1СН,07Н

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

Осталось дополнить код программы SED некоторым количеством команд, которые обеспечат последовательный вывод повернутых образов спирали в отведенное ей место на экране PG12232. Эти строки надо вписать вместо команды RET, которая позволяла использовать программу SED как подпрограмму (первая команда RET в тексте программы SED).

;PAGE1

;PAGE2

;PAGE3



; Вывод спирали, повернутой на 90°

MOV А,#22Н ; Адрес столбца

MOV ADR COLUMN,A

MOV А,#12Н

MOV NCOL,А ; Количество столбцов.

MOV DPTR,#R 90

CLR CSl

CALL SED1520

SETB CSl

спирали, повернутой на 1£

MOV DPTR,#R 180

CLR CSl

CALL SED1520

SETB CSl

; Вывод спирали, повернутой на 270°

MOV DPTR,#R270

CLR CSl

CALL SED1520

SETB CSl

; Вывод спирали, повернутой на 360°

MOV DPTR,#R 360

CLR CSl

CALL SED1520

SETB CSl

;Адрес начала таблицы данных R 90.

;Адрес начала таблицы данных R 180.

;Адрес начала таблицы данных R 270.

;Адрес начала таблицы данных R 360.

SJMP LL

;Бесконечный цикл.

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

Запущенная на непрерывное выполнение в PDS-51, программа выводит надпись Фитон и вращающуюся спираль вместо буквы о . Скорость вращения, как отмечалось ранее, определяется компьютером, и здесь она равна примерно одному повороту на 90° спирали за полсекунды. В нашем компьютере установлен процессор Pentium-Ill с тастовой частотой 450 МГц.

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

Результаты трансляции программы SED

Окно Дисассемблер интегрированного пакета Project позволяет увидеть результат компиляции исходного текста программы (см. рис 16).

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

0GS7 980258 MOU DPTR,S02S9

OOSfi C291 CLR cm (П0.1)

805C 120383 LCflLL SED1520

005F D23t SETB CTlI (П0.1)

0061 338281 мои DPTR,S02B1

В06Ч С2Э1 CLR CTl I (ftO.l)

GGSS 120389 LCflLL SEDt520

00S9 D291 SETB CTII (П8.1)

006B 9902F9 M8U DPTR,tl02F9

006E C291 CLR CTII (П0.1)

0070 1203S9 LCflLL SED1520

0073 0291 SETB CTII (flO.t)

0075 980341 HOU DPTR.IIS34I

0078 C2S1 CLR CTII (П0.1)

007Й 120389 LCflLL SED1S20

007D D291 SETB CTII (П0.1)

007F SaOS SJMP LL

Рис. 16. Окно Дизассемблер

# MCS-51 MACRO ASSEMBLER Version 1.02.020121

# Copyriglnt (C) 1996-2001 Phyton, Inc., MicroCOSM Ltd. #

# 2002/03/01 14:34:12

sed1520.asm sed1520.asm

sed1520.asm sed1520.asm sed1520.asm sed1520,asm sed1520.asm sed1520.asm

столбцов.

sed1520.asm

Страниц.

sed1520.asm

Столбца.

4 00000000 5

6 00000000

7 00000001

8 00000002

9 00000003 10 00000004

.ASEG IRAN,DATA .ORG OH

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

ADR PAGE .DSB 1 ;Номер страницы.

NCOL .DSB 1 ; Кол-во обновляемых

NPAGE .DSB 1 ;Кол-во обновляемых

TNCOL .DSB 1 ;Текущее значение адреса



sed1520.asm

11 00000005

TADR

.DSB 1 ;Текущее значение адреса

sed1520.asm

данных.

sed1520.asm

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

sed1520.asm

sed1520.asm

56 00000024 E4

CLR A

sed1520.asm

13 ooooooco

P D . EQU P4 ; Порт данных

sed1520. asm

57 00000025 F500

MOV ADR C0LUMN,A ; Адрес столбца.

микроконтроллера.

sed1520. asm

58 00000027 74B8

MOV A,#0B8H

sed1520.asm

14 00000091

.EQU P1.1 ;Линия выбора SED1520.

sed1520.asm

59 00000029 F501

MOV ADR PAGE,A ;Адрес страницы.

sed 1520. asm

15 00000092

.EQU PI. 2 ;Линия выбора SED1521.

sed1520. asm

60 0000002B 7404

MOV A, #4

sed1520.asm

16 00000090

.EQU Pl.O ;Линия управления AO.

sed1520.asm

61 0000002D F503

MOV NPAGE,A ;Количество

sed1520. asm

17 ;

.EQU P1.3 ;Линия сигнала чтения.

страниц.

sed1520.asm

18 00000094

.EQU Pi.4 ;Линия сигнала записи.

sed1520.asm

62 0000002F 7430

MOV A,#3DH

sed1520.asm

sed1520. asm

63 00000031 F502

MOV NCOL.A ;Количество

sed1520.asm

.ASEG ROMCODE

столбцов.

sed1520.asm

21 00000000

.ORG 0

sed1520.asm

sed1520.asm

22 00000000 C2AF

CLR EA

sed1520.asm

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

sed1520.asm

23 00000002 74EO

MOV A,#0e0h;#30H

SED1520

sed1520.asm

24 00000004 F581

MOV SP,A

sed1520.asm

66 00000033 900000

MOV DPTR,#PIXEL1 ;Адрес начала

sed1620.asm

26 00000006 80F8

SJMP START

таблицы данных PIXELI.

sed1520.asm

sed1520.asm

67 00000036 C291

CLR CS1

sed1520.asm

.RSEG AROM.CODE

sed1520.asm

68 00000038 120000

CALL SED1520

sed1520.asm

28 00000000

START:

sed1520.asm

69 0000003B 0291

SETB CSI

sed1520.asm

; Настройка PWM

sed1520.asm

sed1520. asm

30 00000000 740C

MOV A.eOCH

sed1520.asm

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

sed1520.asm

31 00000002 F5FE

MOV PWMP.A

SED1521

sed1520.asm

32 00000004 747F

MOV A,#7FH

sed1520.asm

72 0000003D 90F400

M0V DPTR,#PIXEL2 ;Адрес начала

sed1520.asm

33 00000006 F5FC

MOV PWMO.A

таблицы данных Pixel2.

sed1520.asm

34 00000008 F5FD

MOV PWMI.A

sed1520.asm

73 00000040 C292

CLR CS2

sed1520. asm

sed1520.asm

74 00000042 120000

CALL SED1520

sed1520.asm

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

sed1520.asm

75 00000045 0292

SETB CS2

sed1520.asm

37 OOOOOOOA C295

CLR PI.5 ; res = 0

sed1520.asm

sed1520.asm

38 OOOOOOOC C290

CLR AO ;AO = 0

3ed1520. asm

39 OOOOOOOE D291

SETB CSI :CS1=1

sed1520. asm

sed1520. asm

40 00000010 0292

SETB CS2 ;CS2 = 1

sedl520.asm

78 ;E

5ывод спирали повернутой на 90 градусов

sed1520.asm

; SETB SRD ;RD = 1

sed1520.asm

79 00000047 7422

MOV А,#22Н ; Адрес столбца

sed1520. asm

42 00000012 0294

SETB SWR ; WR = 1

sed1520.asm

80 00000049 F500

MOV ADR,COLUMN,A

sed1520.asm

sed1520.asm

81 0000004B 7412

MOV А,#12Н

sed1520.asm

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

sed1520.asm

82 0000004D F502

MOV NCOL,A ;Количество

sed1520.asm

45 00000014 74AF

MOV A, #OAFH

Столбцов.

sed1520.asm

46 00000016 F5C0

MOV P D,A

sed1520. asm

83 0000004F

sed1520.asm

sedl520.asm

84 0000004F 90E801

MOV DPTR,#R 90 ;Адрес начала

sed1520.asm

48 00000018 0291

CLR CSI

таблицы данных Pixel2.

sed1520.asm

49 0000001A C292

CLR CS2

sed1520.asm

85 00000052 C291

CLR CSI

sed1520.asm

50 0000001C C294

CLR SWR

sed1520.asm

86 00000054 120000

CALL SED1520

sed1520. asm

51 0000001E D294

SETB SWR

sed1520.asm

87 00000057 D291

SETB CSI

. sed1520.asm

52 00000020 0291

SETB CSI

sed1520.asm

sed1520.asm

53 00000022 0292

SETB CS2

sed1520.asm



sed1520.asm 90

sed1520.asm 91

sed1520.asm 92 00000059 903002 таблицы данных Pixel2.

sed1520.asm 93 0000005C C291

sed1520.asm 94 0000005E 120000

sed1520.asm 95 00000061 D291 sed1520.asm

; Вывод спирали повернутой на 180 градусов

MOV DPTR,#R 180 ;Адрес начала

CLR CSl CALL SED1520 SETB CSl

sed1520.asm 97

sed1520.asm 98 sed1520.asm 99 00000063 907802 таблицы данных Pixel2.

sed1520,asm 100 00000066 C291

sed1520.asm 10100000068 120000

sed1520.asm 102 0000006B D291 sed1520.asm

; Вывод спирали повернутой на 270 градусов

MOV DPTR, R 270 ;Адрес начала

CLR CSl CALL SED1520 SETB CSl

sed1520.asm 104 sed1520.asm 105 sed1520.asm 106 0000006D 90C002 таблицы данных Pixel2.

sed1520.asm 107 00000070 C291

sed1520.asm sed1520.asm sed 1520. asm sed1520.asm sed1520.asm

108 00000072 120000

109 00000075 D291 110

111 00000077 80D6

; Вывод спирали повернутой на 360 градусов MOV DPTR,eR 360 ; Адрес начала

CLR CSl CALL SED1520 SETB CSl

SJMP LL

sed1520.

, asm

sed1520.

. RSEG ;

sed1520.

115 00000000

SED1520:;Pa

sed1520.

.asm

116 00000000 COOl

PUSH

sed1520.

117 00000002 СООЗ

PUSH

sed1520

, asm

118 00000004-

LL1:

sed1520.

119 00000004 E502

sed1520.

, asm

120 00000006 F504 ,

sed1520.

121 00000008 E500

sed1520.

. asm

122 OOOOOOOA F505

sed1520.

sed1520.

.asm

124 OOOOOOOC

PAGE; ;Выб

sed1520.

125 OOOOOOOC E501

sed1520.

.asm

126 OOOOOOOE F5C0

sed1520

.asm

127 00000010 C294

SED, CODE )та с SED1520/1 AOR PAGE NPAGE

A, NCOL TNCOL,A A,ADR COLUMN TADR,A

D страницы. A,ADRPAGE P D, A SWR

sed1520, asm sed1520.asm sed1520. asm sed1520.asm sed1520.asm sed1520. asm sed1520. asm

sed1520.asm sed1520.asm sed1520.asm sed1520.asm sed1520.asm налево.

sed1520.asm sed1520.asm sed1520.asm

sed1520.asm

128 00000012 D294 129

130 00000014

131 00000014 E505

132 00000016 F5C0

133 00000018 C294

134 0000001A D294

SETB SWR

COLUMN: ; Выбор столбца. MOV A,TADR MOV P D,A CLR SWR SETB SWR

sed1520.asm 135

sed1520.asm sed1520.asm sed1520.asm sed 1520. asm sed1520.asm sed1520. asm sed1520.asm sed1520.asm

окончен.

sed1520.asm sed 1520. asm sed1520. asm sed1520.asm

столбцам.

sed1520.asm sed1520.asm

страницам.

sed1520. asm sed1520. asm sed1520. asm sed1520.asm sed1520.asm sed1520.asm sed1520.asm

136 0000001C

137 0000001C D290

138 OOOOOOIE E4

139 0000001F 93

140 00000020 A3

141 00000021 F5C0

142 00000023 C294

143 00000025 D294

144 00000027 C290 145

146 00000029 0505

147 0000002B D504E6

148 0000002E 0501

149 00000030 D503D1

151 00000033 D003

152 00000035 D001 153

154 00000037 22 155

WR D: ; Запись байта данных.

SETB AO

CLR A

MOVC A,@A+DPTR

I NC DPTR

MOV P D,A

CLR SWR

SETB SWR

CLR AO

;A0 = 1

;WR = 0

;Сигнал записи ;A0 = 0

INC TADR

DJNZ TNCOL, COLUMN ;Цикл no

i NC ADRPAGE

DJNZ NPAGE, LL1 ;Цикл no

POP NPAGE POP ADR.PAGE

157 158

159 00000000

.RSEG DATE,CODE PIXEL1: ; Образ экрана SED1520.

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

162 163

164 00000000 00000000 00000004 0000

165 00000006 00000000

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

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



sed1520.asm

sed1520. asm

sed1520.asm

sed 1520. asm

sed 1520. asm

sed1520.asm

sed1520. asm

sed1520.asm

sed 1520. asm sed1520.asm sed 1520. asm

sed1520.asm

sed1520.asm

sed1520.asm

sed 1520. asm

sed1520. asm

sed1520.asm

sed1520.asm

sedl520.asm

sedl520. asm

sed1520.asm sed1520. asm sed1520.asm

sed1520.asm

OOOOOOOA 0000

166 OOOOOOOC 00000000 00000010 0000

167 00000012 80808000 00000016 0000

168 00000018 00000000 0000001C 8080

169 0000001E 80000000 00000022 0000

170 00000024 00000000 00000028 0080

171 0000002A 80808000 0000002E 0000

172 00000030 00000000 00000034 0000

173 00000036 00000000 0000003A 0080

174 0000003C 80 175

176 0000003D 00000000 00000041 0000

177 00000043 00000000 00000047 0000

178 00000049 00000000 0000004D 0000

179 0000004F FFFFFFCO

00000053 COCO

18000000055COCOCOCO

00000059 FFFF

181 0000005B FFOOOOOO

0000005F COFO

182-00000061 1C0EC6E3

00000065 3319

183 00000067 C9C99913 0000006B 33E2

184 0000006D C60C38E0 00000071 0000

185 00000073 00000000 00000077 OOFF

186 00000079 FF 187

188 0000007A 00000000 0000007E 0000

189 00000080 00000000 00000084 0000

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

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

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

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

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

.DCB 80Н,зон,зон, ООН,ООН, ООН .DCB ООН, ООН, ООН, ООН,ООН,ООН

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

.ОСВ 80Н ;PAGE1

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

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

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

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

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

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

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

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

.DCB 0С6Н,0СН,38Н,0ЕОН,О0Н,ООН

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

.DCB OFFH ;PAGE2

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

sed1520.asm

sed1520.asm

sed1520.asm

sed1520.asm

sed1520,asm

sed1520.asm

sed1520. asm

sed1520.asm

sed1520.asm sed 1520. asm sed1520. asm

sedl520. asm

sed1520. asm

sed1520. asm

sed1520. asm

sed1520.asm

sedl520.asm

sed1520.asm

sed 1520. asm

sed 1520. asm

sed 1520. asm sed1520. asm sed1520. asm sed1520.asm sed1520.asm налево.

sed 1520. asm

.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Н,0ОН .ОСВ OFOH,OFOH,ОСОН,ОСОН,ОСОН,OFFH

190 00000086 00000000 ООООООЗА 0000

191 0000008С FFFFFF03 00000090 0303 192 00000092 03030303 00000096 FFFF

193 00000098 FFOOOOOO OOOOOOOC 0107

194 OOOOOOOE 1С181133 000000А2 2664

195 000000А4 66233198 ООООООАЗ 8СС7

196 ООООООАА Е3301С07 ООООООАЕ 0000 197 ООООООВО F0F0C0C0 0ОО0О0В4 COFF

198 000000В6 ЕЕ .ОСВ OFFH

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

200 000000В7 00000000 . ОСВ ООН, ООН, ООН,ООН,ООН,ООН ООООООВВ 0000

201 ООООООВО 00000000 000000С1 0000

202 ООООООСЗ 00000000 ООО0ООС7 0000

203 ooooooco 01010100 ooooooco 0000

204 OOOOOOCF 00000000 00000003 0101

205 000000D5 01000000 0O0O0OD9 0000

206 OOOOOODB 00000000 OOOOOOOE 0000

207 000000E1 00010101 000000E5 0000

208 000000E7 00000000 OOOOOOEB 0000

209 OOOOOOED 01010101 000000F1 0101

210 000000F3 01 211

212 0O0O0OF4 213 214

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

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

ОСВ 01Н,01Н,01Н,ООН,ООН,ООН

ОСВ 0ОН,0ОН,00Н,00Н,01Н,О1Н .DCB 01Н,ООН,ООН,ООН,ООН,ООН .DCB ООН,ООН,ООН,ООН,ООН,ООН .DCB 00Н,01Н,01Н,01Н,О0Н,00Н .DCB ООН,ООН,ООН,ООН,ООН, ООН .DCB 01Н,01Н,01Н,01Н,01Н,01Н

.ОСВ .01Н

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

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



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