8051 programming Say hello to the most ubiquitous microcontroller in the world. The MCS-51 is probably the best known microcontroller out there. It seems to appear in the least expected places nowadays, like a BLE stack or other stuff like that. The 8051 (which is just another, one of probably 50, names for the MCS-51) has defined the form and programming interface of modern microcontrollers. The idea of SFRs - special function registers - memory addresses which do not act as general purpose RAM but configuration registers for peripherals, are found in almost all other kinds of microcontrollers. The 8051 can be easily programmed under *nix with SDCC and a bit of patience. Below is some example code that will blink a led on any pins of port 1 (TXT) Source code (TXT) Makefile These should be self explanatory, P1 is the IO Port 1 register. Writes set outputs, reads load inputs. The makefile is also dead simple. After the makefile creates the intel hex file with the code, you need to somehow upload it to the microcontroller. If you have a programmer then you are good to go.. you can either program the microcontroller directly (if it has programmable flash/eeprom memory), or you can wire an external eeprom to the 8051. In the latter case remember to ground the /EA pin. You will also want to feed a clock signal to the 8051, the easiest is to feed a square-ish clock signal directly XTAL1 pin, for example from a 4 pin crystal oscillator. My code runs nicely at 3-ish MHz. The delays are more less calculated, you only have to adjust the constant. The magic numbers in the delays are cycle counts, so if they are still off, you might want to take a look at what assembly sdcc came up with... remember 8051 takes 12clks for almost anything, 24clks for branches (taken or not taken). That's all. I hope I sparked your interetest in 8051, even though it's a finnicky processor. Now maybe I'll move on to MCS-48 as I have a mysterious board with one of those ;)