Software compilador MICROCHIP MPLAB XC8 C 

Software compilador MICROCHIP MPLAB XC8 C

ESTE DOCUMENTO CONTIENE INFORMACIÓN IMPORTANTE RELACIONADA CON EL COMPILADOR MPLAB XC8 C PARA DISPOSITIVOS MICROCHIP AVR.
POR FAVOR LÉALO ANTES DE EJECUTAR ESTE SOFTWARE. CONSULTE LAS NOTAS DE VERSIÓN DEL COMPILADOR MPLAB XC8 C PARA EL DOCUMENTO PIC SI ESTÁ UTILIZANDO EL COMPILADOR PARA DISPOSITIVOS PIC DE 8 BITS.

Contenido esconder

Encimaview

Introducción

Esta versión del compilador Microchip MPLAB® XC8 C contiene varias características nuevas, correcciones de errores y compatibilidad con nuevos dispositivos.

Fecha de construcción

La fecha de compilación oficial de esta versión del compilador es el 3 de julio de 2022.

Versión previa

La versión anterior del compilador MPLAB XC8 C era 2.39, un compilador de seguridad funcional, creado el 27 de enero de 2022. El compilador estándar anterior era la versión 2.36, creado el 27 de enero de 2022.

Manual de seguridad funcional

Un manual de seguridad funcional para los compiladores MPLAB XC está disponible en el paquete de documentación cuando compra una licencia de seguridad funcional.

Licencias y versiones de componentes

Las herramientas MPLAB® XC8 C Compiler for AVR MCU están escritas y distribuidas bajo la Licencia pública general GNU (GPL), lo que significa que su código fuente se distribuye gratuitamente y está disponible para el público. El código fuente de las herramientas bajo la GPL de GNU se puede descargar por separado del sitio web de Microchip. websitio. Puede leer la GPL de GNU en el file named encuentra el subdirectorio de su directorio de instalación. Una discusión general de los principios que subyacen a la GPL se puede encontrar aquí. Código de soporte proporcionado para el encabezado files, secuencias de comandos de vinculación y bibliotecas de tiempo de ejecución son código propietario y no están cubiertos por la GPL.

Este compilador es una implementación de GCC versión 5.4.0, binutils versión 2.26 y utiliza avr-libc versión 2.0.0.

Requisitos del sistema

El compilador MPLAB XC8 C y el software de licencia que utiliza están disponibles para una variedad de sistemas operativos, incluidas las versiones de 64 bits de los siguientes: Ediciones profesionales de Microsoft Windows 10; Ubuntu 18.04; y macOS 10.15.5. Los binarios para Windows se han firmado con código. Los archivos binarios para mac OS han sido firmados con código y notariados.

Si está ejecutando un servidor de licencias de red, solo las computadoras con sistemas operativos compatibles con los compiladores pueden usarse para alojar el servidor de licencias. A partir de la versión 2.0 de xclm, el servidor de licencias de red se puede instalar en una plataforma Microsoft Windows Server, pero no es necesario que el servidor de licencias se ejecute en una versión de servidor del sistema operativo.

dispositivos compatibles

Este compilador es compatible con todos los dispositivos MCU AVR de 8 bits conocidos en el momento del lanzamiento. Consulte (en el directorio de documentos del compilador) para obtener una lista de todos los dispositivos compatibles. Estos fileTambién se enumeran los ajustes de bits de configuración para cada dispositivo.

Ediciones y actualizaciones de licencia

El compilador MPLAB XC8 se puede activar como producto con licencia (PRO) o sin licencia (Gratis). Debe comprar una clave de activación para obtener la licencia de su compilador. Una licencia permite un mayor nivel de optimización en comparación con el producto gratuito. Un compilador sin licencia puede funcionar indefinidamente sin licencia.

Se debe activar un compilador de seguridad funcional MPLAB XC8 con una licencia de seguridad funcional adquirida a Microchip. El compilador no funcionará sin esta licencia. Una vez activado, puede seleccionar cualquier nivel de optimización y utilizar todas las funciones del compilador. Esta versión del compilador de seguridad funcional MPLAB XC es compatible con la licencia de servidor de red.
Consulte el documento Instalación y licencia de compiladores MPLAB XC C (DS50002059) para obtener información sobre los tipos de licencia y la instalación del compilador con una licencia.

Instalación y activación

Consulte también las secciones Problemas y limitaciones de la migración para obtener información importante sobre el administrador de licencias más reciente incluido con este compilador.
Si usa MPLAB IDE, asegúrese de instalar la última versión 5.0 o posterior de MPLAB X IDE antes de instalar esta herramienta. Salga del IDE antes de instalar el compilador. Ejecute la aplicación de instalación del compilador .exe (Windows), .run (Linux) o app (macOS), por ejemplo, XC8-1.00.11403-windows.exe y siga las instrucciones en pantalla.
Se recomienda el directorio de instalación predeterminado. Si está usando Linux, debe instalar el compilador usando una terminal y desde una cuenta raíz. Instale usando una cuenta de macOS con privilegios de administrador.

La activación ahora se lleva a cabo por separado de la instalación. Consulte el documento Administrador de licencias para compiladores MPLAB® XC C (DS52059) para obtener más información.

Si elige ejecutar el compilador bajo la licencia de evaluación, ahora recibirá una advertencia durante la compilación cuando esté dentro de los 14 días posteriores al final de su período de evaluación. Se emite la misma advertencia si se encuentra dentro de los 14 días posteriores al final de su suscripción HPA.

El servidor de licencias de red XC es un instalador independiente y no está incluido en el instalador del compilador de usuario único.

XC License Manager ahora admite la itinerancia de licencias de red flotante. Dirigida a usuarios móviles, esta característica permite que una licencia flotante se desconecte de la red por un período corto de tiempo. Con esta función, puede desconectarse de la red y seguir usando su compilador MPLAB XC. Consulte la carpeta doc de la instalación de XCLM para obtener más información sobre esta función. MPLAB X IDE incluye una ventana de Licencias (Herramientas > Licencias) para administrar visualmente el roaming.

Resolución de problemas de instalación

Si tiene dificultades para instalar el compilador en cualquiera de los sistemas operativos de Windows, pruebe las siguientes sugerencias.

  • Ejecute la instalación como administrador.
  • Establezca los permisos de la aplicación de instalación en 'Control total'. (Haga clic derecho en el file, seleccione Propiedades, ficha Seguridad, seleccione usuario, edite).
  • Establezca los permisos de la carpeta temporal en “¡Control total!

