El 9S08 ( 68HCS08 o S08 para abreviar) es una familia de microcontroladores (μC) de 8 bits producida originalmente por Motorola , más tarde por Freescale Semiconductor , [1] y actualmente por NXP , descendiente del microprocesador Motorola 6800. Es un microcontrolador CISC . Una variante ligeramente extendida del 68HC08 , comparte compatibilidad ascendente con los antiguos microcontroladores 68HC05 , y se encuentra en casi cualquier tipo de sistemas integrados. Los miembros más grandes ofrecen hasta 128 KiB de flash y 8 KiB de RAM a través de una unidad de gestión de memoria (MMU) simple que permite conmutar bancos de 16 KiB del espacio de direcciones y un par de registros de dirección/datos que permite obtener datos de cualquier dirección. El esquema de paginación utilizado permite un máximo teórico de 4 MB de flash. [2]
Las variantes equipadas con MMU ofrecen dos instrucciones de CPU adicionales, CALL y RTC, que se utilizan en lugar de JSR y RTS respectivamente cuando se trabaja con subrutinas ubicadas en memoria paginada, lo que permite llamadas directas de subrutinas página a página. En una sola operación atómica, CALL guarda y RTC restaura no solo la PC sino también un byte de dirección adicional, el byte PPAGE (página de programa). Debido a este byte adicional, y también para mantener la pila equilibrada, una subrutina que termina con RTC siempre debe llamarse con CALL, incluso si reside en la misma página de memoria.
Internamente, el conjunto de instrucciones 9S08 es compatible con el 6805, con la adición de modos de direccionamiento indexados en pila . (Las instrucciones que usan el registro SP tienen códigos de operación prefijados con el byte 0x9E). Tiene un solo acumulador de ocho bits, A, un registro de índice de dieciséis bits , HX (cuya mitad inferior, X, es utilizada de forma aislada por instrucciones compatibles con 6805), un registro de código de condición , un puntero de pila de 16 bits y un contador de programa . Para compatibilidad con el 6805 que no tiene un registro H, el byte más significativo del registro HX, H, se borra durante el reinicio, y H es el único registro que no se apila automáticamente al ingresar cualquier ISR ( Interrupt Service Routine ). [3] : 81 A diferencia del 6805, la pila se puede colocar en cualquier lugar de la memoria utilizando instrucciones apropiadas.
El método estándar de programación o depuración de la familia 9S08 es a través de una interfaz BDM estándar de seis pines (solo se utiliza un pin para la comunicación con el microcontrolador).
Hay una amplia variedad de periféricos disponibles para diferentes miembros y/o paquetes. SCI, SPI, A/D de 8/10/12 bits, (C)PWM, capturas de entrada y comparaciones de salida son comunes en la mayoría de los miembros, pero no hay bus externo disponible. Algunos miembros vienen con un controlador CAN integrado.
El S08 es parcialmente compatible (por ejemplo, no es compatible con MMU) con el compilador C gratuito SDCC y totalmente con CodeWarrior .