Pic Micro Pascal
   HOME

TheInfoList



OR:

Pic Micro Pascal PMP is a free
Pascal Pascal, Pascal's or PASCAL may refer to: People and fictional characters * Pascal (given name), including a list of people with the name * Pascal (surname), including a list of people and fictional characters with the name ** Blaise Pascal, Fren ...
cross compiler for PIC microcontrollers. It is intended to work with the Microchip Technology MPLAB suite installed; it has its own IDE (
Scintilla Scintilla (the Italian language, Italian and Latin language, Latin word for spark (fire), spark) may refer to: *Scintilla AG, a Swiss electrical engineering company, a 100 percent subsidiary of Robert Bosch GmbH since 2005 *Scintilla (comics), a f ...
-based) and it is a highly optimized compiler. It is intended to target 8-bit processors only: PIC10, PIC12, PIC16, PIC16 enhanced, PIC18. The main axis of development was to avoid special built-in functions and procedures to interface hardware registers. These registers are accessed directly as variables, there are no wrapper functions, and emitted code is quite compact. PMP does not include an assembler or linker. It is designed to work with the
Microchip An integrated circuit or monolithic integrated circuit (also referred to as an IC, a chip, or a microchip) is a set of electronic circuits on one small flat piece (or "chip") of semiconductor material, usually silicon. Large numbers of tiny M ...
MPLAB suite installed, and directly uses MPASM and MPLINK .lkr files for memory mapping initializations; as of V2 it comes with its own database for processor features and standard register definitions. PMP also supports the GPUTILS suite.


Language features

PMP does not support
object-oriented programming Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of pr ...
, but a RECORD can have methods. As of 2014, the implementation supports multiple file compiling, by include directives and by a per unit concept. PMP supports a unique feature: variables may be declared in EEPROM and then used transparently as any other variable (with some limitations). PMP's data types: * simple records (subset): RECORD * bit booleans: BOOLEAN * unsigned and signed 8-bit integer types: CHAR, BYTE, SHORTINT * unsigned and signed 16-bit integer types: WORD, INTEGER * unsigned and signed 32-bit integer types: LONGWORD, LONGINT * enumerations * arrays (one dimension): ARRAY * strings (variable length): STRING * pointers (subset) * floating point variables and operations (PIC16 and PIC18 only): two FP formats, one 48-bit internal (REAL) and a subset of the IEEE 32 bits format (SINGLE); both formats do not handle infinite and NaN


Language dialect

PMP syntax is very close to the non- OOP syntax of Turbo Pascal or
Delphi Delphi (; ), in legend previously called Pytho (Πυθώ), in ancient times was a sacred precinct that served as the seat of Pythia, the major oracle who was consulted about important decisions throughout the ancient classical world. The oracle ...
, with some extensions to support some target processor features (bit manipulations ...). program Beacon; uses A2D; var I_IR_Receiver : boolean @PORTB.4; // TSOP1736 IR receiver O_LED_RECEIVING : boolean @PORTC.0; // Receive in progress O_LED_ERROR : boolean @PORTC.1; // Receive error O_PWM_A : boolean @PORTC.4; // PWM to US transducer phase A (addr cannot be changed) O_PWM_B : boolean @PORTC.5; // PWM to US transducer phase B (addr cannot be changed) I_ADDR_0 : boolean @PORTA.2; I_ADDR_1 : boolean @PORTA.5; CONST LOW_BATT_SENSOR_CHANNEL = ANS0; // Channel for battery measurement (RA0) cLED_ON = TRUE; cLED_OFF = FALSE; // pins that are inputs TRISA_MASK = _NOT_OPTION_SERIAL, I_ADDR_0, I_ADDR_1 TRISB_MASK = _IR_Receiver TRISC_MASK = []; begin ... PORTA := 0; // Prepare all outputs TRISA := TRISA_MASK; // Set pins direction ... A2D_Init([LOW_BATT_SENSOR_CHANNEL], 5, adcFosc16, adm8Bits, advVdd); Baud(19200); // setup serial port assign(output, SerialPort_Output); writeln('Hello world!'); ... end. Since version 1.6, some language "extensions" may be used (with explicit activation), most of them coming from other Pascal-Like languages such as Oberon or Modula: ... FOR I in SomeVar DO (* SomeVar may be any variable or an enumeration type *) FOR I := X TO Y BY n DO (* Specification of the variable step value *) LOOP END (* Forever loop *) IF Condition1 THEN ELSIF Condition2 THEN (* Shortcut for ELSE IF *) RETURN SomeResult (* Function's result value assignment and exit *)


History

PMP was created in 2006 by Philippe Paternotte and released as
freeware Freeware is software, most often proprietary, that is distributed at no monetary cost to the end user. There is no agreed-upon set of rights, license, or EULA that defines ''freeware'' unambiguously; every publisher defines its own rules for the f ...
for now, as
free software Free software or libre software is computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any adapted versions. Free software is a matter of liberty, no ...
in the future. The latest version is 2.0.6, September 2014. PMP has been the subject of an article in
SERVO Magazine ''SERVO Magazine'' is a monthly robotics publication produced by T&L Publications. The first issue appeared in November 2003. ''SERVO Magazine'' was a primary sponsor behind the Tetsujin competition, a contest where teams were challenged to desig ...
in March 2015.March 2015
SERVO Magazine ''SERVO Magazine'' is a monthly robotics publication produced by T&L Publications. The first issue appeared in November 2003. ''SERVO Magazine'' was a primary sponsor behind the Tetsujin competition, a contest where teams were challenged to desig ...
article, Thomas Henry, 2015

/ref>


References


External links

*
Official forum

French Developpez' site page about PMP




{{Pascal programming language family Procedural programming languages Pascal (programming language) compilers Pascal programming language family compilers and interpreters Cross-compilers 2006 software