Para determinar la ubicación de la carpeta temporal, escriba %temp% en el comando Ejecutar (tecla del logotipo de Windows + R). Esto abrirá un file explorador de diálogo que muestra ese directorio y le permitirá determinar la ruta de esa carpeta.

Documentación del compilador

Las guías del usuario del compilador se pueden abrir desde la página HTML que se abre en su navegador al hacer clic en el botón azul de ayuda en el panel de MPLAB X IDE, como se indica en la captura de pantalla.

Documentación del compilador
Si está construyendo para objetivos AVR de 8 bits, la Guía del usuario del compilador MPLAB® XC8 C para AVR® MCU contiene información sobre las opciones y características del compilador que son aplicables a esta arquitectura.

Atención al cliente

Microchip agradece los informes de errores, las sugerencias o los comentarios sobre esta versión del compilador. Dirija cualquier informe de error o solicitud de funciones a través del Sistema de soporte.

Actualizaciones de documentación

Para obtener versiones en línea y actualizadas de la documentación de MPLAB XC8, visite la Documentación técnica en línea de Microchip. websitio.

Documentación de AVR nueva o actualizada en esta versión:

  • Aviso de derechos de autor de MUSL
  • Instalación y licencia de compiladores MPLAB XC C (revisión M)
  • Guía del usuario de MPLAB XC8 para ingenieros integrados: MCU AVR (revisión A)
  • Guía del usuario del compilador MPLAB XC8 C para AVR MCU (revisión F)
  • Guía de referencia de la biblioteca estándar unificada de Microchip (revisión B)

La Guía de referencia de la biblioteca estándar unificada de Microchip describe el comportamiento y la interfaz de las funciones definidas por la biblioteca estándar unificada de Microchip, así como el uso previsto de los tipos de biblioteca y las macros. Parte de esta información se encontraba anteriormente en la Guía del usuario del compilador MPLAB® XC8 C para AVR® MCU. La información de la biblioteca específica del dispositivo aún se incluye en esta guía del compilador.

Si recién está comenzando con dispositivos de 8 bits y el compilador MPLAB XC8 C, la Guía del usuario de MPLAB® XC8 para ingenieros integrados: MCU AVR® (DS50003108) tiene información sobre cómo configurar proyectos en MPLAB X IDE y escribir código. para su primer proyecto MPLAB XC8 C. Esta guía ahora se distribuye con el compilador.

La Guía del usuario de Hamate se ha incluido en el directorio de documentos de esta versión. Esta guía está destinada a quienes ejecutan Hamate como una aplicación independiente.

Qué hay de nuevo

Las siguientes son nuevas funciones de destino de AVR que ahora admite el compilador. El número de versión en los subtítulos indica la primera versión del compilador compatible con las funciones siguientes.

Versión 2.40

Compatibilidad con nuevos dispositivos El soporte ahora está disponible para las siguientes piezas de AVR: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32 y AVR64EA48.
Abstracción procesal mejorada La herramienta de optimización de abstracción de procedimientos (PA) se ha mejorado para que se pueda delinear el código que contiene una instrucción de llamada de función (recuperación de llamada). Esto solo ocurrirá si la pila no se usa para pasar argumentos ni obtener valor de retorno de la función. La pila se usa cuando se llama a una función con una lista de argumentos variables o cuando se llama a una función que toma más argumentos que registros designados para este propósito. Esta característica se puede deshabilitar usando la opción monk-pa-outline-calls, o la abstracción de procedimiento se puede deshabilitar por completo para un objeto file o funciona usando el -monk-pa-on-file y -mo.-pa-on-function respectivamente, o usando el atributo nipa (especificador nipa) de forma selectiva con funciones

Macro de cobertura de código El compilador ahora define la macro __CODECOV si se especifica una opción mcodecov válida.

Opción de reserva de memoria El controlador xc8-cc ahora aceptará la opción -mreserve=space@start: end al construir para objetivos AVR. Esta opción reserva el rango de memoria especificado en el espacio de memoria de datos o de programa, evitando que el enlazador complete código u objetos en esta área.

E/S inteligente más inteligente Se han realizado varias mejoras en las funciones Smart IO, incluidos ajustes generales en el código principal de printf, tratamiento del especificador de conversión %n como una variante independiente, vinculación en rutinas vararg pop a pedido, uso de tipos de datos más cortos donde sea posible para manejar argumentos de función IO , y factorización de código común en ancho de campo y manejo de precisión. Esto puede resultar en ahorros significativos de código y datos, así como aumentar la velocidad de ejecución de IO.

Versión 2.39 (Versión de seguridad funcional)

Licencia de servidor de red Esta versión del compilador de seguridad funcional MPLAB XC8 es compatible con la licencia de servidor de red.

Versión 2.36

Ninguno.

Versión 2.35

Compatibilidad con nuevos dispositivos El soporte está disponible para las siguientes piezas de AVR: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 y AVR64DD32.

Cambio de contexto mejorado La nueva opción -mcall-isr-prologues cambia la forma en que las funciones de interrupción guardan registros al entrar y cómo se restauran esos registros cuando finaliza la rutina de interrupción. Funciona de manera similar a la opción -mcall-prologues, pero solo afecta las funciones de interrupción (ISR).

Cambio de contexto aún más mejorado La nueva opción -mgas-isr-prologues controla el código itch de contextos generado para pequeñas rutinas de servicio de interrupción. Cuando está habilitada, esta característica hará que el ensamblador escanee el ISR para el uso de registros y solo guarde estos registros usados ​​si es necesario.

Mapeo flash configurable Algunos dispositivos de la familia AVR DA y AVR DB tienen un SFR (p. ej., FLMAP) que especifica qué sección de 32k de la memoria del programa se asignará a la memoria de datos. La nueva opción mconst-data-in-config-mapped-proem se puede usar para que el enlazador coloque todos los datos calificados en contra en una sección de 32k e inicialice automáticamente el registro SFR relevante para garantizar que estos datos se asignen al espacio de la memoria de datos. , donde se accederá de manera más efectiva.

