Pic Micro Pascal - Википедия - Pic Micro Pascal
Похоже, что один из основных авторов этой статьи тесная связь со своим предметом.Май 2018) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Разработчики) | Филипп Патернотт |
---|---|
Стабильный выпуск | 2.0.6 / 9 сентября 2014 г. |
Операционная система | Win32 |
Тип | Компилятор |
Лицензия | Бесплатное ПО |
Интернет сайт | www |
Pic Micro Pascal a.k.a. PMP - это бесплатный Паскаль кросс-компилятор за Микроконтроллеры PIC. Он предназначен для работы с Технология микрочипов MPLAB установлен комплект; у него есть собственная IDE (Сцинтилла -based), и это хорошо оптимизированный компилятор.
Он предназначен только для 8-битных процессоров: PIC10, PIC12, PIC16, PIC16 Enhanced, PIC18.
Основная цель разработки заключалась в том, чтобы избежать использования специальных встроенных функций и процедур для сопряжения аппаратных регистров. Доступ к этим регистрам осуществляется напрямую как к переменным, функции-оболочки отсутствуют, а генерируемый код довольно компактен.
PMP не включает ассемблер или компоновщик. Он предназначен для работы с Микрочип MPLAB установлен пакет и напрямую использует файлы MPASM и MPLINK .lkr для инициализации отображения памяти; начиная с версии 2, он поставляется с собственной базой данных для функций процессора и стандартных определений регистров.
PMP также поддерживает ГПУТИЛС люкс.
Особенности языка
PMP не поддерживает объектно-ориентированного программирования, но ЗАПИСЬ может иметь методы.
По состоянию на 2014 год реализация поддерживает компиляцию нескольких файлов с помощью директив include и концепции отдельных модулей. PMP поддерживает уникальную особенность: переменные могут быть объявлены в EEPROM, а затем прозрачно использованы как любая другая переменная (с некоторыми ограничениями).
Типы данных PMP:
- простые записи (подмножество): ЗАПИСЬ
- битовые логические значения: BOOLEAN
- 8-битные целые типы без знака и со знаком: CHAR, BYTE, SHORTINT
- 16-битные целые типы без знака и со знаком: WORD, INTEGER
- 32-битные целые типы без знака и со знаком: LONGWORD, LONGINT
- перечисления
- массивы (одно измерение): ARRAY
- строки (переменной длины): STRING
- указатели (подмножество)
- переменные и операции с плавающей запятой (только PIC16 и PIC18): два формата FP, один 48-битный внутренний (REAL) и подмножество IEEE 32 бит формат (ОДИН); оба формата не поддерживают бесконечность и NaN
Диалект языка
Синтаксис PMP очень близок к не-ООП синтаксис Турбо Паскаль или же Delphi, с некоторыми расширениями для поддержки некоторых функций целевого процессора (битовые манипуляции ...).
программа Маяк;использует A2D;вар I_IR_Receiver : логический @ПОРТБ.4; // TSOP1736 ИК-приемник O_LED_RECEIVING : логический @ПОРТК.0; // Получение в процессе O_LED_ERROR : логический @ПОРТК.1; // Получение ошибки O_PWM_A : логический @ПОРТК.4; // ШИМ к фазе A датчика US (адрес изменить нельзя) O_PWM_B : логический @ПОРТК.5; // ШИМ к фазе B датчика US (адрес изменить нельзя) {DIP-переключатели Beacon Addr} I_ADDR_0 : логический @ПОРТА.2; I_ADDR_1 : логический @ПОРТА.5;CONST LOW_BATT_SENSOR_CHANNEL = ANS0; // Канал для измерения батареи (RA0) {Светодиодные значения включения / выключения} cLED_ON = ИСТИННЫЙ; cLED_OFF = ЛОЖНЫЙ; // контакты, которые являются входами TRISA_MASK = [I_NOT_OPTION_SERIAL, I_ADDR_0, I_ADDR_1]; TRISB_MASK = [I_IR_Receiver]; TRISC_MASK = [];начинать ... ПОРТА := 0; // Подготавливаем все выходы TRISA := TRISA_MASK; // Устанавливаем направление выводов ... A2D_Init([LOW_BATT_SENSOR_CHANNEL], 5, adcFosc16, adm8Bits, advVdd); Бод(19200); // настраиваем последовательный порт назначать(выход, SerialPort_Output); Writeln('Привет, мир!'); ...конец.
Начиная с версии 1.6, могут использоваться некоторые языковые «расширения» (с явной активацией), большинство из которых происходит от других языков, подобных Pascal, таких как Оберон или же Modula:
... ЗА я в SomeVar ДЕЛАТЬ <Заявления> (* SomeVar может быть любой переменной или типом перечисления *) ЗА я := Икс К Y К п ДЕЛАТЬ <Заявления> (* Указание значения шага переменной *) ПЕТЛЯ <Заявления> КОНЕЦ (* Цикл навсегда *) ЕСЛИ Условие1 ТОГДА <Заявления> ЭЛСИФ Условие2 ТОГДА <Заявления> (* Ярлык для ELSE IF *) ВОЗВРАЩАТЬСЯ SomeResult (* Назначение значения результата функции и выход *)
История
PMP был создан в 2006 году Филиппом Патерноттом и выпущен как бесплатное ПО пока, как бесплатно программное обеспечение в будущем. Последняя версия - 2.0.6, сентябрь 2014 г.[1]
PMP была предметом статьи в Журнал SERVO в марте 2015 года.[2]
Рекомендации
- ^ Справочное руководство, PPA, 2014, Документация для Pic Micro Pascal V2
- ^ Март 2015 г. Журнал SERVO статья, Томас Генри, 2015, [1]