Explore Microelectronics EPF011/021 8051 core MCU programming tools
42633fa2 — Phil Ashby 9 months ago
Create LICENCE.md
variable baud rate for console, no local echo
Example firmware added


browse  log 



You can also use your local clone with git send-email.


Explore Microelectronics EPF011/021 8051 core MCU programming tools:


A serial console that can be compiled/run on MacOS, Linux or Windows with dotnet SDK (5.x+), which also supports the EPF011/021 in-circuit programming (ICP) protocol:

dotnet build|run [-- [-b <baud>] [-a <load/dump address:0x0000>] [-w <memory write file>]]

Typical usage is to connect up via an FT232R or similar TTL serial device to UART (P7[0:1]), pull up the OP_MODE pin on the device (I got lucky, it's on a pair of pads in my HDMI switch) then: power up; press '5' to stop the stream of semi-colons; press BKSP to dump memory from the specified address or Ctrl-W to write a file to the specified address.


A folder containing example firmware for the EPF011/021, dependencies are:

  • sdcc
  • make

Build with make command, this should produce bin/hello51.bin and bin/serial.bin that are suitable to write to address 0x0000 in the device. ALWAYS BACK UP YOUR DEVIC MEMORY FIRST!


A simple blinkenlight for my HDMI switch, it toggles P6:0 pin at ~2Hz.


A serial port loopback test, it should reflect bytes as typed.


The smallest startup code ever - it declares an absolute segment VECTOR that will always be at address 0x0000, containing a jump to the C code entry() function and exports a symbol vectors to mark the start of the interrupt vector table (unpopulated).


Definition of all the special function registers (SFR) according to the EPF021A manual/user guide. This depends on the include/mcs51/compiler.h that should be in your sdcc package.


You will need a password to unpack: random