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-Начало работы
Категория:Языки программирования семейства Паскаля Категория:Компиляторы Паскаля Категория:Объектно-ориентированные языки программирования Категория:Свободные компиляторы и интерпретаторы