Software Tools for Electronic and Robotic Hobbyists

This site is oriented to providing pointers to software that can help with the development of micro controller software. The software referenced here is all either freeware, shareware, or demo software so it can be tried with out investing money. Where possible I've included a link to the site where you can get the latest version rather than a direct download of a possibly stale version. All CPU software development tools mentioned here will be for 16-bit or 8-bit micro controllers since there are plenty of Unix and Windows based tools for most 32-bit CPUs.

The most important development tool you will need to develop software for a micro controllers is an assembler. For the beginner, an assembler takes a text source file and converts it into bytes of machine code. Other helpful tools include compilers that take a more human readable text source and converts it to assembly or machine code and debuggers which allow you to simulate the execution of the machine code you've created. The links below will help you find what you're looking for.

For an example of a project where I'm using some of these tools, click here.

Return to home page Sign guest book View guest book

Email suggestions for inclusion to RJKuhn_2000@yahoo.com

Last modified: 24 December 2003 by R. J. Kuhn


Controllers or Processors

Some common micro controllers or micro processors are described below. A common question is "what micro controller should I use...?" My advice would be to choose a chip that has a full set of development tools if your strength is electronics and a chip that has all the hardware you need built in if your strength is software.

    8080 / 8085 (Intel - 1974)

The great grand dad of them all, the first micro processor or micro controller. Although very dated and very kludgey in wiring, there is a wide range of software and tools for them. This includes most CP/M software. Any work done today would probably be on its successor. See the Z80 below.

The 8080 has a Von-Neuman architecture in which instructions and data share the same space addressed by 16-bits. However, like the later 8086 series, I/0 has its own address space. The accumulator is 8-bits, but some operations can be done on 16-bits.

