8051

The 8051 ("MCS-51") is an 8 bit microcontroller architecture introduced by Intel in the 70's. For all practical purposes, as old as I am.    I originally programmed the 8051 derivatives exclusively in assembly, now whenever I need to target an 8051, I generally use SDCC.
                                                               
Dynalink Logo
Creative Electronic Solutions


Unlike some (any?) other 8 bit micros, 8051/2 compatible processors are made by several different companies.

Assemblers, compilers, debuggers, etc, etc, have been around forever. Everybody's saying the ARM is the 8051 of the next century.. I think the 8051 may be the 8051 of the next century, given the fact that manuf's don't need to pay ARM a fee, and there are many special purpose apps that do not require a high-end core. If an 8051 core adds $0.20 to a part, and the ARM core adds $0.25.. guess what'll get used.

Regardless of this, I try to avoid the 8051 if there's any > 8 bit math to do at all... I've also had the frustrating experience of running out of direct addressable memory space in an app I thought I could squeeze in. NOT FUN! Even if it's possible to do something with a low end uC, it's often more efficient in programming time to use a bigger hammer.. for me that means C on the TMS2000 series parts or the Cortex M3 ARM.

I have extensive experience with the Analog Devices ADUC parts... they include good very nice A-D converters and DACs and a reference in the part. It's really sold as a A-D/DAC which includes a uC, not the other way around. Fine with me. The DAC/ADC probably take up more silicon on the part than the 8051 core.

The other really cool thing about the ADUC parts is that they'll run from one of my favorite components: 34.768kHz watch crystal. Watch xtals are dirt cheap, accurate, reliable, very low power parts! The ADUC also has the ability to keep a realtime clock going and wake up the core at long-term intervals. Nice. Did I mention they've got nice DACs on the part? Yes, you can use a PWM for a DAC.. but, that doesn't work well to observe fast changing signals. In fact, I have used an ADUC814 to do a single-period PWM-to-voltage converter a client requested.

The ADuC processors are in-system programmable using only its on-board UART. This is good... you can program it using only a serial port. ADI supplies downloading software, all for use with Windows hosted systems. To make use of the ADuC's in-system programmability from a Linux hosted tool chain, I wrote and open sourced a small utility that talks to the chips' download protocol. Karl Hiramoto added control capability of Reset and Dload over serial control lines in v0.3. If you're interested, here's the code:


aducprog-0.3.tar.gz
aducprog-0.2.tar.gz
 aducprog is released under the GNU public license.  At present, aducprog only programs ADI's parts. I might be willing to target this at other manufacturer's UART downloadable ISP uCs as well (and change the name,) or if you want to, go for it.


I have also used the Cypress EZUSB2131 in a prototype.  Slick part.  Firmware downloads right over the USB, with an application called fxload.  Then your  code takes over.  It's totally a RAM part, so there's no worrying about flash memory issues.   It also self powers off the USB.

This never got beyond prototype because USB is quite diffcult to galvanically isolate. Future instruments with the need for speed will talk over Ethernet (which is transformer isolated!)