Turbo51

Turbo51
Turbo51
Turbo51 0.1.3.5 output.png
Turbo51 command line output
Тип

Compiler

Разработчик

Igor Funa

Операционная система

Win32

Последняя версия

0.1.3.16 (2012-10-14; 45 days ago)

Лицензия

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

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

MC-51

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

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

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

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

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

См. также

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "Turbo51" в других словарях:

  • Object Pascal — Paradigm(s) imperative, structured, object oriented, functional (Delphi dialect only) Appeared in 1986 (1986) Designed by Apple, Niklaus Wirth, Anders Hejlsberg …   Wikipedia

  • Pascal (programming language) — Pascal Paradigm(s) imperative, structured Appeared in 1970 Designed by Niklaus Wirth Typing discipline static, strong, safe …   Wikipedia

  • Intel 8051 — The Intel 8051 is a Harvard architecture, single chip microcontroller (µC) which was developed by Intel in 1980 for use in embedded systems. Intel s original versions were popular in the 1980s and early 1990s, but has today largely been… …   Wikipedia

  • Object Pascal — Семантика: императивная Класс языка: мультипарадигмальный: императивный, структурный, объектно ориентированный, обобщённый[1], процедурный Тип исполнения: компилируемый …   Википедия

  • Ada (programming language) — For other uses of Ada or ADA, see Ada (disambiguation). Ada Paradigm(s) Multi paradigm Appeared in 1980 Designed by MIL STD 1815/Ada 83: Jean Ichbiah Ada 95: Tucker Taft Ada 2005: Tucker Taft Stable release …   Wikipedia

  • UCSD Pascal — UCSD Pascal/p System Company / developer University of California, San Diego, SofTech, Pecan OS family p code operating systems Working state …   Wikipedia

  • Microsoft Pascal — was an implementation of the Pascal programming language that was developed by the Microsoft Corporation for compiling programs for running on its MS DOS operating system and, in later versions, on OS/2 (like many other Microsoft programming… …   Wikipedia

  • Comparison of Pascal and C — Programming language comparisons General comparison Basic syntax Basic instructions Arrays Associative arrays String operations …   Wikipedia

  • Oxygene (programming language) — Oxygene Developer RemObjects Software Stable release 3.0.21 (August 29, 2009; 2 years ago (2009 08 29)) Influenced by Object Pas …   Wikipedia

  • Concurrent Pascal — (also known as PASCAL FC) was designed by Per Brinch Hansen for writing concurrent computing programs such as operating systems and real time monitoring systems on shared memory computers. A separate language, Sequential Pascal, is used as the… …   Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»