A radiation hardened 80C85 was used on the Sojourner rover that flew with the Mars Pathfinder space craft.

  • Download ASM80 by Frank A. Vorstenbosch - 8080,8085,Z80 assembly
  • Link to Telemark Assembler by Thomas N. Anderson - various assemblers
  •     Z80 (Zilog - 1976)

    Grand dad's brother. Capable or executing the same binary code as the 8080/8085, but the Z80 has a lot of additional instructions and addressing modes. The Z80 isn't nearly as kludgey as the 8080 when it comes to wiring one up. Although very dated it is still very popular due to its very low cost, availability, and wide range of development tools. This includes all CP/M software. This chip was used in most Tandy TRS-80 home computer models and the Timex/Sinclair home computers as well as others.

    The Z80 has a similar architecture to the 8080/8085 with code and data sharing the same 16-bit address space but with a seperate address space for I/0. The accumulator is 8-bits, but some operations can be done on 16-bits.

  • Download ASM80 by Frank A. Vorstenbosch - 8080,8085,Z80 assembly
  • Link to Telemark Assembler by Thomas N. Anderson - various assemblers
  • Link to Zilog
  •     HD64180 (Hitachi)

    Included for completeness. Similar to the Z80, but with additional features.

        8048 (Intel)

    One of the oldest micro controllers with on chip memory. Dated and a bit kludgey in design, it is very low cost.

    The 8048 has a Harvard architecture with program ROM on chip with an additional 64 to 256 bytes of data RAM also on chip. I/O is mapped in its own space.

  • Download EPASM by Joseph Hora - 8048,8049,8050 assembly
  • Download ASM48 by Frank A. Vorstenbosch - 8048,8049,8050 assembly
  • Link to Telemark Assembler by Thomas N. Anderson - various assemblers
  •     8051 (Intel and others)

    The 8051, Intel's second generation of micro controllers. Although featuring a some what unique design than other processors, it is a very popular chip. A lot of software is available for the 8051 line. Many manufacturers supply what must be a hundred different variants of this chip for any requirement.

    The 8051 has a Harvard architecture with separate address spaces for program memory and data memory. The program memory can be up to 64K. The lower portion (4K or 8K depending on type) may reside on chip. The 8051 can address up to 64K of external data memory, and is accessed only by indirect addressing. The 8051 has 128 bytes (256 bytes for the 8052) of on-chip data RAM, plus a number of special function registers (SFRs). I/O is mapped in its own space.

  • Link to Telemark Assembler by Thomas N. Anderson - various assemblers
  • Link to Intel
  •     TMS 370 (Texas Instruments)

    Included for completeness. Similar to the 8051, but with two accumulators.

        8096 / 80196 (Intel)

    The third generation of Intel micro controllers, the 80c196 is a 16 bit processor. Don't confuse it with the 8086 line of chips common in desktop PCs. This is a completely different chip. It is also a very powerful chip with a lot of hardware built in.

    The 8096 has a Von-Neuman architecture in which instructions and data share the same space addressed by 16-bits. Among the many features it includes of the 8096 are high speed I/O, A/D, serial communications channel, up to 40 I/O ports, 8 source priority interrupt controller, PWM generator, and watchdog timer. The accumulator is 16-bits.

  • Download ASM96 by Bill E. Bailey - 80x96 assembly
  • Link to Intel
  •     6800 / 6801 / 6802 / 6803 / 6808 (Motorola - 1974)

    The great grand mother of them all, the main competitor in the days of the 8080 micro controller. Although very dated, the basic design lives on in later 68 hundred series processors from Motorola. It's quite often possible to assemble code written for a 6800 to run on later 68 hundred processors. It's even possible to execute some code built for a 6800 on later 68 hundred processors since most have super sets of the 6800 instruction set. Variants of this chip were (and maybe still are) used in most GM automotive computers that control fuel injection.

    The 6800 has a Von-Neuman architecture in which instructions and data share the same space and I/0 is memory mapped all in the same 16-bit address space. There are two 8-bit accumulators, and some operations can be done on 16-bits.

  • Download ASM02 by Frank A. Vorstenbosch - 6800,6801,6802,6803 assembly
  • Link to Telemark Assembler by Thomas N. Anderson - various assemblers
  • Link to Motorola
  •     6805 (Motorola)

    The 6805 is based loosely on the manufacturer's earlier 6800, with some similarities to the 6502.

    It has a Von-Neuman architecture in which instructions, data, and I/O all share the same space. Stack pointer is 5 bits wide which limits the stack to 32 bytes deep. Some members of this family include on chip A/D, PLL frequency synthesizer, and serial I/O.

  • Download ASM05 by Frank A. Vorstenbosch - 6805 assembly
  • Link to Telemark Assembler by Thomas N. Anderson - various assemblers
  •     6809 (Motorola - 1977)

    The 6809 is based loosely on the manufacturer's earlier 6800, with an additional index register and additional stack register. This chip was used in the Tandy Color Computer home compuer.

    It has a Von-Neuman architecture in which instructions, data, and I/O all share the same space.

  • Download ASM09 by Frank A. Vorstenbosch - 6809 assembly
  •     6811 (Motorola)

    The popular 68hc11 is a powerful 8-bit data, 16-bit address micro controller from Motorola with an instruction set that is similar to the older 68 hundred parts (6800, 6805, 6809). This is a very powerful chip with a lot of hardware built in.

    The 68hc11 has a Von-Neuman architecture in which instructions, data, and I/O all share the same memory space addressed with 16-bits. Depending on the variety, the 68hc11 has built-in EEPROM, RAM, digital I/O, timers, A/D converter, PWM generator, pulse accumulator, and synchronous and ansynchronous communications channels. There are two 8-bit accumulators, and some operations can be done on the 16-bit pair of these two accumulators.

  • Link to Motorola asmhc11 - 68HC11 assembly
  • Link to asmhc11 - 68HC11 assembly
  • Link to Motorola as12- 6812 assembly
  • Link to as12 - 6812 assembly
  • Link to Motorola
  •     6502 / 6507 / 6510 / 65c02 / 65802 (MOS Technology - 1975)

    Cheaper than the 8080 or 6800 when introduced, this is the processor that ended up in a number of home compilers. Chips from this family were used in Apple II, Commodore 64/128/Vic20, and Atari 400/800/1200 home computers and Atari 2600 and and Nintendo NES game machines. Although dated, the basic design lived on in the later 65816 from Western Design Centers which was used in the Nintendo Super NES game machine. Since the 6502 ended up in so many inexpesive home computers its quite often the first processor a lot of assembly programmers learned to write code for.

    The 6502 has a Von-Neuman architecture in which instructions and data share the same space and I/0 is memory mapped. There is just one 8-bit accumulator. The 6510, found in Commodore 64 computers, has a built in I/O port.

  • Link to MAS65 by Douglas Beattie Jr. - 65x02 assembly
  • Download CASM by Peter Gonzalez - 65x02 assembly
  • Download SVASM02 by John Michne - 65x02 assembly
  • Download ASM65 by Frank A. Vorstenbosch - 65x02 assembly
  • Link to Telemark Assembler by Thomas N. Anderson - various assemblers
  •     PIC12* / PIC14* / PIC16* / PIC17* (MicroChip - 1975)

    The PIC series are 8 bit processors and are becoming very popular. The PIC series have Harvard architectures and are RISC like. PIC processors typically have between 128 and 512 bytes of data RAM on chip addressed directly as 128 byte banks or through indirect addressing. However, unlike other processors, the PIC series can not easily address a full 64K of external data memory.

  • Link to Microchip
  •     1802 (RCA - 1974)

    The successor to the 1801 which was the first microprocessor implemented in CMOS. The 1802 could be considered a RISC processor. Since it is radiation hard, it was often used on space craft including Viking, Voyager, and Galileo. The Voyager space craft had two sets of three 1802 processors.

  • Link to Intersil
  •     TMS 9900 (Texas Instruments)

    Included for completeness. This chip was used in the TI99 home computer.


    Assemblers

    Assemblers for 8 and 16-bit CPUs


    Compilers

    Compilers for 8 and 16-bit CPUs


    Debuggers

    Debuggers for 8 and 16-bit CPUs


    various language compilers for 8096

    Sorry, I don't actually have any compilers for 80x96 CPUs other than KPC (see below). However, I thought I would share this with anyone who is interested. While the 80x96 is not code compatible with x86 CPUs, by taking advantage of the large 80x96 general purpose register space and with other modifications you can modify x86 assembly code to work with 80x96 assemblers. Thus, you can use most 16-bit x86 (i.e. DOS or 16-bit Windows but not Win32 or Unix) compilers to generate asm files that you then need to modify. The modifications include adding the following definitions to the top of the assembly file:

    After adding this you will need to fix up a number of things in the x86 that aren't supported in the 80x96 assembly. This isn't easy, but it can be done. Since 16-bit x86 compilers such as Turbo C, Microsoft C, Turbo Pascal, etc. are quite often easy to find in used book stores and swap meets, this provides an inexpensive means of generating code for an 80x96.


    KPC - K Pascal Compiler

    KPC (K Pascal Compiler) are 8096, 6811, and 6502 Pascal Compilers that might be helpful to the hobbyist who wishes to generate code for an 80x96, 68HC11, or 65x02 architect CPU. The current implementation only supports a very limited subset of the Pascal language. The grammar for the compiler is based on the grammar presented in the back of the book "Compilers" by Aho, Sethi, and Ullman (the dragon book). However, I have not yet implemented all of this grammar. The compiler does not support strings, constants, or structures. The compiler should generate correct code for integer ASSIGNMENT, IF, and WHILE statements.

    This is a preliminary release so if you do find any bugs, please let me know. The previous update fixes bugs in the code generated for relational operators.

    The version 0.81 update adds support for a -S command line option that allows initialization of the stack pointer, and this update fixes bugs related to parameter and local variable access in the 6811 version.

    The version 0.82 update adds support for repeat and until keywords and recognition of implementation, interface, unit, and uses keywords. If you do find any additional bugs, please let me know.

    Download 96KPC10.ZIP
    Download 11KPC10.ZIP
    Download 02KPC10.ZIP

    If you use any of these tools on a regular basis you are encouraged to register them. With a full registration you will receive the next version of the software when it becomes available.

    Email bug reports and feedback to RJKuhn_2000@yahoo.com


    DebugCPU - Simulated Debug CPUs for 8096 and 6811

    DebugCPUs (Debug CPU) are simulated 8096 and 6811 CPU Debuggers that might be helpful to the hobbyist who wishes to develop and debug code for an 80x96 of 68HC11 CPU. The current implementation supports commands similarly to those in DOS debug.

    The version 1.1 DebugCPUs include a simple unassembler feature in the Windows version that will show you the opcode for the location you are at and the bytes that make up that instruction when you type 'u' in the command window. There are also a number of bug fixes to the simulation of instructions in the 6811 debugger. There were no bug fixes to the 8096 debugger since it seems pretty robust.

    The version 1.11 DebugCPUs include a 'b' command that allows you to dump the breakpoints that are set. There is also an additional bug fix to the simulation of instructions involving the carry flag in the 6811 debugger. If you do find any additional bugs, please let me know.

    The most recent update fixes bugs related to incorrect simulation of the subd instruction in the 6811 version.

    Download 96Dbg11.ZIP
    Download 11Dbg11.ZIP

    If you use any of these tools on a regular basis you are encouraged to register them. With a full registration you will receive the next version of the software when it becomes available.

    Email bug reports and feedback to RJKuhn_2000@yahoo.com

    1