Bibliotecas estándar unificadas de Microchip Todos los compiladores MPLAB XC compartirán una biblioteca estándar unificada de Microchip, que ahora está disponible con esta versión de MPLAB XC8. La Guía del usuario del compilador MPLAB® XC8 C o AVR® MCU ya no incluye la documentación para estas funciones estándar. Esta información ahora se puede encontrar en la Guía de referencia de la biblioteca estándar unificada de Microchip. Tenga en cuenta que algunas funciones previamente definidas por avr-libc ya no están disponibles. (Ver Biblioteca):'. funcionalidad…)

E/S inteligente Como parte de las nuevas bibliotecas unificadas, las funciones de E/S en las familias de impresión y escaneo ahora se generan de forma personalizada en cada compilación, en función de cómo se usan estas funciones en el programa. Esto puede reducir sustancialmente los recursos utilizados por un programa.
Opción de asistencia Smart IO Al analizar llamadas a funciones de E/S inteligente (como printf () o scanf ()), el compilador no siempre puede determinar a partir de la cadena de formato o inferir de los argumentos los especificadores de conversión requeridos por la llamada. Anteriormente, el compilador nunca hacía suposiciones y se aseguraba de que las funciones de E/S totalmente funcionales estuvieran vinculadas a la imagen final del programa. Se ha agregado una nueva opción: msmart-io-format=fmt para que el compilador pueda ser informado por el usuario de los especificadores de conversión utilizados por las funciones inteligentes de E/S cuyo uso es ambiguo, evitando que se vinculen rutinas de E/S excesivamente largas. (Consulte la opción smart-io-format para obtener más detalles).

Colocación de secciones personalizadas Anteriormente, la opción -Wl, –section-start solo colocaba la sección especificada en la dirección solicitada cuando el script del enlazador definía una sección de salida con el mismo nombre. Cuando ese no era el caso, la sección se colocaba en una dirección elegida por el enlazador y la opción básicamente se ignoraba. Ahora la opción se respetará para todas las secciones personalizadas, incluso si la secuencia de comandos del enlazador no define la sección. Tenga en cuenta, sin embargo, que para las secciones estándar, como . texto, . bss o . datos, el asignador de mejor ajuste seguirá teniendo control total sobre su ubicación y la opción no tendrá efecto. Use la opción -Wl, -Tsection=add, como se describe en la guía del usuario.

Versión 2.32

Guía de pila Disponible con una licencia de compilador PRO, la característica de guía de pila del compilador se puede usar para estimar la profundidad máxima de cualquier pila usada por un programa. Construye y analiza el gráfico de llamadas de un programa, determina el uso de la pila de cada función y produce un informe, a partir del cual se puede inferir la profundidad de las pilas utilizadas por el programa. Esta función se habilita a través de la opción de línea de comandos -mchp-stack-usage. Se imprime un resumen del uso de la pila después de la ejecución. Un informe detallado de la pila está disponible en el mapa file, que se puede solicitar de la forma habitual.

Compatibilidad con nuevos dispositivos está disponible para las siguientes piezas de AVR: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32 y AVR32DB48.

Soporte de dispositivo retraído ya no está disponible para las siguientes piezas de AVR: AVR16DA28, AVR16DA32 y AVR16DA48.

Versión 2.31

Ninguno.

Versión 2.30

Nueva opción para evitar la inicialización de datos Una nueva opción de controlador -mno-data-ini t evita la inicialización de datos y el borrado de secciones bss. Funciona suprimiendo la salida de los símbolos do_ copy_ data y do_ clear_ bss en ensamblador files, que a su vez evitará la inclusión de esas rutinas por parte del enlazador.

Optimizaciones mejoradas Se han realizado una serie de mejoras de optimización, incluida la eliminación de instrucciones de retorno redundantes, la eliminación de algunos saltos después de una instrucción skip-if-bit-is y una abstracción procesal mejorada y la capacidad de iterar este proceso.

Ahora hay opciones adicionales disponibles para controlar algunas de estas optimizaciones, específicamente -f anclas de sección, que permite que el acceso a objetos estáticos se realice en relación con un símbolo; -mpai derations=n, que permite cambiar el número predeterminado de 2 iteraciones de abstracción de procedimiento; y, -mpa- costo de llamada- shortcall, que realiza una abstracción de procedimiento más agresiva, con la esperanza de que el enlazador pueda relajar las llamadas largas. Esta última opción puede aumentar el tamaño del código si no se cumplen los supuestos subyacentes.

Compatibilidad con nuevos dispositivos El soporte está disponible para las siguientes piezas de AVR: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48 y AVR128DB64.

Soporte de dispositivo retraído El soporte ya no está disponible para las siguientes piezas AVR: ATA5272, ATA5790, ATA5790N,ATA5791,ATA5795,ATA6285,ATA6286,ATA6612C,ATA6613C,ATA6614Q, ATA6616C, ATA6617C y ATA664251.

Versión 2.29 (Versión de seguridad funcional)

Encabezamiento file para los integrados del compilador Para garantizar que el compilador pueda cumplir con las especificaciones del lenguaje como MISRA, el encabezamiento file, que se incluye automáticamente por , Ha sido actualizado. Este encabezado contiene los prototipos de todas las funciones integradas, como _buil tin _avrnop () y _buil tin_ avr delay_cycles (). Es posible que algunos elementos integrados no cumplan con MISRA; estos se pueden omitir agregando define _Xe_ STRICT_ MISRA a la línea de comando del compilador. Los incorporados y sus declaraciones se han actualizado para usar tipos de ancho fijo.

Versión 2.20

Compatibilidad con nuevos dispositivos El soporte está disponible para las siguientes piezas de AVR: ATTINY1624, ATTINY1626 y ATTINY1627.

Mejor mejor asignación de ajuste El asignador de mejor ajuste (BFA) en el compilador se ha mejorado para que las secciones se asignen en un orden que permita una mejor optimización. El BFA ahora admite espacios de direcciones con nombre y maneja mejor la inicialización de datos.

Abstracción procesal mejorada Las optimizaciones de abstracción de procedimiento ahora se realizan en más secuencias de código. Las situaciones anteriores en las que esta optimización podría haber aumentado el tamaño del código se han solucionado haciendo que el código de optimización sea consciente del proceso de recolección de elementos no utilizados del vinculador.

Ausencia de ensamblador AVR El ensamblador AVR ya no se incluye con esta distribución.

Versión 2.19 (Versión de seguridad funcional)

Ninguno.

Versión 2.10

