Turbo51
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;
Особенности
Пример программы «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 содержит:
Для компиляции исходных файлов MC-51 использует вызов командной строки программы (ASEMW или Turbo51) с адекватными параметрами. При нажатии на сообщение об ошибке редактор позволяет непосредственно перейти к строке, содержащей ошибку. Встроенный текстовый редактор использует компоненты с открытым исходным кодом SynEdit. Кроме того, многие расширенные функции редактора SynEdit поддерживают подсветку синтаксиса конкретного исходного кода. Многие из этих возможностей могут быть настроены индивидуально пользователем. МС-51 включает в себя также симулятор/отладчик. С его помощью можно отслеживать выполнение программы без каких-либо аппаратных средств. См. такжеСсылки
|