La familia Pic18fxxx tiene muchas ventajas y mejoras de 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?
La familia Pic18fxxx tiene muchas ventajas y mejoras de 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?
No sé sobre "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 en comparación con la arquitectura original PIC 16, especialmente relacionada 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 contra 8, que puede ayudar cuando un compilador llama implícitamente a subrutinas. El modo de direccionamiento indirecto PLUSW es probablemente algo que un compilador haría un uso más frecuente 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 auto inc / dec, un 8x8 en 16 multiplicadores de hardware, sumar con carry y restar con pedir prestado, y algunas otras sutilezas.
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 agrega o se resta de un registro que se usa como puntero de pila / marco. Cuando el "conjunto de instrucciones mejorado" está habilitado, las instrucciones de PIC18Fxx pueden acceder a los primeros ~ 96 bytes que siguen directamente a la dirección del puntero del cuadro. Esta es CASI una característica realmente buena. Habría sido una característica realmente buena si, por ejemplo, el procesador hizo 15 bytes del mapa de espacio de direcciones no bancarizado a las direcciones 1-15 bytes por encima de FSR2, y el mapa de 7 bytes a las direcciones 1-7 bytes por encima de cada uno de los otros registros FSR, dejando 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 tienen ocho bytes de almacenamiento local (mucho menos 16), el abandono de 96 direcciones para manejar las compensaciones 0-95 por encima de FSR2 es un desperdicio absurdo.
Tenga en cuenta que algunos otros sistemas de compilación 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. Si el código no se llama en modo de reingreso, este enfoque puede ser tan eficiente (a veces más) que usar una pila; Sin embargo, no funciona con rutinas de reingreso.
Puedes preguntarle a Google acerca del lote de comparación entre PIC16F y PIC18F.
Viene a tu pregunta ¿Por qué los microcontroladores pic18fxxx son mejores para el lenguaje C?
PIC18F o cualquier otro microcontrolador que pueda asumirse mejor para el lenguaje C son aquellos microcontroladores que admiten estas instrucciones de ensamblaje de manera predeterminada que pueden ayudar a los compiladores de C a crear archivos hexadecimales eficientes y optimizados.
Un ejemplo importante de este tipo de instrucciones puede ser instrucciones relacionadas con MATEMÁTICAS
El compilador XC8 admite el conjunto de instrucciones extendidas, lo que ayuda especialmente a los compiladores de C a generar un archivo binario optimizado.
Lea otras preguntas en las etiquetas microcontroller pic c microchip