Cobertura de código Esta versión incluye una función de cobertura de código que facilita el análisis de la medida en que se ha ejecutado el código fuente de un proyecto. Use la opción -mcodecov=ram para habilitarlo. Después de la ejecución del programa en su hardware, la información de cobertura de código se recopilará en el dispositivo, y esta puede transferirse y mostrarse en MPLAB X IDE a través de un complemento de cobertura de código. Consulte la documentación del IDE para obtener información sobre este complemento. El #pragma mcodecov se puede utilizar para excluir funciones posteriores del análisis de cobertura. Idealmente, el pragma debe agregarse al comienzo de la file para excluir todo eso file del análisis de cobertura. Alternativamente, el atributo ((mcodecov)) puede usarse para excluir una función específica del análisis de cobertura.

Descripción del dispositivo files un nuevo dispositivo file llamado avr chipinfo. html se encuentra en el directorio docs de la distribución del compilador. Este file enumera todos los dispositivos admitidos por el compilador. Haga clic en el nombre de un dispositivo y se abrirá una página que muestra todos los pares de configuración/valor de bit de configuración permitidos para ese dispositivo, con ej.ampLes.

Abstracción procesal Se han agregado al compilador optimizaciones de abstracción de procedimientos, que reemplazan bloques comunes de código ensamblador con llamadas a una copia extraída de ese bloque. Estos son realizados por una aplicación separada, que es invocada automáticamente por el compilador cuando selecciona optimizaciones de nivel 2, 3 o superior. Estas optimizaciones reducen el tamaño del código, pero pueden reducir la velocidad de ejecución y la depuración del código.
La abstracción de procedimientos se puede deshabilitar en niveles de optimización más altos mediante la opción -mno-pa, o se puede habilitar en niveles de optimización más bajos (sujeto a su licencia) mediante -mpa. Se puede deshabilitar para un objeto. file usando -mno-pa-on-file=filename, o deshabilitado para una función usando -mno-pa en function= function.
Dentro de su código fuente, la abstracción de procedimiento se puede deshabilitar para una función usando _attribute_ ((nopa)) con la definición de la función, o usando _nopa, que se expande a atributo ((nopa, noinline)) y, por lo tanto, evita que la función se inserte. y hay abstracción de código en línea.
Compatibilidad con bits de bloqueo en pragma La configuración #pragma ahora se puede usar para especificar los bits de bloqueo de AVR, así como los demás bits de configuración. Compruebe la información del chip avr. html file (mencionado anteriormente) para que los pares de configuración/valor se usen con este pragma.
Compatibilidad con nuevos dispositivos El soporte está disponible para las siguientes piezas: AVR28DA128, AVR64DA128, AVR32DA128 y AVR48DA128.

Versión 2.05

Más bits por tu dinero La versión macOS de este compilador y administrador de licencias ahora es una aplicación de 64 bits. Esto garantizará que el compilador se instale y ejecute sin advertencias en versiones recientes de macOS.
Objetos const en la memoria del programa El compilador ahora puede colocar objetos calificados const en la memoria Flash del programa, en lugar de tenerlos ubicados en la RAM. El compilador se ha modificado para que los datos globales calificados const se almacenen en la memoria flash del programa y se pueda acceder directa e indirectamente a estos datos usando las instrucciones apropiadas de la memoria del programa. Esta nueva función está habilitada de manera predeterminada, pero se puede deshabilitar mediante la opción -mno-const-data-in-progmem. Para las arquitecturas avrxmega3 y avrtiny, esta función no es necesaria y siempre está deshabilitada, ya que la memoria del programa se asigna al espacio de direcciones de datos para estos dispositivos.
Estándar gratis Las versiones sin licencia (gratuitas) de este compilador ahora permiten optimizaciones hasta el nivel 2 inclusive. Esto permitirá una salida similar, aunque no idéntica, a lo que antes era posible con una licencia estándar.
Bienvenido AVRASM2 El ensamblador AVRASM2 para dispositivos de 8 bits ahora se incluye en el instalador del compilador XC8. El compilador XC8 no utiliza este ensamblador, pero está disponible para proyectos basados ​​en una fuente de ensamblado escrita a mano.
Compatibilidad con nuevos dispositivos El soporte está disponible para las siguientes piezas: ATMEGA1608, ATMEGA1609, ATMEGA808 y ATMEGA809.

Versión 2.00

Conductor de nivel superior Un nuevo controlador, llamado xc8-cc, ahora se ubica sobre el controlador avr-gcc anterior y el controlador xc8, y puede llamar al compilador apropiado según la selección del dispositivo de destino. Este controlador acepta opciones de estilo GCC, que se traducen o pasan al compilador que se está ejecutando. Este controlador permite utilizar un conjunto similar de opciones con una semántica similar con cualquier objetivo AVR o PIC y, por lo tanto, es la forma recomendada de invocar el compilador. Si es necesario, se puede llamar directamente al antiguo controlador avr-gcc utilizando las opciones de estilo antiguo que aceptaba en versiones anteriores del compilador.

Interfaz C común Este compilador ahora puede ajustarse a la interfaz MPLAB Common C, lo que permite que el código fuente se transfiera más fácilmente a todos los compiladores MPLAB XC. La opción -mext=cci solicita esta función, lo que permite una sintaxis alternativa para muchas extensiones de idioma.

Nuevo conductor bibliotecario Se coloca un nuevo controlador de bibliotecario sobre el bibliotecario PIC librer anterior y el bibliotecario AVR avr-ar. Este controlador acepta opciones de estilo de archivador GCC, que se traducen o pasan al bibliotecario que se está ejecutando. El nuevo controlador permite usar un conjunto similar de opciones con una semántica similar para crear o manipular cualquier biblioteca PIC o AVR. file y por lo tanto es la forma recomendada de invocar al bibliotecario. Si es necesario para proyectos heredados, se puede llamar directamente al bibliotecario anterior utilizando las opciones de estilo antiguo que aceptaba en versiones anteriores del compilador.

Problemas de migración

Las siguientes son características que ahora el compilador maneja de manera diferente. Estos cambios pueden requerir la modificación de su código fuente si transfiere el código a esta versión del compilador. El número de versión en los subtítulos indica la primera versión del compilador para admitir los cambios que siguen.

Versión 2.40

Ninguno.

Versión 2.39 (Versión de seguridad funcional)

Ninguno.

Versión 2.36

Ninguno.

Versión 2.35

