Turbo51 — Википедия

Turbo51
Скриншот программы Turbo51
Turbo51 command line output
Тип Compiler
Разработчик Igor Funa
Операционная система Win32
Последняя версия 0.1.3.16 (14 октября 2012; 11 лет назад (2012-10-14))
Лицензия Freeware
Сайт turbo51.com

Turbo51 — компилятор для языка программирования Pascal, для семейства микроконтроллеров Intel MCS-51 (8051).

Он имеет синтаксис Borland Turbo Pascal 7, в том числе, поддерживает объектно-ориентированное программирование. Компилятор написан на языке Object Pascal и разработан на Delphi.

В 1980 году Intel представила 8051 как первый член семейства процессоров MCS-51. Сегодня десятки предприятий производят сотни разновидностей указанного семейства микроконтроллеров со множеством изменений и добавлений, расширяющих возможности семейства. Поэтому архитектура микроконтроллеров по-прежнему вызывает интерес у профессионалов и любителей. Для микроконтроллеров MCS-51 существует множество С-компиляторов, но совсем немного компиляторов Pascal.

Turbo51 создавался как бесплатный компилятор, который работает так же быстро, как Turbo Pascal, использует тот же синтаксис и генерирует высококачественный оптимизированный код.

Автор компилятора — Игорь Фуна, Словения.

Диалект языка

[править | править код]

Turbo51 использует диалект языка Borland Turbo Pascal 7. Синтаксис был расширен некоторыми конструкциями для поддержки особенностей микроконтроллеров MCS-51.

Var   RS485_TX: Boolean absolute P3.2;       I2C.SDA:   Boolean absolute P3.7;       I2C.SCL:   Boolean absolute P3.4;        EEPROM_Data:    TEEPROM_Data XDATA absolute 0;        ModuleAddress:  Byte;       RX_LedTimer:    Byte;       TX_LedTimer:    Byte;        SavedOutput:    TOutputData IDATA;       OutputsAuxData: Array [1..8] of Byte IDATA; 

Особенности

[править | править код]
  • Консольное приложение Win32
  • Быстрый однопроходный оптимизирующий компилятор
  • Синтаксис Borland Turbo Pascal 7
  • Полная поддержка плавающей точки
  • Смешанное программирование на Pascal и ассемблере
  • Полное использование банков регистров
  • Расширенный многопроходный оптимизатор
  • «Умный» компоновщик
  • Генерирует компактный высококачественный код
  • Форматы выходных файлов: Binary, Intel HEX, OMF51

Пример программы «Hello World»

[править | править код]

Исходный текст программы:

Program HelloWorld;  Const  Osc      = 22118400;  BaudRate = 19200;   BaudRateTimerValue = Byte (- Osc div 12 div 32 div BaudRate);  Var SerialPort: Text;  Procedure WriteToSerialPort; Assembler; Asm   CLR   TI   MOV   SBUF, A @WaitLoop:   JNB   TI, @WaitLoop end;  Procedure Init; begin   TL1  := BaudRateTimerValue;   TH1  := BaudRateTimerValue;   TMOD := %00100001;    { Timer1: no GATE, 8 bit timer, autoreload }   SCON := %01010000;    { Serial Mode 1, Enable Reception }   TI   := True;         { Indicate TX ready }   TR1  := True;         { Enable timer 1 }    Assign (SerialPort, WriteToSerialPort); end;  begin   Init;   Writeln (SerialPort, 'Hello world!'); end. 

Текст откомпилированной программы на ассемблере:

; Turbo51 version 0.1.3.10, Copyright 2000 - 2011 Igor Funa  $REGISTERBANK (0)  _CODE         SEGMENT  CODE _CONST        SEGMENT  CODE _DATA         SEGMENT  DATA                EXTRN    DATA  (CurrentIO)               EXTRN    IDATA (StackStart)                EXTRN    CODE  (sysWriteStr_CODE)               EXTRN    CODE  (sysWriteLine)  ; Program HelloWorld; ;  ; Const  RSEG _CONST  ;  Osc      = 22118400; ;  BaudRate = 19200; ;  ;  BaudRateTimerValue = Byte (- Osc div 12 div 32 div BaudRate); ;  ; Var SerialPort: Text;  RSEG _DATA  SerialPort:                     DS       4  ;  ; Procedure WriteToSerialPort; Assembler;  RSEG _CODE  USING 0  WriteToSerialPort: ; Asm ;   CLR   TI               CLR       SCON.1  ;   MOV   SBUF, A               MOV       SBUF, A  ; @WaitLoop: L_001D: ;   JNB   TI, @WaitLoop               JNB       SCON.1, L_001D  ; end;               RET  ;  ; Procedure Init;  Init: ; begin ;   TL1  := BaudRateTimerValue;               MOV       TL1, #$FD  ;   TH1  := BaudRateTimerValue;               MOV       TH1, #$FD  ;   TMOD := %00100001;    { Timer1: no GATE, 8 bit timer, autoreload }               MOV       TMOD, #$21  ;   SCON := %01010000;    { Serial Mode 1, Enable Reception }               MOV       SCON, #$50  ;   TI   := True;         { Indicate TX ready }               SETB      SCON.1  ;   TR1  := True;         { Enable timer 1 }               SETB      TCON.6  ;  ;   Assign (SerialPort, WriteToSerialPort);               MOV       SerialPort, #LOW  (WriteToSerialPort)               MOV       SerialPort+1, #HIGH (WriteToSerialPort)  ; end;               RET  RSEG _CONST  C_0071:                         DB        12, 'Hello world!'  CSEG AT $0000  HelloWorld: ;  ; begin               MOV       SP, #StackStart-1  ;   Init;               LCALL     Init  ;   Writeln (SerialPort, 'Hello world!');               MOV       CurrentIO, SerialPort               MOV       CurrentIO+1, SerialPort+1               MOV       DPTR, #C_0071               MOV       R6, #0               LCALL     sysWriteStr_CODE               LCALL     sysWriteLine  ; end. L_0017:               SJMP      L_0017                END 

Интегрированная среда разработки

[править | править код]

Интегрированная среда разработки для микроконтроллеров 8051.

MC-51 содержит:

  • Текстовый редактор с подсветкой синтаксиса для создания исходных текстов программ на ассемблере и Паскале;
  • Интерфейс к Turbo51 для компилирования с Паскаля;
  • Интерфейс к ASEMW для ассемблирования;
  • Комплексный симулятор и отладчик для всех основных функций, включая таймеры и последовательный интерфейс;
  • Терминальное окно для общения с монитором программы в микроконтроллере и загрузки программ в память микроконтроллера в формате Intel Hex;
  • Модуль флэш-программирования микроконтроллеров Atmel AT89S8252/53 через последовательный интерфейс.

Для компиляции исходных файлов MC-51 использует вызов командной строки программы (ASEMW или Turbo51) с адекватными параметрами. При нажатии на сообщение об ошибке редактор позволяет непосредственно перейти к строке, содержащей ошибку. Встроенный текстовый редактор использует компоненты с открытым исходным кодом SynEdit. Кроме того, многие расширенные функции редактора SynEdit поддерживают подсветку синтаксиса конкретного исходного кода. Многие из этих возможностей могут быть настроены индивидуально пользователем.

МС-51 включает в себя также симулятор/отладчик. С его помощью можно отслеживать выполнение программы без каких-либо аппаратных средств.