Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Включить / выключить отображение
RS | R/W | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DBO |
D |
Отображение информации включено при D=1, при D=0 отображение выключено.
Установить адрес по горизонтали Y
RS | R/W | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DBO |
AC5 | AC4 | AC3 | AC2 | AC1 | ACO |
Производит запись координаты в счетчик Y. После выполнения операции записи или чтения данных адрес автоматически инкрементируется.
Установить адрес байта по вертикали X
RS | R/W | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DBO |
AC2 | AC1 | ACO |
Производит запись в регистр адреса X. Содержимое регистра X сохраняется до выполнения следующей команды записи в этот регистр.
Установить данные в Z регистре
RS | R/W | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DBO |
AC5 | AC4 | AC3 | AC2 | AC1 | ACO |
Устанавливает данные в Z регистре адреса.
Чтение регистра статуса.
RS | R/W | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | Db1 | DBO |
BUSY | ON/OFF | RESET |
BUSY Когда флаг BUSY =s 1, контроллер заружен выполнением внутренних операций и не принимает внешних команд.
При BUSY = 0 контроллер готов к выполнению внешних команд.
ON/OFF При флаге ON/OFF = 1 отображение информации на дисплее включено. Когда ON/OFF = 0 дисплей погашен.
RESET При RESET = 1, система находится в режиме инициализации. При этом никакие команды кроме команды чтения статуса не выполняются. В случае RESET = 0 инициализация завершена и контроллер находится в рабочем состоянии.
Запись данных в экранную память RAM
RS | R/W | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DBO |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | DO |
Данные (D0-D7) заносятся в RAM по ранее установленным адресам X Y. После выполнения операции адрес Y автоматически инкрементируется.
Чтение данных из экранной памяти RAM
RS | R/W | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DBO |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | DO |
Данные (D0-D7) считываются из RAM по ранее установленным адресам X Y. После выполнения операции адрес Y автоматически инкрементируется.
Лекция 3. Микроконтроллерное ядро CIP-51 фирмы SILABS (CYGNAL)
Все микроконтроллеры фирмы SiLabs оснащены усовершенствованным микроконтроллерным ядром CIP-51, полностью совместимым по набору инструкций со стандартным MCS-51 ядром. Это позволяет использовать при разработке программного обеспечения стандартные х51-ориентированные ассемблеры и компиляторы языков высокого уровня (С-51, PL/M-51, FORTRAN-51, PASCAL-51 и т. п.), а также проблемно ориентированные библиотеки подпрограмм, созданные разработчиками за десятилетия существования х51 -совместимых микроконтроллеров. Микроконтроллерное ядро CIP-51 содержит полный набор периферийных узлов, стандартный для MCS-51. В зависимости от типа семейства ядро может содержать 3, 4 или 5 таймеров-счетчиков, один или два последовательных порта UART, как минимум 256 байт встроенной оперативной памяти, 128-байтный регистр специальных функций SFR (Special Function Register). Ядро также обеспечивает управление линиями портов ввода/вывода, которых микроконтроллеры различных семейств могут иметь от 1 до 8 портов (т. е. от 8 до 64 линий ввода/вывода). Несомненным достоинством этого ядра является встроенная аппаратура отладки. Ядро обеспечивает непосредственное управление аналоговыми и цифровыми подсистемами микроконтроллера через соответствующие регистры SFR. Таким образом, ядро CIP-51 с одной стороны обеспечивает полную совместимость со стандартным х51 -совместимым ядром, с другой имеет значительно более широкие аппаратные возможности за счет пополнения встроенной цифровой и аналоговой периферии. Структурная схема ядра CIP-51 показана на рис. 3.1.
Рисунок 3.1. Структурная схема ядра СIР-51.
Несомненно, важнейшим достоинством ядра CIP-51 является усовершенствованная конвейерная архитектура, которая позволяет значительно увеличить производительность по сравнению со стандартной х51 (8051) архитектурой. В микроконтроллерах со стандартной архитектурой 8051 все инструкции за исключением MUL и DIV выполнялись за 12 или 24 машинных цикла. При этом максимальная тактовая частота для большинства х51-совместимых микроконтроллеров составляла 12-24 МГц, и лишь некоторые х51-совместимые микроконтроллеры могли работать на более высоких частотах. Модернизированное ядро CIP-51 выполняет 70% инструкций за один или два машинных цикла, и вообще не имеет инструкций, выполняющихся более чем за восемь машинных циклов. Практически все микроконтроллеры фирмы Cygnal (27 типов, 72%) могут работать при частоте тактового генератора 25 МГц, шесть микроконтроллеров работают на частотах до 20 МГц (16 %) и четыре новых микроконтроллера седьмого семейства C8051F12x функционируют на частотах до 100 МГц. При этом соответственно развивается пиковая (предельная) производитель ность 25, 20 и 100 MIPS
Ядро CIP-51 имеет 109 инструкций. Количество инструкций и соответствующее количество машинных циклов, необходимых для их исполнения, приведено в табл. 3.1.
Таблица 3.1
Инструкция | 2 | ||||||||
Количество машинных циклов | 2/3 | 3/4 | 4/5 |
Еще одним важным достоинством микропроцессорного ядра CIP-51 является наличие встроенной аппаратной подсистемы отладки программного обеспечения. Связь с подсистемой микроконтроллера осуществляется через последовательный интерфейс JTAG, соответствующий стандарту IEEE 1149.1. При этом обеспечиваются как режим внутрисистемного программирования ISP (In System Programarable), так и собственно режим отладки. При программировании возможна запись как всего массива программы, так и модификация отдельных байтов. Естественно, что содержимое памяти программ может также читаться и сверяться с оригиналом. Содержимое любого байта программ может читаться или изменяться с использованием инструкций MOVC или MOVX, что также позволяет осуществлять энергонезависимое хранение данных и оперативно их модифицировать под управлением программы.
Встроенная схема обеспечивает отладку в режиме реального времени. При этом возможны установка точек останова и контроля переменных, запуск, останов и пошаговое выполнение программы (включая подпрограммы прерываний), контроль обращений программы к стеку, контроль и модификация содержимого регистров и оперативной памяти. Используемый метод отладки ненавязчив и неагрессивен и не требует никаких ресурсов микроконтроллера (RAM, стека, таймеров и т. п.).
Для ядра CIP-51 с подсистемой отладки фирмой SiLabs созданы программно-инструментальные средства отладки. Программное обеспечение выполнено в виде интегрированной среды развития IDE (Integrated Development Environment), включающей мощный редактор, макроассемблер, отладчик и программатор. Также имеется компилятор языка С.
Важно отметить, что вся цифровая и аналоговая периферия микроконтроллера функционирует корректно в процессе отладки. В процессе останова микроконтроллера или в пошаговом режиме вся периферия (кроме ADC) также работает в соответствующем режиме.
Фирма SiLabs предлагает эволюционные комплекты развития — киты (Developments Kits) для различных семейств и групп своих микроконтроллеров, включающие:
· программное обеспечение для персонального компьютера PC (Personal Computer);
· конвертор RS-232C персонального компьютера в JTAG (питается от платы развития и потребляет порядка 20 мА при напряжении питания 2,7—3,6 В) (в последних модификациях USB);
· собственно плату развития с установленным соответствующим микроконтроллером и большим макетным полем;
· соединительные кабели и внешний источник питания.
Программное обеспечение может функционировать в операционных системах Windows 95/98 /NT/2000/XP.
Набор инструкций микроконтроллеров фирмы SILABS (CYGNAL)
Набор инструкций ядра CIP-51 полностью совместим со стандартным набором инструкций MCS-51. Следовательно, все программное обеспечение, созданное для MCS-51, может быть использовано и для CIP-51. Все инструкции CIP-51 эквивалентны инструкциям MCS-51 и по мнемонике, и по кодам. Отличия имеются только во времени выполнения инструкций.
Во многих х51-совместимых микроконтроллерах существует различие между машинным циклом и циклом (периодом) тактового генератора (или просто тактом). То есть, в них один машинный цикл может быть равен от 2 до 12 тактов. В отличие от них время выполнения инструкций в CIP-51 измеряется только в тактах. Благодаря конвейерной архитектуре ядра CIP-51 многие инструкции выполняются непосредственно во время чтения самой инструкции, т.е. в том же такте. Инструкции условного ветвления выполняются быстрее, если условие не соблюдается. Полный набор инструкций CIP-51 с указанием мнемоники, количества байт и времени выполнения в тактах приведен в табл. 3.2.
Мнемоника | Описание | Кол-во байтов | Кол-во тактов | |||||||
АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ | ||||||||||
ADD A, Rn | Сложить содержимое регистра с А | |||||||||
ADD A, direct | Сложить прямоадресуемый байт с А | |||||||||
ADD A, @Ri | Сложить косвенноадресуемый байт с А | |||||||||
ADD A, #data | Сложить данные с А | |||||||||
ADDC A, Rn | Сложить содержимое регистра с А с переносом | |||||||||
ADDC A, direct | Сложить прямо адресуемый байт с А с переносом | |||||||||
ADDC A, @Ri | Сложить косвенноадресуемый байт с А с переносом | |||||||||
ADDC A, #data | Сложить данные с А с переносом | |||||||||
SUBBA, Rn | Вычесть содержимое регистра из А с заемом | |||||||||
SUBB A, direct | Вычесть прямоадресуемый байт из А с заемом | |||||||||
SUBBA, @Ri | Вычесть косвенноадресуемый байт из А с заемом | |||||||||
SUBB A, #data | Вычесть данные из А с заемом | |||||||||
inc a | Увеличить А(+1) | |||||||||
I[NC_Rn | Увеличить содержимое регистра | |||||||||
INC direct | Увеличить прямоадресуемый байт | |||||||||
INC @Ri | Увеличить косвенноадресуемый байт | 2* | ||||||||
DEC A | Уменьшить А (-1) | |||||||||
DEC Rn | Уменьшить содержимое регистра | |||||||||
DEC direct | Уменьшить прямоадресуемый байт | |||||||||
DEC @ Ri | Уменьшить косвенноадресуемый байт | |||||||||
INC DPTR | Увеличить указатель данных | |||||||||
MULAB | Умножить А на В | |||||||||
DIV AB | Разделить А на В | |||||||||
DA A | Десятичная коррекция аккумулятора | |||||||||
ЛОГИЧЕСКИЕ ОПЕРАЦИИ | ||||||||||
ANL A, Rn | Операция "И" регистра и А | |||||||||
ANL A, direct | Операция "И" прямоадресуемого байта иА | |||||||||
ANL A, @RI | Операция "И" косвенноадресуемого байта и А | |||||||||
ANL A, #data | Операция "И" данных и А | |||||||||
ANL direct, A | Операция "И" А и прямоадресуемого байта | |||||||||
ANL direct, #data | Операция "И" прямоадресуемого байта и данных | |||||||||
ORL A, Rn | Операция "ИЛИ" регистра и А | |||||||||
ORL A, direct | Операция "ИЛИ" прямоадресуемого байта и А | |||||||||
ORL A, @Ri | Операция "ИЛИ" косвенноадресуемого байта и А | |||||||||
ORL A, #data | Операция "ИЛИ" данных и А | |||||||||
ORL direct, A | Операция "ИЛИ" А и прямоадресуемого байта | |||||||||
ORL direct, #data | Операция "ИЛИ" прямоадресуемого байта и данных | |||||||||
XRL A, Rn | Операция "Исключительное ИЛИ" регистра и А | |||||||||
XRL A, direct | Операция "Исключительное ИЛИ" прямоадресуемого байта и А | |||||||||
XRL A, @Ri | Операция "Исключительное ИЛИ" косвенноадресуемого байта и А | |||||||||
XRL A, #data | Операция "Исключительное ИЛИ" данных и А | |||||||||
XRL direct, A | Операция "Исключительное ИЛИ" А и прямоадресуемого байта | |||||||||
XRL direct, #data | Операция "Исключительное ИЛИ" прямоадресуемого байта и данных | |||||||||
CLR A | Очистить А | |||||||||
CPL A | Дополнение А | |||||||||
RLA | Сдвиг А влево | |||||||||
RLC A | Сдвиг А влево с переносом | |||||||||
RRA | Сдвиг А вправо | |||||||||
RRC A | Сдвиг А вправо с переносом | |||||||||
SWAP A | Обмен тетрадами А | |||||||||
ОПЕРАЦИИ ПЕРЕДАЧИ ДАННЫХ | ||||||||||
MOV A, Rn | Перенести содержимое регистра в А | |||||||||
MOV A, direct | Перенести прямоадресуемый байт в А | |||||||||
MOV A, @Ri | Перенести косвенноадресуемый байт в А | |||||||||
MOV Ar #data | Перенести данные в А | |||||||||
MOV Rn, A | Перенести содержимое А в регистр | |||||||||
MOV Rn, direct | Перенести прямоадресуемый байт в регистр | |||||||||
MOV Rn, #data | Перенести данные в регистр | |||||||||
MOV direct, A | Перенести содержимое А в прямоадресуемый байт | |||||||||
MOV direct, Rn | Перенести содержимое регистра в прямоадресуемый байт | |||||||||
MOV direct, direct | Перенести прямо адресуемый байт в прямоадресуемый байт | |||||||||
MOV direct, @Ri | Перенести косвенно адресуемый байт в прямоадресуемый байт | |||||||||
MOV direct, #data | Перенести данные в прямоадресуемый байт | |||||||||
MOV @Ri, A | Перенести содержимое А в косвенноадресуемый байт | |||||||||
MOV @Ri, direct | Перенести прямо адресуемый байт в косвенноадресуемый байт | |||||||||
MOV @Ri, #data | Перенести данные в косвенноадресуемый байт | |||||||||
MOV DPTR, #datal6 | Перенести 16-битные данные в DPTR | |||||||||
MOVC A, ©A+DPTR | Перенести косвенный байт (DPTR) в А | |||||||||
MOVC A? @A+PC | Перенести косвенный байт (PC) в А | |||||||||
MOVX A, @Ri | Перенести внешние данные (8-битный адрес) в А | |||||||||
MOVX @Ri, A | Перенести А во внешние данные (8-битный адрес) | |||||||||
MOVX A, @DPTR | Перенести внешние данные (16-битный адрес) в А | |||||||||
MOVX @DPTR, A | Перенести А во внешние данные (16-битный адрес) | |||||||||
PUSH direct | Записать прямоадресуемый байт в стек | |||||||||
POP direct | Извлечь прямоадресуемый байт из стека | |||||||||
XCH A, Rn | Поменять содержимое регистра и А | |||||||||
XCH A, direct | Поменять содержимое прямоадресуемого байта и А | |||||||||
XCH A, @Ri | Поменять содержимое косвенноадресуемого байта и А | |||||||||
XCHD A, @Ri | Поменять младшую тетраду косвенноадресуемого байта и А | |||||||||
БИТОВЫЕ ОПЕРАЦИИ | ||||||||||
CLR C | Сбросить флаг переноса (=0) | |||||||||
CLR bit | Сбросить прямоадресуемый бит | |||||||||
SETB C | Установить флаг переноса (=1) | |||||||||
SETB bit | Установить прямоадресуемый бит | |||||||||
CPL C | Инвертировать перенос | |||||||||
CPL bit | Инвертировать прямоадресуемый бит | |||||||||
ANL C, bit | Операция "И" прямоадресуемого бита и переноса | |||||||||
ANL C, /bit | Операция "И" инверсного прямоадресуемого бита и переноса | |||||||||
ORL C, bit | Операция "ИЛИ" прямоадресуемого бита и переноса | |||||||||
ORL C, /bit | Операция "ИЛИ" инверсного прямоадресуемого бита и переноса | |||||||||
MOV C, bit | Перенести значение прямоадресуемого бита в перенос | |||||||||
MOV bit, С | Перенести значение переноса в прямоадресуемый бит | |||||||||
ОПЕРАЦИИ ВЕТВЛЕНИЯ | ||||||||||
JC rel | Переход, если перенос установлен | 2/3 | ||||||||
JNC rel | Переход, если перенос не установлен | 2/3 | ||||||||
JB bit, rel | Переход, если прямоадресуемый бит установлен | 3/4 | ||||||||
JNB bit, rel | Переход, если прямоадресуемый бит не установлен | 3/4 | ||||||||
JBC bit, rel | Переход, если прямоадресуемый бит установлен и очистка бита | 3/4 | ||||||||
ACALL addr 11 | Абсолютный короткий вызов подпрограммы | |||||||||
ACALL addr16 | Абсолютный длинный вызов подпрограммы | |||||||||
RET | Возврат из подпрограммы | |||||||||
RETI | Возврат из прерывания | |||||||||
AJMP addr11 | Абсолютный средний переход | |||||||||
LJMPaddr16 | Абсолютный длинный переход | |||||||||
SJMP rel | Короткий переход (относительный адрес) | |||||||||
JMP @A+DPTR | Косвенный переход (с DPTR) | |||||||||
JZrel | Переход, если А == 0 | 2/3 | ||||||||
JNZ rel | Переход, если А!= 0 | 2/3 | ||||||||
CJNE A, direct, rel | Переход, если А!= прямоадресуемый байт | 3/4 | ||||||||
CJNE A, #data, rel | Переход, если А!= данным | 3/4 | ||||||||
CJNE Rn, #data, rel | Переход, если содержимое регистра!= данным | 3/4 | ||||||||
CJNE @Ri, #data, rel | Переход, если косвенные данные!= данным | 4/5 | ||||||||
DJNZ Rn, rel | Уменьшить значение регистра и перейти, если!= 0 | 2/3 | ||||||||
DJNZ direct, rel | Уменьшить значение прямоадресуемого байта и перейти, если!= 0 | 3/4 | ||||||||
NOP | Нет операции | |||||||||
В ядре CIP-51 инструкция MOVX имеет возможность доступа к Flash-памяти программ в отличие от других х51 -совместимых микроконтроллеров, в которых она используется для доступа к внешней памяти данных. Это позволяет модифицировать Flash-память программ в процессе выполнения программы, использовать часть Flash-памяти для энергонезависимого хранения данных и осуществлять отладку программного обеспечения. Управление доступом осуществляется путем модификации соответствующего бита в регистре PSCTL.
В приведенной таблице использованы следующие обозначения:
Rn — регистры R0—R7 выбранного банка регистров;
@R1 — косвенно адресуемые ячейки памяти через регистры R0-R1;
rel — 8-битное смещение к первому байту следующей инструкции (используется в SJMP и всех остальных условных переходах);
direct — 8-битный прямо адресуемый адрес, используется для прямой адресации памяти данных (0x00-0x7F) или SFR регистров (0x80-0xFF);
#data — 8-битная константа;
#datal6 — 16-битная константа;
bit — прямоадресуемый бит в памяти данных или SFR;
addrll — 11-битный адрес, используемый инструкциями ACALL и AJMP. Адрес должен быть в пределах 2К страницы памяти программ;
addrl6 — 16-битный адрес, используемый инструкциями LCALL и LJMP. Адрес может быть расположен где угодно, в пределах 64К адресного пространства программ.
Ядро имеет один неиспользуемый код 0хА5, который воспринимается так же, как и инструкция NOP. Все мнемонические обозначения команд защищены © Intel Corporation 1980.
Дата публикования: 2015-02-22; Прочитано: 245 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!