Manejo de cadenas a bases (XCS-2420) Para garantizar la coherencia con otros compiladores de XC, las funciones de cadena de XC8, como strtol (), etc., ya no intentarán convertir una cadena de entrada si la base especificada es mayor que 36 y, en su lugar, establecerán errno en EINVAL. El estándar C no especifica el comportamiento de las funciones cuando se excede este valor base.

Optimizaciones de velocidad inapropiadas Las optimizaciones de abstracción de procedimiento se habilitaron al seleccionar las optimizaciones de nivel 3 (-03). Estas optimizaciones reducen el tamaño del código a expensas de la velocidad del código, por lo que no deberían haberse realizado. Los proyectos que usan este nivel de optimización pueden ver diferencias en el tamaño del código y la velocidad de ejecución cuando se compilan con esta versión.

Funcionalidad de biblioteca El código para muchas de las funciones estándar de la biblioteca C ahora proviene de la biblioteca estándar unificada de Microchip, que puede mostrar un comportamiento diferente en algunas circunstancias en comparación con el proporcionado por la antigua biblioteca avr-libc. por ejemploample, ya no es necesario vincular en la biblioteca lprintf_flt (opción -print _flt) para activar la compatibilidad con E/S formateada para especificadores de formato flotante. Las funciones de E/S inteligentes de la biblioteca estándar unificada de Microchip hacen que esta opción sea redundante. Además, ya no es necesario el uso de rutinas con el sufijo _p para cadenas y funciones de memoria (p. ej., strcpy_P (), etc.) que operan en cadenas constantes en flash. Las rutinas estándar de C (p. ej., strcpy ()) funcionarán correctamente con dichos datos cuando la función de datos constantes en la memoria del programa esté habilitada.

Versión 2.32

Ninguno.

Versión 2.31

Ninguno.

Versión 2.30

Ninguno.

Versión 2.29 (Versión de seguridad funcional)

Ninguno.

Versión 2.20

Diseño de DFP modificado El compilador ahora asume un diseño diferente al utilizado por los DFP (paquetes de familia de dispositivos). Esto significará que es posible que un DFP más antiguo no funcione con esta versión y que los compiladores más antiguos no puedan usar los DFP más recientes.

Versión 2.19 (Versión de seguridad funcional)

Ninguno.

Versión 2.10

Ninguno

Versión 2.05

Objetos constantes en la memoria del programa Tenga en cuenta que, por defecto, los objetos calificados constantemente se colocarán y se accederá a ellos en la memoria del programa (como se describe aquí). Esto afectará el tamaño y la velocidad de ejecución de su proyecto, pero debería reducir el uso de RAM. Esta función se puede desactivar, si es necesario, utilizando la opción -mnoconst- data-in-progmem.

Versión 2.00

Fusibles de configuración Los fusibles de configuración del dispositivo ahora se pueden programar usando un pragma de configuración seguido de pares de valores de configuración para especificar el estado del fusible, por ejemplo
#pragma config WDT0N = ESTABLECER
#pragma configuración B0DLEVEL = B0DLEVEL_4V3
Objetos absolutos y funciones. Los objetos y las funciones ahora se pueden colocar en una dirección específica en la memoria utilizando el especificador CCI _at (dirección), por ejemploample: #incluir int foobar en (Ox800100); char at(Ox250) get ID(int offset) { … } El argumento de este especificador debe ser una constante que represente la dirección en la que se colocará el primer byte o instrucción. Las direcciones de RAM se indican mediante un desplazamiento de 0x800000. Habilite el CCI para usar esta función.
Nueva sintaxis de la función de interrupción El compilador ahora acepta el especificador de interrupción CCI (num) para indicar que las funciones C son controladores de interrupción. El especificador toma un número de interrupción, por ej.ample: #incluir interrupción vacía (SPI STC_ vect _num) spi Isr (vacío) {...}

Problemas solucionados

Las siguientes son correcciones que se han hecho al compilador. Estos pueden corregir errores en el código generado o alterar la operación del compilador a la prevista o especificada por la guía del usuario. El número de versión en los subtítulos indica la primera versión del compilador que contiene correcciones para los problemas que siguen. Las etiquetas entre corchetes en el título son la identificación de ese problema en la base de datos de seguimiento. Estos pueden ser útiles si necesita ponerse en contacto con el soporte.

Tenga en cuenta que algunos problemas específicos del dispositivo se corrigen en el Paquete familiar de dispositivos (DFP) asociado con el dispositivo. Consulte MPLAB Pack Manager para obtener información sobre los cambios realizados en los DFP y para descargar los últimos paquetes.

Versión 2.40

