Pic Micro Pascal a.ka PMP es un compilador cruzado Pascal gratuito para microcontroladores PIC . Está diseñado para funcionar con la suite Microchip Technology MPLAB instalada; tiene su propio IDE ( basado en Scintilla ) y es un compilador altamente optimizado.
Desarrollador (es) | Philippe Paternotte |
---|---|
Lanzamiento estable | 2.0.6 / 9 de septiembre de 2014 |
Sistema operativo | Win32 |
Tipo | Compilador |
Licencia | Freeware |
Sitio web | www |
Está destinado a procesadores de 8 bits únicamente: PIC10, PIC12, PIC16, PIC16 mejorado, PIC18.
El eje principal del desarrollo fue evitar funciones y procedimientos especiales incorporados para interconectar registros de hardware. A estos registros se accede directamente como variables, no hay funciones contenedoras y el código emitido es bastante compacto.
PMP no incluye ensamblador ni enlazador. Está diseñado para funcionar con la suite Microchip MPLAB instalada y utiliza directamente archivos MPASM y MPLINK .lkr para inicializaciones de mapeo de memoria; a partir de la V2, viene con su propia base de datos para las características del procesador y las definiciones de registro estándar.
PMP también es compatible con la suite GPUTILS .
Características del idioma
PMP no admite la programación orientada a objetos , pero un RECORD puede tener métodos.
A partir de 2014, la implementación admite la compilación de archivos múltiples, mediante directivas de inclusión y por concepto de unidad. PMP admite una característica única: las variables pueden declararse en EEPROM y luego usarse de forma transparente como cualquier otra variable (con algunas limitaciones).
Tipos de datos de PMP:
- registros simples (subconjunto): REGISTRO
- bit booleanos: BOOLEAN
- tipos de enteros de 8 bits sin signo y con signo: CHAR, BYTE, SHORTINT
- tipos enteros de 16 bits sin signo y con signo: WORD, INTEGER
- tipos enteros de 32 bits sin signo y con signo: LONGWORD, LONGINT
- enumeraciones
- matrices (una dimensión): ARRAY
- cadenas (longitud variable): STRING
- punteros (subconjunto)
- variables y operaciones de coma flotante (sólo PIC16 y PIC18): dos formatos FP, uno interno de 48 bits (REAL) y un subconjunto del formato IEEE de 32 bits (SINGLE); ambos formatos no manejan infinito y NaN
Dialecto del idioma
La sintaxis de PMP está muy cerca de la sintaxis no orientada a objetos de Turbo Pascal o Delphi , con algunas extensiones para admitir algunas funciones del procesador de destino (manipulaciones de bits ...).
programa Beacon ;usa A2D ;var I_IR_Receiver : boolean @ PORTB . 4 ; // Receptor de infrarrojos TSOP1736 O_LED_RECEIVING : boolean @ PORTC . 0 ; // Recepción en curso O_LED_ERROR : boolean @ PORTC . 1 ; // Recibir error O_PWM_A : boolean @ PORTC . 4 ; // PWM a la fase A del transductor de EE. UU. (La dirección no se puede cambiar) O_PWM_B : boolean @ PORTC . 5 ; // PWM a la fase B del transductor de EE. UU. (La dirección no se puede cambiar) {Interruptores DIP de dirección de baliza } I_ADDR_0 : boolean @ PORTA . 2 ; I_ADDR_1 : booleano @ PORTA . 5 ;CONST LOW_BATT_SENSOR_CHANNEL = ANS0 ; // Canal para medición de batería (RA0) {Valores de encendido / apagado de LED } cLED_ON = TRUE ; cLED_OFF = FALSE ; // pines que son entradas TRISA_MASK = [ I_NOT_OPTION_SERIAL , I_ADDR_0 , I_ADDR_1 ] ; TRISB_MASK = [ I_IR_Receiver ] ; TRISC_MASK = [] ; comenzar ... PORTA : = 0 ; // Preparar todas las salidas TRISA : = TRISA_MASK ; // Establecer la dirección de los pines ... A2D_Init ([ LOW_BATT_SENSOR_CHANNEL ] , 5 , adcFosc16 , adm8Bits , advVdd ) ; Baudios ( 19200 ) ; // configurar la asignación del puerto serie ( salida , SerialPort_Output ) ; Writeln ( '¡Hola mundo!' ) ; ... fin .
Desde la versión 1.6, se pueden usar algunas "extensiones" de lenguaje (con activación explícita), la mayoría de ellas provenientes de otros lenguajes similares a Pascal como Oberon o Modula :
... FOR I en SomeVar DO < Declaraciones > (* SomeVar puede ser cualquier variable o un tipo de enumeración *) FOR I : = X TO Y BY n DO < Declaraciones > (* Especificación del valor de paso de la variable *) LOOP < Declaraciones > END (* Bucle para siempre *) IF Condición1 THEN < Declaraciones > ELSIF Condición2 ENTONCES < Declaraciones > (* Acceso directo para ELSE IF *) RETURN SomeResult (* Asignación de valor de resultado de la función y salida *)
Historia
PMP fue creado en 2006 por Philippe Paternotte y lanzado como software gratuito por ahora, como software libre en el futuro. La última versión es 2.0.6, septiembre de 2014. [1]
PMP ha sido objeto de un artículo en la revista SERVO en marzo de 2015. [2]
Referencias
- ^ Manual de referencia, PPA, 2014, Documentación para Pic Micro Pascal V2
- ^ Artículo de la revista SERVO de marzo de 2015, Thomas Henry, 2015, [1]