Integrated Development Environment for 8051 Microcontrollers

Introduction  Download  Installation  Sample programs Experimentation board


The MC-Tools package contains an Integrated Development Environment (IDE) for the 8051 family of microcontrollers (Siemens, Philips, Atmel, etc.).



ASEMW, Turbo51 and SDCC are command line-controlled programs. To compile sources, MC-51 calls these programs with adequate parameters. The output (especially error messages) is displayed in the bottom part of the desktop window. Clicking on an error message will move the editor cursor directly to the line containing the error.

As there are many controllers in the 8051 family that differ in the structure of special function registers (SFR), you have to include the appropriate Assembler or C module or Pascal unit in your source code. The MC-Tools package contains modules and units for all common microcontrollers of the 8051 family. When creating a new source file, the program will automatically insert the code into the text that is needed for the selected microcontroller type (see top right in the toolbar). On the other hand, when loading a source file from disk, the module used is recognized automatically.

To communicate with a microcontroller experimentation board via the serial interface, MC-51 provides a terminal mode. The required parameters for the connection can be adjusted using the main menu.
In terminal mode the screen is split into two windows: data received from serial interface (upper part) and data to be sent to the microcontroller (lower part). If there is a monitor program such as PAULMON installed on the microcontroller, hex files created by the assembler, Pascal or C compiler can be downloaded into the microcontroller memory.

The simulator and debugger of MC-51 allows small programs to be tested without any external hardware. It contains all common debugging features (Run, Stop, Single step, Step over subroutine, Run to selected line). You can execute the program step-by-step or set breakpoints anywhere in the program. The simulator displays the source code with program labels as well as the compiled hex code and the program addresses. All registers and memory locations can be inspected and changed if desired. Numbers may be displayed as hex, decimal or binary values.
The port connections are displayed as SFRs and as buttons with an LED-like status display. Changing a bit is made simply by clicking one of these buttons (only possible when set as an input in the program to be tested).
Furthermore, two timers and the serial port (output as displayed text and input from keyboard) are simulated. Interrupt controlling of these devices is possible. The two external interrupts can be triggered by dedicated buttons using mouse clicks. Controlling the priority of interrupts is not implemented. Additionally the symbol and opcode tables of derivated family members can be loaded directly.

Furthermore MC-51 contains a module for flash programming some Atmel microcontrollers (AT89S51/52 and AT89S8252/8253) using the serial interface. How to connect the serial port to the microcontroller can be taken from the description of the experimentation board (German).

The integrated text editor uses components from the open source project SynEdit. In addition to many extended editor functions, SynEdit supports syntax specific highlighting of source code. Most of these features can be individually adjusted by the user.

Notes on version 6.3

With version 6.3 it is possible to use a new structure of source directories. Sources associated to the different supported compilers and their includes, units resp. libraries and outputs will be stored in separate directories (see figure at the left). After a new installation, this new structure will automatically be created on starting the program for the first time, in case of an update, the existing structure from the previous version will be retained. Changing to the new structure can be performed by calling the menu item Settings ⇒ Root folder for sources ... After selection of a new root directory, the new subdirectory structure shown at the left will be created.
Already existing sources created under the previous version must be manually copied to the new folders. From inside the program, this can also be performed by using the function Save as ...

Project management

To make the software development more efficient, moving frequently-used program parts into separate modules (include files for Assembler, units for Pascal) is recommended. The project manager of Mc-Tools can save all files belonging to a software project (main file and modules) and the optionally required compiler options into a file (see below). Opening a project, saved in this way, will restore all files and settings automatically to the IDE.


Languages: English and German (additional languages possible)
Operating systems: Windows XP, Vista, 7, 8, 10 and 11

Download: Version 5.9.3 (4,35 MB) released 2019-05-17 (Release notes):

MC-Tools setup including Turbo51 and ASEM-51

Download: Version 6.3.3 (6.03 MB) released 2022-10-21 with optional integration of SDCC (Release notes):

MC-Tools setup including Turbo51 and ASEM-51