Demasiado relajado (XCS-2876) Al usar la opción -mrelax, el compilador no asignaba algunas secciones juntas, lo que generaba tamaños de código menos óptimos. Esto podría haber ocurrido con el código que usaba las nuevas bibliotecas MUSL o con símbolos débiles.
La función de mapeo no está deshabilitada como se indica en la advertencia (XCS-2875) La función mappedprogmem cost-data-in-config depende de que la función cost-data-in-proem esté habilitada. Si la función cost-data-ipconfig-mapped-proem se habilitó explícitamente usando la opción y la función cost-data-inprogmem estaba deshabilitada, el paso del enlace falló, a pesar de un mensaje de advertencia que indica que los datos-en-configuración-mapeados La función proem se había deshabilitado automáticamente, lo cual no era del todo correcto. La función const-data-in-config-mapped-proem ahora está completamente deshabilitada en esta situación.
Cambios de DFP para acceder correctamente a NVMCTRL (XCS-2848) El código de inicio de tiempo de ejecución utilizado por los dispositivos AVR64EA no tuvo en cuenta que el registro NVMCTRL estaba bajo Protección contra cambios de configuración (CCP) y no pudo establecer el IO SFR en la página utilizada por el compilador const-data-in configmapped-proem característica. Los cambios realizados en AVR-Ex_DFP versión 2.2.55 permitirán que el código de inicio del tiempo de ejecución escriba correctamente en este registro.
Cambios de DFP para evitar la asignación flash (XCS-2847) Se ha implementado una solución para un problema con la función del dispositivo de mapeo flash informado en AVR128DA28/32/48/64 Silicon Errata (DS80000882). La característica del compilador const-data-in-config-mapped-proem no se aplicará de forma predeterminada a los dispositivos afectados, y este cambio aparecerá en AVR-Ex_DFP versión 2.2.160.
Error de compilación con sinhf o coshf (XCS-2834) Los intentos de usar las funciones de biblioteca sinhf () o coshf () dieron como resultado un error de enlace que describía una referencia indefinida. La función faltante a la que se hace referencia ahora se ha incluido en la distribución del compilador.
Errores de compilación con nopa (XCS-2833) Usar el atributo nopa con una función que ha tenido su nombre de ensamblador especificado usando as () activó mensajes de error del ensamblador. Esta combinación no es posible.
Fallo de función variádica con argumentos de puntero (XCS-2755, XCS-2731) Las funciones con un número variable de argumentos esperan que se pasen punteros de 24 bits (tipo _memo) en la lista de argumentos variables cuando la función de costo de datos en proem está habilitada. Los argumentos que apuntaban a la memoria de datos se pasaban como objetos de 16 bits, lo que provocaba errores en el código cuando finalmente se leían. Cuando se habilita la función de datos de contras en proem, todos los argumentos de punteros de 16 bits ahora se convierten en punteros de 24 bits. Las funciones de la biblioteca strtoxxx fallan (XCS-2620) Cuando la función const-data-in-proem estaba habilitada, el parámetro de entrada en las funciones de la biblioteca strtoxxx no se actualizaba correctamente para los argumentos de cadena de origen que no estaban en la memoria del programa.
Alertas de transmisiones no válidas (XCS-2612) El compilador ahora emitirá un error si la función de costo en proem está habilitada y la dirección de un literal de cadena se convierte explícitamente en el espacio de direcciones de datos (eliminando el calificador const), por ejemploample, (uint8 t*) “¡Hola mundo!”. Se emite una advertencia si la dirección puede no ser válida cuando un puntero de datos const se convierte explícitamente en el espacio de direcciones de datos.
Colocación de objetos constantes no inicializados (XCS-2408) Los objetos const y const volatile no inicializados no se colocaban en la memoria del programa en dispositivos que asignan toda o parte de su memoria del programa al espacio de direcciones de datos. Para estos dispositivos, dichos objetos ahora se colocan en la memoria del programa, lo que hace que su funcionamiento sea coherente con otros dispositivos.

Versión 2.39 (Versión de seguridad funcional)

Ninguno.

Versión 2.36

Error al retrasar (XCS-2774) Los cambios menores en las optimizaciones predeterminadas del modo libre impidieron el plegamiento constante de expresiones de operandos en las funciones integradas de retraso, lo que provocó que se trataran como no contactos y desencadenara el error: _buil tin avr delay_ ciclos espera ac ompila constante entera de tiempo.

Versión 2.35

Asignación contigua usando _at (XCS-2653) La asignación contigua de múltiples lugares de objetos en una sección con el mismo nombre y usando at () no funcionaba correctamente. por ejemploample: constchararrl [ ] at tri butte ((sect on(“.misses”))) at (Ox50 0 ) = {Oxo , Ox CD} ; cost char arr2[ ] at tri butte ((section(“.my s eke”))) = {Oxen, Ox FE }; debería haber colocado arr2 inmediatamente después de aril.
Especificación de direcciones de inicio de sección (XCS-2650) La opción -Wal, –section-start fallaba silenciosamente al colocar secciones en la dirección de inicio designada. Este problema se solucionó para cualquier sección con nombre personalizado; sin embargo, no funcionará para ninguna sección estándar, como . texto o . bss, que debe colocarse mediante una opción -Wl, -T.
Linker se bloquea cuando se relaja (XCS-2647) Cuando se habilitaba la optimización -relax y había secciones de código o datos que no cabían en la memoria disponible, el enlazador fallaba. Ahora, en tal circunstancia, se emiten mensajes de error en su lugar.
Mal acceso a EEPROM (XCS-2629) La rutina del bloque leproma _read_ no funcionaba correctamente en los dispositivos Mega cuando la opción -monist-data-in-proem estaba habilitada (que es el estado predeterminado), lo que provocaba que la memoria EEPROM no se leyera correctamente.
Asignación de memoria no válida (XCS-2593, XCS-2651) Cuando la opción del enlazador -Text o -Tata (por ej.ample pasado usando una opción de controlador -Wl), se actualizó el origen de la región de texto/datos correspondiente; sin embargo, la dirección final no se ajustó en consecuencia, lo que podría haber llevado a que la región excediera el rango de memoria del dispositivo de destino.
Código de interrupción ATtiny no válido (XCS-2465) Al compilar para dispositivos Tatin y las optimizaciones estaban deshabilitadas (-00), las funciones de interrupción pueden haber activado mensajes del ensamblador de operando fuera de rango.
Opciones que no se pasan (XCS-2452) Al usar la opción -Wl con varias opciones del vinculador separadas por comas, no todas las opciones del vinculador se pasaban al vinculador.
Error al leer indirectamente la memoria del programa (XCS-2450) En algunos casos, el compilador producía un error interno (insn irreconocible) al leer un valor de dos bytes de un puntero a la memoria del programa.

Versión 2.32

El segundo acceso a la biblioteca falla (XCS-2381) Invocando la versión de Windows del xc8-ar. exe library archiver una segunda vez para acceder a un archivo de biblioteca existente puede haber fallado con un mensaje de error de no poder cambiar el nombre.

Versión 2.31

Errores del compilador sin explicación (XCS-2367) Cuando se ejecuta en plataformas Windows que tenían el directorio temporal del sistema establecido en una ruta que incluía un punto '.' carácter, es posible que el compilador no haya podido ejecutarse.

Versión 2.30

Etiquetas globales mal colocadas después de delinear (XCS-2299) Es posible que el código de ensamblado escrito a mano que coloca etiquetas globales dentro de las secuencias de ensamblado que se eliminan mediante la abstracción procesal no se haya reubicado correctamente.
Un choque relajante (XCS-2287) El uso de la opción -merlad podría haber causado que el enlazador fallara cuando las optimizaciones de relajación del salto de cola intentaron eliminar la instrucción ret que no estaba al final de una sección.
Bloqueo al optimizar etiquetas como valores (XCS-2282) El código que usa la extensión de lenguaje GNU C "Etiquetas como valores" podría haber provocado que las optimizaciones de abstracción de procedimiento fallaran, con un error de corrección de intervalos de VMA delineados.
No tan constante (XCS-2271) Los prototipos para arranques () y otras funciones de ya no especifica el calificador de costo no estándar en los punteros de cadena devueltos cuando la función -monist-data inprogmem está deshabilitada. Tenga en cuenta que con los dispositivos avrxmega3 y avertin, esta función está habilitada de forma permanente.
Inicializadores perdidos (XCS-2269) Cuando más de una variable en una unidad de traducción se colocó en una sección (usando sección o atributo ((sección))), y la primera de esas variables se inicializó en cero o no tenía un inicializador, los inicializadores para otras variables en la misma unidad de traducción que se colocaron en la misma sección se perdieron.

