Пик Микро Паскаль
![]() | Судя по всему, основной автор этой статьи тесно связан с ее предметом. ( Май 2018 г. ) |
Разработчик(и) | Филипп Патернот |
---|---|
Стабильная версия | 2.0.6
/ 9 сентября 2014 г |
Операционная система | Win32 |
Тип | Компилятор |
Лицензия | Бесплатное ПО |
Веб-сайт | www |
Pic Micro Pascal, также известный как PMP, — это бесплатный Pascal кросс-компилятор для микроконтроллеров PIC . Он предназначен для работы с от Microchip Technology установленным пакетом MPLAB ; он имеет собственную IDE ( на основе Scintilla ) и является высокооптимизированным компилятором.
Он предназначен только для 8-битных процессоров: PIC10, PIC12, PIC16, PIC16 расширенный, PIC18.
Основная цель разработки заключалась в том, чтобы избежать использования специальных встроенных функций и процедур для взаимодействия с аппаратными регистрами. Доступ к этим регистрам осуществляется напрямую как к переменным, функции-обертки отсутствуют, а создаваемый код довольно компактен.
PMP не включает в себя ассемблер или компоновщик. Он предназначен для работы с установленным пакетом Microchip MPLAB и напрямую использует файлы MPASM и MPLINK .lkr для инициализации сопоставления памяти; начиная с V2, он поставляется с собственной базой данных для функций процессора и стандартными определениями регистров.
PMP также поддерживает пакет GPUTILS .
Особенности языка
[ редактировать ]PMP не поддерживает объектно-ориентированное программирование , но RECORD может иметь методы.
По состоянию на 2014 год реализация поддерживает компиляцию нескольких файлов с помощью директив включения и концепции каждого модуля. PMP поддерживает уникальную функцию: переменные могут быть объявлены в EEPROM, а затем прозрачно использованы как любые другие переменные (с некоторыми ограничениями).
Типы данных PMP:
- простые записи (подмножество): RECORD
- битовые логические значения: BOOLEAN
- 8-битные целые типы без знака и знака: CHAR, BYTE, SHORTINT.
- 16-битные целые типы без знака и знака: WORD, INTEGER.
- 32-битные целые типы без знака и знака: LONGWORD, LONGINT
- перечисления
- массивы (одно измерение): МАССИВ
- строки (переменной длины): STRING
- указатели (подмножество)
- переменные и операции с плавающей запятой (только PIC16 и PIC18): два формата FP, один 48-битный внутренний (REAL) и подмножество 32-битного формата IEEE (SINGLE); оба формата не обрабатывают бесконечность и NaN
Языковой диалект
[ редактировать ]Синтаксис PMP очень близок к не- ООП- синтаксису Turbo Pascal или Delphi , с некоторыми расширениями для поддержки некоторых функций целевого процессора (битовые манипуляции...).
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)
{ Beacon Addr dip switches }
I_ADDR_0 : boolean @PORTA.2;
I_ADDR_1 : boolean @PORTA.5;
CONST
LOW_BATT_SENSOR_CHANNEL = ANS0; // Channel for battery measurement (RA0)
{ Led on/off values }
cLED_ON = TRUE;
cLED_OFF = FALSE;
// pins that are inputs
TRISA_MASK = [I_NOT_OPTION_SERIAL, I_ADDR_0, I_ADDR_1];
TRISB_MASK = [I_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.
Начиная с версии 1.6, могут использоваться некоторые «расширения» языка (с явной активацией), большинство из них взяты из других языков, подобных Паскалю, таких как Oberon или Modula :
...
FOR I in SomeVar DO <Statements> (* SomeVar may be any variable or an enumeration type *)
FOR I := X TO Y BY n DO <Statements> (* Specification of the variable step value *)
LOOP <Statements> END (* Forever loop *)
IF Condition1 THEN <Statements> ELSIF Condition2 THEN <Statements> (* Shortcut for ELSE IF *)
RETURN SomeResult (* Function's result value assignment and exit *)
История
[ редактировать ]PMP был создан в 2006 году Филиппом Патерноттом и на данный момент выпущен как бесплатное программное обеспечение , а как бесплатное программное обеспечение в будущем — . Последняя версия — 2.0.6, сентябрь 2014 г. [1]
PMP стал темой статьи в журнале SERVO в марте 2015 года. [2]
Ссылки
[ редактировать ]- ^ Справочное руководство, PPA, 2014 г., Документация для Pic Micro Pascal V2.
- ^ за март 2015 г. Статья в журнале SERVO , Томас Генри, 2015 г., [1]