Turbo51 — Википедия
Turbo51 | |
---|---|
| |
Тип | Compiler |
Разработчик | Igor Funa |
Операционная система | Win32 |
Последняя версия | 0.1.3.16 (14 октября 2012 ) |
Лицензия | 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 включает в себя также симулятор/отладчик. С его помощью можно отслеживать выполнение программы без каких-либо аппаратных средств.
См. также
[править | править код]Ссылки
[править | править код]- turbo51.com — официальный сайт Turbo51
- Turbo51-Начало работы