Versión 2.29 (Versión de seguridad funcional)

Ninguno.

Versión 2.20

Error con comandos largos (XCS-1983) Al usar un objetivo AVR, el compilador puede haberse detenido con un file error no encontrado, si la línea de comando era extremadamente grande y contenía caracteres especiales como comillas, barras invertidas, etc.
Sección de rodata no asignada (XCS-1920) El enlazador AVR no pudo asignar memoria para las secciones de rodata personalizadas al construir para las arquitecturas avrxmega3 y avrtiny, lo que podría producir errores de superposición de memoria

Versión 2.19 (Versión de seguridad funcional)

Ninguno.

Versión 2.10

Errores de reubicación (XCS-1891) El asignador de mejor ajuste dejaba "agujeros" de memoria entre secciones después de la relajación del enlazador. Aparte de la fragmentación de la memoria, esto aumentaba la posibilidad de que se produjeran errores de reubicación del enlazador relacionados con saltos relativos a la PC o llamadas fuera de rango.
Instrucciones no transformadas por relajación (XCS-1889) La relajación del enlazador no ocurrió para las instrucciones de salto o llamada cuyos objetivos se vuelven accesibles si se relajan.
Desaparecido funcionalidad (XCSE-388) Varias definiciones de , como clock_ div_ t y clock_prescale_set (), no se definieron para dispositivos, incluidos ATmega324PB, ATmega328PB, ATtiny441 y ATtiny841.
Faltan macros El compilador no definió automáticamente las macros_ xcs _MODE_, _xcs VERSION, _xc y xcs del preprocesador. Estos ya están disponibles.

Versión 2.05

Error interno del compilador (XCS-1822) Al compilar bajo Windows, es posible que se haya producido un error interno del compilador al optimizar el código.
Desbordamiento de RAM no detectado (XCS-1800, XCS-1796) El compilador no detectó los programas que excedían la memoria RAM disponible en algunas situaciones, lo que resultó en una falla del código de tiempo de ejecución.
Memoria flash omitida (XCS-1792) Para los dispositivos avrxmega3 y avrtiny, MPLAB X IDE podría haber dejado partes de la memoria flash sin programar.
Error al ejecutar principal (XCS-1788) En algunas situaciones en las que el programa no tenía variables globales definidas, el código de inicio del tiempo de ejecución no salía y la función principal () nunca se alcanzaba.
Información de memoria incorrecta (XCS-1787) Para los dispositivos avrxmega3 y avrtiny, el programa avr-size informaba que los datos de solo lectura consumían RAM en lugar de la memoria del programa.
Lectura de memoria de programa incorrecta (XCS-1783) Los proyectos compilados para dispositivos con memoria de programa asignada al espacio de direcciones de datos y que definen objetos usando la macro/atributo PROGMEM podrían haber leído estos objetos desde la dirección incorrecta.
Error interno con atributos (XCS-1773) Ocurrió un error interno si definió objetos de puntero con el
_at () o tokens de atributo () entre el nombre del puntero y el tipo sin referencia, por ejemploample char *
_en (0x80015 0) cp; Ahora se emite una advertencia si se encuentra dicho código.
Error al ejecutar principal (XCS-1780, XCS-1767, XCS-1754) El uso de variables EEPROM o la definición de fusibles mediante el pragma de configuración podría haber provocado una inicialización de datos incorrecta y/o bloqueo de la ejecución del programa en el código de inicio del tiempo de ejecución, antes de llegar a main ().
Error de fusible con dispositivos pequeños (XCS-1778, XCS-1742) Los dispositivos attiny4/5/9/10/20/40 tenían una longitud de fusible incorrecta especificada en su encabezado files que conducen a errores del enlazador al intentar compilar código que definió fusibles.
Error de segmentación (XCS-1777) Se ha corregido un fallo de segmentación intermitente.
Accidente del ensamblador (XCS-1761) El ensamblador avr-as podría haberse bloqueado cuando el compilador se ejecutó en Ubuntu 18.
Objetos no borrados (XCS-1752) Es posible que el código de inicio del tiempo de ejecución no haya borrado los objetos de duración de almacenamiento estático no inicializados.
Especificación de dispositivo en conflicto ignorada (XCS-1749) El compilador no generaba un error cuando se usaban varias opciones de especificación de dispositivos e indicaba diferentes dispositivos.
Corrupción de memoria por montón (XCS-1748) El símbolo heap_ start se estaba configurando incorrectamente, lo que generaba la posibilidad de que el montón corrompiera las variables ordinarias.
Error de reubicación del enlazador (XCS-1739) Es posible que se haya emitido un error de reubicación del enlazador cuando el código contenía un rjmp o rcall con un objetivo exactamente a 4k bytes de distancia.

Versión 2.00

Ninguno.

Problemas conocidos

Las siguientes son limitaciones en la operación del compilador. Estas pueden ser restricciones generales de codificación, o
desviaciones de la información contenida en el manual del usuario. Las etiquetas entre corchetes en el título son la identificación de ese problema en la base de datos de seguimiento. Esto puede ser beneficioso si necesita ponerse en contacto con el soporte. Aquellos artículos que no tienen etiquetas son limitaciones que describen el modo operandi y que es probable que permanezcan en vigor de forma permanente.

Integración MPLAB X IDE

Integración MPLAB IDE Si va a utilizar Compiler desde MPLAB IDE, debe instalar MPLAB IDE antes de instalar Compiler.

Generación de código

