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 включает в себя также симулятор/отладчик. С его помощью можно отслеживать выполнение программы без каких-либо аппаратных средств.

См. также

Intel 8051 Borland Turbo Pascal

Ссылки

Turbo51-Начало работы

Категория:Языки программирования семейства Паскаля Категория:Компиляторы Паскаля Категория:Объектно-ориентированные языки программирования Категория:Свободные компиляторы и интерпретаторы