The setup contains the programs described above, the default editor settings, the Pascal compiler Turbo-51 (Vers., the Assembler ASEM-51 by W.W. Heinz, as well as modules and units for many microcontrollers of the 8051 family.

The C compiler SDCC must be downloaded and installed separately. On starting, MC51 will check if SDCC is installed on your system and will integrate it automatically into the IDE.

Installing the program

MC-Tools is distributed as an executable Windows setup file (mc-setup-5.x.yy.exe, where x.yy represents the applicable version). You can install the program into any folder on your system (default: C:\Program Files\Mc-Tools on 32-bit systems, resp. C:\Program Files(x86)\Mc-Tools on 64-bit systems). To do this, administrator rights are required. Optionally, shortcuts can be created in the Windows start menu and on the desktop.

The following directory and file structure is created beneath the installation folder:

   <Install directory>
     mc51.exe                Program
     mc51.ini                Default settings for the program
     mc51.key                Keyboard settings for the integrated editor
     mc51-asm.hlt            Preferences for syntax highlighting (Assembler)
     mc51-pas.hlt            Preferences for syntax highlighting (Pascal)  
     mc51-cco.hlt            Preferences for syntax highlighting (C compiler))
     opcodes.mco             List of 8051 opcodes for simulator
     8051.mcu                List of basic symbols for simulator
     mcprojects.exe          Project manager
     checkisp.exe            Program for checking a flash programmable Atmel microcontroller (e.g. AT89S8253)
     diffisp.exe             Program for checking for differences of flashed programs
     <locale>                Language specific files for MC-Tools (current: German)
     <Asem-51>               Directory for Assembler
       AsemW.exe             Assembler for use under Windows
       ...                   A few other programs and documentation
       <Mcu>                 Directory for include modules (see above)
         *.mcu               Include modules for the different microcontrollers
     <Turbo-51>              Directory for Pascal
       <bin>                 Pascal compiler
       <rtl>                 Runtime libraries 
       <manual>              Documentation
     <Units>                 Directory of system units
         Sys_*.pas           Units for the different microcontrollers

On starting MC-51 (MC51.EXE) the first time, all necessary settings (location of Assembler, Pascal and C compiler, etc.) will be carried out automatically by the program.

If an experimentation board is connected to the computer, the serial port used must be selected prior to the first operation:

Main menu ⇒ Settings ⇒ Terminal ⇒ Com-Port ⇒ COM1, COM2, ..

Depending on which monitor program you are using, a few more settings are required:

Main menu ⇒ Settings ⇒ Terminal ⇒ Baud rate ⇒ 1200, .. ,115200
Main menu ⇒ Settings ⇒ Terminal ⇒ Delay ⇒
Delay between two characters in ms
Delay after end of line in ms

If you are using PAULMON as monitor program, you can leave all settings at their default values (9600 baud, 0 ms and 50 ms). After powering up the experimentation board with this monitor implemented, the enter key within the terminal window must be pressed to cause the microcontroller to set itself to the chosen baud rate.

Command line options for MC-51

Having started the program via a desktop shortcut or having invoked it from another program, you can control it by setting the following command line options:

The MC-51 program will reload all files opened in the previous session.
<Source1> [<Source2>] ..
The MC-51 program will load only the specified source files.
Starts the program in terminal mode and prepares the download of the optionally specified Hex file.
If no filename is specified, the MC-51 program will start the simulator immediately after opening all active sources and loading the last program that was edited.
If an OMF or Hex filename is specified, the MC-51 program will start the simulator and load the specified binary file immediately after opening all active sources.
The user configuration is saved in the file Mc51.ini. This file is located by default in the Application Data directory of the user: Using the "ini" option you can select an alternative configuration file at any other location (e.g. E:\MyConfiguration\mc-1.ini).
/main:<main file>
Specifies the main file of the project
/project:<project name>
Specifies the name of the project
Specifies the options for the Turbo51 compiler
Specifies the options for the C compiler
Specifies the memory allocation (code and extended RAM) as hex or decimal values (only required for C programs).
Example: /memalloc:$8000;$01000;$9000;$01000
The command line options are loaded from a project file with the following structure:
    ; comment
    /project:<project name>   ; name of project
    /compiler:1                     ; Pascal
    /main:<mainfile>          ; main file of the project
    /options:-A -J -T
    <source1>                 ; other source file(s) of project

Sample programs:


Download as zip file


Download as zip file
  • Programs:
    • Simple flasher using the timer interrupt
    • Use of the serial port
    • Interrupt buffered reading of data via the serial port
    • Convert a decimal number (ASCII) to binary
    • Convert a binary number to decimal (ASCII)
    • Minimum/maximum thermometer using the LC display
  • Programs:
    • Simple flasher using the timer interrupt
    • Use of the serial port
    • Test for output data to an LC display
    • Test for input from a decimal keyboard
    • Simple thermometer
  • Several subroutines as include files:
    • Add and subtract 16 bit numbers
    • Multiply and divide 16 bit numbers
    • Square root of 16 or 32 bit numbers
    • Simple generator for random numbers
    • Interrupt buffered serial port
    • Control of an LC display
    • Routines for the I2C bus
    • Input from a decimal keyboard
  • Several subroutines as units:
    • Using the timer
    • Interrupt buffered serial port
    • Control of an LC display
    • Routines for the I2C bus
    • Input from a decimal keyboard

Experimentation board for Atmel AT89S8252/53 and AT89S51/52

For a course regularly held at the University of Kiel to teach Physics students the use and programming of microcontrollers, I developed an experimentation board that can be assembled by anyone having some experience in soldering electronic parts. The board provides connectors for several external components:

Further information:

The following documents are currently available only in German.