Por qué los microcontroladores pic18fxxx son mejores para el lenguaje C

La familia Pic18fxxx tiene muchas ventajas y mejoras con respecto a la familia de microcontroladores pic16fxxx. ¿Cuál es la característica particular que los hace mejores para la programación en C que los dispositivos pic16fxxx?

¿Qué te hace pensar que son ideales para C? Yo diría que cualquier dispositivo PIC24 es mucho más 'ideal' que cualquier dispositivo PIC16/18 desde un punto de vista arquitectónico (más registros, más RAM...), y cualquier PIC32 es mucho más 'ideal' que un PIC24 por la naturaleza de su Arquitectura MIPS...
Lo siento, lo escribo mal. Ideal en comparación con los dispositivos pic14f, no con otros.
FOTO14F? Esa familia no existe, ¿verdad?
Me refiero a pic16fxxx. ¡Error sobre error!
En realidad, hubo una vez un PIC 14, pero ahora, junto con el PIC 17, "nunca existió".

Respuestas (3)

No sé acerca de "ideal para". Ese es un término de marketing que no tiene lugar en una discusión aprendida.

Sin embargo, una gran ventaja de la arquitectura PIC 18 frente a la arquitectura PIC 16 original, especialmente en relación con los compiladores, es que es posible implementar una pila de datos de software en un PIC 18 con instrucciones únicas para PUSH y POP. El PIC 18 también tiene una pila de llamadas más profunda, 32 frente a 8, que puede ayudar cuando un compilador llama implícitamente a las subrutinas. El modo de direccionamiento indirecto PLUSW es ​​probablemente algo que un compilador usaría con más frecuencia que un programador humano.

El PIC 18 también tiene otras ventajas que son útiles tanto para compiladores como para programadores humanos, como 3 punteros de hardware en lugar de uno, modos de direccionamiento indirecto automático inc/dec, un multiplicador de hardware de 8x8 en 16, suma con acarreo y resta con préstamo, y algunas otras sutilezas.

Tienes razón, cambié a 'mejor' que 'ideal'.

Algunos compiladores de C almacenan variables locales en una pila de hardware o software. Cuando el código ingresa a una subrutina, el tamaño de sus variables locales se suma o resta de un registro que se usa como puntero de pila/marco. Cuando el "conjunto de instrucciones mejorado" está habilitado, las instrucciones PIC18Fxx pueden acceder a los primeros ~96 bytes que siguen directamente a la dirección del puntero de trama. Esto es CASIuna muy buena característica. Habría sido una característica realmente buena si, por ejemplo, el procesador hubiera hecho 15 bytes del espacio de direcciones no bancarizado asignado a direcciones 1-15 bytes por encima de FSR2, y 7 bytes asignados a direcciones 1-7 bytes por encima de cada uno de los otros registros FSR, mientras deja la mayor parte del espacio no bancarizado como RAM no bancarizada. Desafortunadamente, a pesar del hecho de que la mayoría de las funciones ni siquiera tendrán ocho bytes de almacenamiento local (mucho menos 16), renunciar a 96 direcciones para manejar las compensaciones 0-95 por encima de FSR2 es un desperdicio absurdo.

Tenga en cuenta que algunos otros sistemas compiladores de C asignan direcciones fijas para variables locales; dichos sistemas determinan en el momento del enlace qué funciones no pueden estar "en vivo" simultáneamente y pueden asignar las variables para tales funciones en las mismas direcciones. Siempre que el código no se llame de forma reentrante, este enfoque puede ser tan eficiente (a veces más) que usar una pila; sin embargo, no funciona con rutinas de reentrada.

Puede preguntarle bien a Google sobre la gran cantidad de comparación entre PIC16F y PIC18F.

Llegando a su pregunta ¿Por qué los microcontroladores pic18fxxx son mejores para el lenguaje C?

PIC18F o cualquier otro microcontrolador que se pueda suponer mejor para el lenguaje C son aquellos microcontroladores que admiten tales instrucciones de ensamblaje de forma predeterminada que pueden ayudar a los compiladores de C a crear archivos hexadecimales eficientes y optimizados.

Un ejemplo importante de este tipo de instrucciones pueden ser las instrucciones relacionadas con MATEMÁTICAS.

El compilador XC8 admite un conjunto de instrucciones extendido que ayuda especialmente a los compiladores de C a generar archivos binarios optimizados.

Esta es una no respuesta. El OP ya sabe que un PIC 18 admite mejor C, pero preguntó cómo lo hace específicamente.
Ya mencioné que al admitir un conjunto de instrucciones completo de potencia especial que pic16f no tiene
Cierto, pero eso es obvio y ya se sabía. El OP ya sabe que el PIC 18 tiene "muchas ventajas y mejoras con respecto al pic16fxxx" . Sin explicar específicamente qué, como instrucciones particulares y similares, cree que ayuda a los compiladores, esta no es una respuesta en absoluto.