El 9S08 ( 68HCS08 o S08 para abreviar) es una familia de microcontroladores de 8 bits (µC) originalmente producida por Motorola , luego por Freescale Semiconductor , [1] y actualmente por NXP , descendiente del microprocesador Motorola 6800 . Es un microcontrolador CISC . Una variante ligeramente ampliada 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 RAMa través de una MMU simple que permite cambiar de banco 16 KiB del espacio de direcciones y un par de registro 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 trata de subrutinas colocadas en la memoria paginada, lo que permite llamadas directas de subrutinas de 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 en RTC siempre debe llamarse con CALL, incluso si reside en la misma página de memoria.
Internamente, el conjunto de instrucciones 9S08 es compatible hacia arriba con el 6805, con la adición de modos de direccionamiento indexado de pila . (Instrucciones utilizando el SP registro han opcodes prefijado 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, se usa aisladamente por instrucciones compatibles con 6805), un registro de código de condición , un puntero de pila de 16 bits y un contador de programas . 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 ( Rutina de servicio de interrupción ). [3] : 81 A diferencia del 6805, la pila se puede colocar en cualquier lugar de la memoria utilizando las instrucciones adecuadas.
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 6 pines (solo se usa un pin para la comunicación con el microcontrolador).
Hay disponible una amplia variedad de periféricos para diferentes miembros y / o paquetes. SCI, SPI, A / D de 8/10/12 bits, (C) PWM, capturas de entrada y comparación de salida son comunes con la mayoría de los miembros, pero no hay un bus externo disponible. Algunos miembros vienen con un controlador CAN incorporado .
Soporte del compilador
El S08 es parcialmente compatible (por ejemplo, no hay compatibilidad con MMU) por el compilador de C gratuito SDCC y completamente por CodeWarrior .
Referencias
- ^ "Semiconductores NXP | Automotriz, seguridad, IoT" . www.nxp.com . Consultado el 18 de febrero de 2021 .
- ^ Viramontes, Eduardo; Li, Rick (mayo de 2008). Comprensión de la paginación de memoria en dispositivos 9S08 (PDF) (Nota de aplicación). Rev. 0. Soporte técnico de Freescale. AN3730.
- ^ Manual de referencia de la familia HCS08 (PDF) . Rev. 2. Freescale Semiconductor. Mayo de 2007. HCS08RMv1 / D.
enlaces externos
- Familias de procesadores HCS08 / 9S08
- Ensamblador cruzado de macros gratuito basado en Win / Linux / DOS (ASM8)
- Ejemplo de código en lenguaje ensamblador escrito para ASM8