Error de asignación de memoria PA (XCS-2881) Al usar los optimizadores de abstracción de procedimientos, el enlazador puede informar errores de asignación de memoria cuando el tamaño del código está cerca de la cantidad de memoria de programa disponible en el dispositivo, aunque el programa debería poder caber en el espacio disponible.
No tan inteligente Smart-IO (XCS-2872) La función smart-io del compilador generará un código válido pero subóptimo para la función de sprint si se ha desactivado la función de datos de costa en proem o si el dispositivo tiene toda su memoria flash asignada a la memoria de datos.
Aún menos inteligente Smart-IO (XCS-2869) La función smart-io del compilador generará un código válido pero subóptimo cuando se usen las opciones -floe y -fno-buil tin.
Colocación subóptima de datos de solo lectura (XCS-2849) El enlazador actualmente no tiene conocimiento de las secciones de memoria APPCODE y APPDATA, ni de las divisiones [No-]Read-While-Write en el mapa de memoria. Como resultado, existe una pequeña posibilidad de que el vinculador pueda asignar datos de solo lectura en un área de memoria inadecuada. La posibilidad de que los datos se extravíen aumenta si la función de datos de costa en pragma está habilitada, especialmente si la función de datos de costa en config-mapped-proem también está habilitada. Estas características se pueden desactivar si es necesario.
Objeto file orden de procesamiento (XCS-2863) El orden en que los objetos fileLos correos electrónicos que procesará el enlazador pueden diferir según el uso de optimizaciones de abstracción de procedimiento (opción -mpa). Esto solo afectaría el código que define funciones débiles en varios módulos.
Error del enlazador con absoluto (XCS-2777) Cuando un objeto se ha convertido en absoluto en una dirección al comienzo de la RAM y también se han definido objetos no inicializados, es posible que se active un error del enlazador.
ID de activación breves (XCS-2775) Para los dispositivos ATA5700/2, los registros PHID0/1 solo se definen como de 16 bits de ancho, en lugar de 32 bits de ancho.
Bloqueo del enlazador al llamar al símbolo (XCS-2758) El enlazador podría fallar si se usa la opción de controlador -merlad cuando el código fuente llama a un símbolo que se ha definido usando la opción de enlazador -Wl, –defsym.
Inicialización incorrecta (XCS-2679) Existe una discrepancia entre dónde se colocan los valores iniciales para algunos objetos de tamaño de byte global/estático en la memoria de datos y dónde se accederá a las variables en tiempo de ejecución.
iniciado incorrectamente establece vacío (XCS-2652) En los casos en que una cadena de asunto para la conversión mediante () contiene lo que parece ser un número de coma flotante en formato exponencial y hay un carácter inesperado después de un carácter e, entonces la dirección vacía, si se proporciona, apuntará al carácter después la e y no la e misma. por ejemploample: declarado ("hooey", vacío); dará como resultado un apuntamiento vacío al carácter x.
Malas llamadas a funciones indirectas (XCS-2628) En algunos casos, las llamadas a funciones realizadas a través de un puntero de función almacenado como parte de una estructura pueden fallar.
strtof devuelve cero para flotantes hexadecimales (XCS-2626) Las funciones de biblioteca strtof () et al y scanf () et al, siempre convertirán un número de punto flotante hexadecimal que no especifica un exponente a
cero. por ejemploample: estator(“Búho”, &vacío); devolverá el valor 0, no 1.
Mensajes de asesor de pila imprecisos (XCS-2542, XCS-2541) En algunos casos, no se emite la advertencia del asesor de pila con respecto a la recursividad o la pila indeterminada utilizada (posiblemente mediante el uso de alloca()).
Falla con código de interrupción duplicado (XCS-2421) Cuando más de una función de interrupción tiene el mismo cuerpo, el compilador puede hacer que la salida de una función de interrupción llame a la otra. Esto dará como resultado que todos los registros de llamadas golpeadas se guarden innecesariamente, y las interrupciones se habilitarán incluso antes de que se ejecute el epílogo del controlador de interrupciones actual, lo que podría provocar una falla en el código.
Objetos constantes que no están en la memoria del programa (XCS-2408) Para los proyectos avrxmega3 y avertins, los objetos const no idealizados se colocan en la memoria de datos, aunque una advertencia sugiere que se han colocado en la memoria del programa. Esto no afectará a los dispositivos que no tengan memoria de programa asignada al espacio de la memoria de datos, ni afectará a ningún objeto que se inicialice.
Salida incorrecta con ruta de DFP no válida (XCS-2376) Si se invoca el compilador con una ruta de DFP no válida y una 'especificación' file existe para el dispositivo seleccionado, el compilador no informa el paquete de familia de dispositivos que falta y, en su lugar, selecciona la 'especificación' file, lo que podría dar lugar a una salida no válida. La 'especificación' fileEs posible que los correos electrónicos no estén actualizados con los archivos DFP distribuidos y se diseñaron para usarse solo con pruebas internas del compilador.
Superposición de memoria no detectada (XCS-1966) El compilador no detecta la superposición de memoria de los objetos hechos absolutos en una dirección (a través de at ()) y otros objetos que usan el especificador de sección () y que están vinculados a la misma dirección.
Fallo con funciones de biblioteca y _meme (XCS-1763) Las funciones flotantes límbicas llamadas con un argumento en el espacio de direcciones _memo pueden fallar. Tenga en cuenta que las rutinas de la biblioteca se llaman desde algunos operadores de C, por lo que, por ejemploample, el siguiente código se ve afectado: return regFloatVar > memxFloatVar;
Implementación límbica limitada (AVRTC-731) Para los productos ATTiny4/5/9/10/20/40, la implementación estándar de la biblioteca C/Math en limbic es muy limitada o no está presente.
Limitaciones de la memoria del programa (AVRTC-732) Las imágenes de memoria de programa de más de 128 kb son compatibles con la cadena de herramientas; sin embargo, hay instancias conocidas de cancelaciones del enlazador sin relajación y sin un mensaje de error útil en lugar de generar los apéndices de función requeridos cuando se usa la opción -relax.
Limitaciones de espacio de nombres (AVRTC-733) Los espacios de direcciones con nombre son compatibles con la cadena de herramientas, sujeto a las limitaciones mencionadas en la sección Calificadores de tipo especial de la guía del usuario.
Zonas horarias El las funciones de la biblioteca asumen GMT y no son compatibles con las zonas horarias locales, por lo que la hora local () devolverá la misma hora que gummite (), por ejemploampel.

ATENCIÓN AL CLIENTE

file:///Aplicaciones/microehip/xc8/v 2 .40/docs/Read me_X C 8_ para A VR. htm

Documentos / Recursos

Software compilador MICROCHIP MPLAB XC8 C [pdf] Manual del propietario
MPLAB XC8 C, MPLAB XC8 C Compilador Software, Compilador Software, Software

Referencias

Deja un comentario

Su dirección de correo electrónico no será publicada. Los campos obligatorios están marcados *