9S08 ( 68HCS08 или S08 для краткости) — это 8-битное семейство микроконтроллеров (μC), первоначально выпускавшееся Motorola , позже Freescale Semiconductor , [1] и в настоящее время NXP , произошедшее от микропроцессора Motorola 6800. Это микроконтроллер CISC . Немного расширенный вариант 68HC08 , он имеет обратную совместимость со стареющими микроконтроллерами 68HC05 и встречается практически в любом типе встраиваемых систем. Более крупные члены предлагают до 128 КБ флэш-памяти и 8 КБ ОЗУ через простой блок управления памятью (MMU), который позволяет переключать банки 16 КБ адресного пространства и пару регистров адреса/данных, которая позволяет извлекать данные с любого адреса. Используемая схема страничного обмена допускает теоретический максимум 4 МБ флэш-памяти. [2]
Варианты с MMU предлагают две дополнительные инструкции ЦП, CALL и RTC, которые используются вместо JSR и RTS соответственно при работе с подпрограммами, размещенными в страничной памяти, что позволяет выполнять прямые вызовы подпрограмм со страницы на страницу. В одной атомарной операции CALL сохраняет, а RTC восстанавливает не только PC, но и один дополнительный байт адреса, байт PPAGE (программная страница). Из-за этого дополнительного байта, а также для поддержания сбалансированности стека, подпрограмма, заканчивающаяся на RTC, всегда должна вызываться с помощью CALL, даже если она находится на той же странице памяти.
Внутренне набор инструкций 9S08 совместим снизу вверх с 6805, с добавлением режимов адресации со стековым индексом . (Инструкции, использующие регистр SP, имеют коды операций с префиксом байта 0x9E). Он имеет один восьмибитный аккумулятор , A, один шестнадцатибитный индексный регистр , HX (чья нижняя половина, X, используется изолированно 6805-совместимыми инструкциями), регистр кода условия , 16-битный указатель стека и счетчик программ . Для совместимости с 6805, у которого нет регистра H, старший байт регистра HX, H, очищается во время сброса, и H является единственным регистром, который не стекируется автоматически при входе в любую ISR ( Процедура обслуживания прерываний ). [3] : 81 В отличие от 6805, стек может быть помещен в любое место памяти с помощью соответствующих инструкций.
Стандартный метод программирования или отладки семейства 9S08 осуществляется через стандартный шестиконтактный интерфейс BDM (для связи с микроконтроллером используется только один контакт).
Для различных участников и/или пакетов доступно большое разнообразие периферийных устройств. SCI, SPI, 8/10/12-битный АЦП, (C)PWM, Input Captures и Output Compares являются общими для большинства участников, но внешняя шина недоступна. Некоторые участники поставляются со встроенным контроллером CAN .
S08 частично поддерживается (например, без поддержки MMU) бесплатным компилятором C SDCC и полностью CodeWarrior .