КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Расширение языка C для микроконтроллера серии МК51
Транслятор Cx51 имеет ряд отличий от стандарта ANSI. Большая часть этих отличий связано с непосредственной поддержкой архитектурных особенностей МК51. Расширения Cx51 поддерживают: - типы и области памяти МК51; - модели памяти; - спецификации типов памяти; - спецификации типов переменных; - битовые данные и переменные битового типа; - регистры специальных функций; - указатели; - атрибуты функций. Ключевые слова
Для учета особенностей МК51 в трансляторе Cx51 добавлены следующие ключевые слова:
Эти добавления можно отменить, используя директиву NOEXTEND. Память микроконтроллеров серии МК51
В отличие от ЭВМ, выполненных на микропроцессорах общего применения, в которых константы, переменные и данные расположены в одной и той же физической области памяти (ОЗУ), микроконтроллеры серии МК51 имеют несколько типов физически разной памяти. Память программ (кодов) предназначена только для чтения и недоступна для записи (ПЗУ). В зависимости от конфигурации аппаратных средств микропроцессорной системы эта память может располагаться на кристалле процессора (резидентно), или быть внешней. МК51 может выполнять только программу, расположенную в ПЗУ. В ПЗУ могут располагаться также данные, представляющие собой константы. Доступ к памяти кодов в Cx51 осуществляется спецификатором типа code. Внутренняя память данных расположена на кристалле вместе с процессором (резидентно). В зависимости от разновидности контроллера серии МК51 внутренняя память может достигать объема до 256 байт. Первые 128 байт внутренней памяти могут иметь как прямую, так и косвенную адресацию. Верхние 128 байт с адресами 0x80 – 0xFF адресуются только косвенно. Начиная с адреса 0x20, расположены 16 байт с битовой адресацией. Таким образом, внутренняя память распадается на три типа, которые в трансляторе Cx51 определяются спецификаторами данных data, idata, bdata. Память типа dataопределяет данные в области первых 128 байтов. Доступ к расположенным здесь переменным производится с применением прямой адресации. Память типа idataопределяет данные во всех 256 ячейках внутренней памяти. Но при этом доступ к переменным реализуется с использованием косвенной адресации. Память типа bdataопределяет 16 байт данных, расположенных в области адресов 20h до 2Fh. Данный спецификатор позволяет иметь доступ к данным на уровне отдельных битов. Внешняя память данных доступна как по чтению, так и по записи, но физически она размещена вне процессора. Доступ к внешней памяти происходит медленнее, чем к внутренней. Это обусловлено тем, что при обращении к внешней памяти используется косвенная адресация через регистр-указатель данных DPTR,в который предварительно загружается адрес ячейки внешней памяти. Внешняя память может иметь объем до 64 Кбайт. Однако такой объем памяти применяется не всегда. В адресном пространстве внешней памяти могут располагаться регистры внешних устройств. Такой подход называют вводом-выводом, отображенным на память. В трансляторе Cx51 предусмотрено два типа данных внешней памяти: xdataиpdata. Память типа xdata определяет переменные в 64-Кбайтном адресном пространстве внешней памяти. Память типа pdata определяет 256 байтов внешней памяти. Память регистров специальных функций (SFR) в соответствии с архитектурой МК51 занимает 128 прямо адресуемых байтов в адресном пространстве от 80h до FFh. Регистры специальных функций используются для управления таймерами, каналом последовательной связи и другими периферийными устройствами. Они имеют битовый, байтовый доступ или размер двухбайтовых слов.
|