Tiny and Inexpensive Programmable Controllers for Quick Project Development By Jan Axelson (jaxelson@mailbag.com) This article is Copyright 1995 by Jan Axelson. It appeared originally in the May/June 1995 issue of The Microcomputer Journal. It's common knowledge that personal computers are constantly improving, with advances like faster microprocessors, larger and better displays, and bigger, faster, and cheaper disk storage. But developments in the computer world aren't limited to personal computers. You can also find advances in the world of embedded controllers, the invisible computers that control car engines, cameras, household appliances, video and sound systems, computer peripherals, data loggers, and all kinds of devices with computer intelligence inside. In absolute numbers, the biggest market for embedded controllers is in consumer items like cars and video equipment, but small controllers also find homes in many projects where you might need just one, two, or maybe a dozen controllers. For example, you might want to design a process controller for a small brewing system, a data logger for scientific experiments, or a security system that monitors and controls access to an area. An easy way to get going on a controller project is to buy an assembled and tested circuit board or module that has the basic system components, plus the ability to act as a development system for testing the programming and hardware that you add. To the basic circuits, you add whatever switches, displays, sensors, and other I/O devices your project needs. The development system typically includes an easy way to load your control program into memory for testing and debugging. When everything is working and your program is stored in permanent memory, the project is ready for use. Another approach is to use the module only as a prototype for basic testing of your circuits and program. From there, you can develop your product with a circuit board of your own design. Another use for these controller boards is in education, as a tool for learning about microcontrollers and computers in general. Having the basic circuits on a working board gives you a head start, and most boards are designed to allow easy experimenting. In this article, I look at products from eleven vendors. Each includes a circuit board with a microcontroller, or single-chip computer, and ports for connecting sensors, switches, displays, or whatever I/O circuits a project requires. In addition, all have the following features: Small size. Each of the boards and modules I looked at is physically small, ranging from less than a square inch to just under 13 square inches in area. The smallest boards use surface-mount components, which are much more compact than their through-hole (DIP) equivalents. I used physical size as a general, if somewhat arbitrary, way to limit the selection of products to review. The smaller boards tend to have simpler designs, though some do squeeze an extraordinary amount into a limited area. Of course, for many projects, fitting everything into a small package isn't essential. In particular, if a larger board includes a lot of the interfaces or components you need, it may be a better choice than a smaller, more limited, board where you have to add everything yourself. Easy program storage. All of the controllers I looked at store their programs and data in EEPROM, Flash EPROM, or battery-backed RAM. With all of these, you don't have to remove any chips or wait for ultraviolet (UV) erasure in order to store a program. With some of the boards, you upload an assembled or compiled program from a personal computer into memory on the controller board. Others use an interpreted programming language that allows you to store and run your programs without having to assemble or compile them first. All of the boards communicate with a personal computer via either a serial or parallel port. Low cost. Because these controllers are simple in design, they tend to be inexpensive. Prices for a complete development system, including most of what you need to get a project up and running, range from $55 to $250. Once you invest in the development system, the price of additional controller modules ranges from $29 to $120. To use these products, you'll need a personal computer with an available serial or parallel port. You may also have to provide one or more of the following: serial or parallel- port cable, power supply, and assembler or compiler software. Limits The simple design and low cost of these controllers means that there are limits to what they can do, in particular in the areas of capacity, speed, and debugging tools. Capacity. If your program is large, or if you need a lot of I/O or special features, these small controllers may not have what you need. Many 8-bit controllers can access 64 or even 128 kilobytes of external memory, but most of the products reviewed here are intended for simpler projects, and access smaller amounts of memory. Some of the controllers do not use external memory at all, but store their programs and data entirely on the microcontroller chip. Others use a serial EEPROM or another simplified memory interface. Execution speed. All of the boards use 8-bit chips - in other words, their CPUs process data just 8 bits at a time, compared to the 16, 32, or more bits that other computer chips can handle. This limitation, plus slower clock speeds, and possibly the limits of the programming language you use, means that these controllers aren't the fastest computers around, but they're still a good choice for many projects. Debugging. If you're used to programming on a personal computer with a full set of debugging tools like those provided by Codeview or QuickBASIC, these simple controllers will seem primitive. With some, all you get is the ability to load your programs into memory and run them. If you want debugging features, you have to write them into the code yourself. Controllers with on-board BASIC or Forth interpreters add some tools, such as the ability to set breakpoints, view or change memory locations or variables, and easily add or delete program lines. Learning curve. Finally, all of the boards require some investment of time in learning how to use them. The learning process includes becoming familiar with the programming language, circuits, and communications software. If you have experience with any of these, so much the better. If not, good documentation can help a lot in speeding things along. Almost all of the documentation I looked at included complete schematic diagrams. Beyond that, the amount and quality of support material varied a lot. My reviews include comments on the documentation. Major features These are some of the major features to look for on these boards: Power supply. Some boards require a 5-volt regulated power supply. Others have an on-board 5V regulator, so you can easily power them with a 9V battery, a set of 1.5V cells, or a wall-transformer type supply. Personal-computer interface. An RS-232 serial interface is the most popular way to communicate with these controllers. A few boards allow an RS-422 or RS-485 serial link, which can use cables up to 4000 feet and allow multiple devices on the link. Other controllers use a parallel-port (printer) interface. Some of the boards can use any terminal-emulation software (such as ProComm or the Windows Terminal accessory), while others provide their own software. If the board can use any terminal emulator, you're not limited to using an "IBM-compatible" computer, but can use any computer with a serial port and appropriate software. When program development is complete, you can remove the personal-computer link and the controller will run the program on its own. Or, you can keep the link and use the device as a smart peripheral controlled by a personal computer. Programming languages. The different products allow several options for programming the microcontrollers. Some have an on-board BASIC or Forth interpreter, which enables you to execute commands and write programs "on-the-fly." This is especially convenient for simpler programs where execution speed isn't critical. Another option is to write programs in assembly language. The assembler software creates an object file from your source code. You then upload the object file to the microcontroller board's memory, using your communications software and supporting firmware on the microcontroller board. If you have a C, BASIC, or other compiler for your microcontroller, you can use it instead of an assembler. Some of the interpreters allow you to combine languages by calling assembly-language routines or allowing in-line assembly code. Most assemblers for the 8051 create object files in Intel Hex format, while 'HC11 assemblers use Motorola's S-record format. Program storage. The options for program storage are EEPROM, Flash EPROM, and battery-backed, or nonvolatile, RAM. Battery-backed RAM is fast and offers an unlimited number of "erase"/write cycles. The battery may be built into the device or external to it, with a typical guaranteed backup of ten years. EEPROM and Flash EPROM require no battery, but have a limited number of guaranteed erase/write cycles, ranging from 1000 to 100,000. This should be enough for program code, but for constantly changing data (in a data logger, for example), you'll want to use battery-backed RAM, or possibly high-endurance EEPROM. EEPROM and Flash EPROM require more programming time than RAM, but this isn't critical for occasional program storing. Peripheral interfaces. All of the products have input and output (I/O) pins that enable you to connect devices such as displays, switches, and analog-to-digital and digital-to-analog converters. Most also have hardware interrupt inputs for fast response to external events. Some products have additional I/O features that are either built into the microcontroller or added on the board. Analog inputs, which make it easy to measure voltages, are a popular addition. Built-in timers can make it easy to create a signal with a particular frequency or period, or to measure frequency or period at an input. Some of the programming languages have a pulse-width-modulated (PWM) instruction that uses a timer to output a waveform with selectable high and low times and number of cycles. A real-time clock is a special timer that keeps track of hours, minutes, and seconds, and sometimes days, months, and years as well. A couple of products have built-in support for an I2C bus, which allows the controller to access up to 128 devices using a synchronous serial interface. Each device on the bus has a unique address. The Products Although many users have strong opinions about which chip or programming language is best, I made no assumptions in these areas. The selection includes products with microcontrollers from three families: Microchip's PIC, Intel's (and others') 8051, and Motorola's 68HC11, with the ability to use a variety of programming languages. The following sections summarize the features and my impressions of each. PIC Family The PIC microcontroller has become popular in part because it's inexpensive, widely available, and fast. One limitation to PICs is that its on-chip program memory is available only as UV-erasable or one-time-programmable EPROM. However, there is one PIC product that allows easy storage of user programs. Parallax: BASIC Stamp The BASIC Stamp ($39) is designed for getting simple projects up and running quickly. It's a 1.5" by 2.5" board with a BASIC interpreter in the ROM of a 16C56 PIC microcontroller. User programs are stored in a 256-byte 93LC56 serial EEPROM. The Stamp has just eight I/O pins, limited program and data storage, and no hardware interrupts. Still, for simpler projects it's is hard to beat in price and ease of use. The new BASIC Stamp I module ($29) is even tinier and cheaper, at 0.4" by 1.4" in a SIP (single in-line package). It has all of the features of the BASIC Stamp except the prototyping area and battery clips. For easy experimenting, you can plug the Stamp I module into a breadboard. You can also use your own printed-circuit board or Parallax's carrier board ($10) that adds battery clips, a reset button, and prototyping area that's actually larger than the BASIC Stamp's, all on a board the same size as the Stamp's. Another new product, which may be available now, is the BASIC Stamp II Module in a 24-pin DIP with expanded I/O and EEPROM and serial interface. To program the Stamp, you'll also need the Programming Package ($99) that includes communications and editing software, a cable, and documentation. The user manual includes a short example for each of the BASIC instructions, as well as a guide to using the software to write, load, and run your programs. You also get a set of 19 application notes with schematics, explanations, and program code. To use the Stamp, you connect a power supply or battery, plug the provided cable into a header on the BASIC Stamp board and a personal computer's parallel port, and run the provided software. You're then ready to start writing and running programs. The Stamp's BASIC language includes 46 instructions and operators, with some that are especially handy in monitoring and control programs. BUTTON is useful for monitoring a manual switch, with automatic debouncing and branching when the input is in a desired state. POT reads a potentiometer or other variable resistance using a resistor/capacitor time constant. PULSIN measures frequency at an input, and PULSOUT generates a frequency at an output. Other instructions allow you to set, clear, toggle, and read I/O bits. One nice feature of the STAMP software is automatic detecting of which parallel port you're using. This means that there's no need to remember or figure out the port address, or whether you're using LPT1, 2, or 3. Another useful item appears when you load a BASIC program into the STAMP's EEPROM. An on-screen bar graph shows you how much of the EEPROM's capacity you're using, so you get immediate feedback about how much memory a program uses, and a warning when you're nearing the limit. Related products from Parallax include a serial LCD module, a Stamp Stretcher module with more I/O, and an experiment board. 8051 Family Intel's 8051 microcontroller family includes a wide variety of chips from many manufacturers. Some of the products I looked at use one of the newer devices, while others stick with classic chips like the 8031. Allen Systems: Little Byte-51 With the Little Byte-51/52 ($49/$59), you get an 8051- compatible microcontroller, 4 or 8 kilobytes of Flash EPROM for program storage, 512 bytes of serial EEPROM, a watchdog timer/power-supply monitor, and a small prototyping area on a board 3.7 square inches in area. The microcontroller is Atmel's AT89C51. You program the Flash memory by connecting two ribbon cables from the Little Byte's headers to a PB-51/11 Programmer Board ($99) and setting DIP switches to put the Little Byte into programming mode. (When you're not programming, you can cable the Little Byte's headers to your own I/O circuits.) The Programmer Board also connects to a personal computer's parallel port. The included software enables you to program a file in binary, Intel Hex, or S-record format into the 89C51's Flash memory. You can configure the Flash memory to use either a 12V or 5V programming voltage. The Programmer Board lets you choose either option, and since it generates the 12V supply on-board, it makes sense to use the 12V mode. The Programmer Board also doubles as a general-purpose device programmer. It has solder pads for 28- and 40-pin DIPs and 44- and 52-pin PLCC's. If you install chip sockets (or buy a version with sockets installed), you can use the board to program 87C5X, 89C5X, 68HC711E9, and 27C256 chips. The Programmer Board uses the parallel port's data lines for both sending and receiving data, so a bidirectional parallel port is recommended. (You may have to first configure the port for "PS/2 mode" in your computer's CMOS setup). Traditional, non-bidirectional ports may or may not work with the board. I was able to use an older port with LSTTL chips, but two other parallel ports couldn't read data from the board. And, you might not want to risk using a non-bidirectional port in this way. The documentation is complete, with data sheets for the ICs on the Little Byte and explanations of the operation of the components. My Programmer Board's software came on a 5 1/4" disk, so be sure to request a 3 1/2" disk if you need this size. The data sheets specify that the Flash memory can endure at least 1000 erase/write cycles, while the 93LC66 EEPROM is good for at least 100,000 cycles. The specifications list 12 and 20 Mhz versions of the Little Byte for the same price, though if my board was typical, the 12-Mhz version is actually 11.059 Mhz. Blue Earth: Xplor-32 The Xplor-32 ($59.95) is the base model of a series of controllers that run Blue Earth's TB52 BASIC interpreter on an 80C32. A starter package ($99.95) includes an Xplor-32, user manual and applications disk, serial cable, power supply, and an interface module with a serial connector, screw terminals for I/O, power supply jack, and X-10 connector. Or, you can buy just the components you need from the package. On the base model, you can access the I/O lines via a patch area, which is similar to a solderless breadboard and makes it easy to connect jumper wires or other components to the ports. You can also jumper the I/O lines to a D-sub connector that plugs directly into the interface module. The BASIC interpreter has 39 commands, functions, and operators. BIT enables you to set, clear, or read individual bits in internal data memory, including I/O ports. FREQ measures input frequencies up to 56.5 kilohertz. For controlling lighting and other devices, there is a built-in routine that automatically sends X-10 codes using the house and unit codes that your program specifies. The XPLOR uses a Xicor X88C64 EEPROM to store the BASIC interpreter (4K) and user programs (4K). The EEPROM connects directly to the 80C32's data/address bus (AD0-AD7, A8-A13). The A13 line acts as the chip-select, and the EEPROM latches the lower address byte, so there's no need for an external address latch. A block-protect feature of the EEPROM prevents you from overwriting the BASIC interpreter. You communicate with the board over a serial interface, using your own terminal-emulation software. The manual includes instructions for using Procomm and the Windows Terminal accessory, but you can use any software you prefer. The documentation includes detailed explanations of each of the BASIC instructions. The BASIC interpreter's source code is also available, if you want to build on or customize the language. The -32a ($79.95) version includes an 11-channel, 10- bit analog-to-digital converter. The -32d ($79.95) adds 24 I/O lines to the standard 12. The -32c ($89.95) has screw terminals for the I/O connections, a power-supply jack, serial-port connector, and enclosure. Blue Earth also sells a variety of related products, including sensors and programming tools. EE Systems: DSPlug Dallas Semiconductor's DS2250T contains almost all of the elements of an 8051-compatible controller mounted on a 40-pin SIMM. The DSPlug ($120) includes a DS2250T along with a circuit board with a socket for the SIMM, an RS-232 interface, crystal, program/run switch, serial-interface header and cable, and wire-wrap pins for I/O access. The DS2250T has 32 kilobytes of battery-backed RAM that you can use for storing programs or data. The amount reserved for each is adjustable by programming a partition on the chip. The RAM is separate from the microcontroller chip (a Dallas DS5000FP), but uses a special bus interface that leaves all four I/O ports available for other uses. There's also a DS1214 real-time clock that stores time and calendar information. The chip has a program-load mode that accepts Intel Hex files over a serial link and stores them in program memory. The DSPlug comes with Dallas' KIT5K software on disk, which enables you to use the bootstrap loader to store a program in RAM. Other functions of the software include setting the data/program partition, reading RAM into a file, listing RAM contents in debug format, viewing and changing bytes in RAM, and enabling security features. The user interface of the Dallas software isn't too elegant - if you type something it doesn't understand, the response is a rude "huh?" Documentation for the DSBlock is on disk. You don't get a schematic, just a list of the functions for the wire-wrap pins and serial connector. The DSPlug board is simple enough that you really don't need a schematic, but it would be handy to have a pinout of the board's DS1275 RS-232 transceiver chip. The disk includes some information about the DS2250, but you'll want to get Dallas' databook for the complete story. You also get an example program and instructions for loading it into the DS2250 and a freeware version of PseudoCorp's 8051 assembler. Iota Systems: SC-75 The SC-75 uses Signetics/Philips' 87C752, which is an 8052-compatible microcontroller with five analog inputs, a pulse-width-modulated output, and built-in support for an I2C bus. Several configurations of the board are available. For $109, you get an on-chip BASIC-752 programming language, an I2C bus with 8 kilobytes of EEPROM, 21 I/O pins, clock functions, a keypad, LCD module, and other peripherals on a serial interface. The EEPROM is Microchip's 24C65, which includes 512 bytes of ultra-high-endurance memory that can withstand 1 million erase/write cycles. The remaining 7.5 kilobytes is rated at 10,000 cycles. The board includes four 8-pin I2C sockets. The EEPROM and clock chip each use one of these. You can add other components in the 1.5" x 2.5" prototyping area, or you can daisy-chain additional I2C interfaces on the provided cable. To write and store programs on the board, you need additional hardware and software, all available from Iota. The SC-75 BASIC-752 package ($250) includes an SC-75 board with 8K of EEPROM, an I2C-bus-to-parallel adapter, I2C-bus ribbon cable, clock chip, and development software. The adapter enables the SC-75 to communicate with a personal computer. It connects to the SC-75's I2C bus and to a personal computer's parallel port. You'll also need a 25- pin male-to-female DB-25 cable to connect to the parallel port. (A 9-wire serial cable won't do.) The BASIC-752 language has 58 instructions and operators, including commands for accessing the I2C bus and analog inputs and bit-control operators for reading and writing to individual port bits. Direction-control variables protect ports 1 and 3 by preventing you from writing zero to a bit when it's configured as an input. BASIC-752 isn't as interactive as the BASICs on other boards. Using it is more like using a compiled language than an interpreter. For example, there is no command mode for entering and immediately executing commands. Also, writing and running a program involves several steps. First, you write a program using a text editor and save it to disk. Next you run a tokenizer program that translates the BASIC statements into a series of tokens, or abbreviated codes. You then use Iota's software or any terminal-emulation program to send the token file to the SC- 75's EEPROM. On bootup, the BASIC interpreter then runs the program automatically by reading the stored tokens and translating them into a series of machine codes to execute. The language doesn't have a PRINT instruction, so there's no simple way to view variables or memory locations on screen while a program runs. However, what you do get is BASSIM, a program that uses a personal computer to simulate the running of your BASIC- 752 programs. With the simulator, you can test and debug your software before you upload it to the SC-75 board. The simulator lets you view and change port values including the analog ports and I2C bus, enable interrupts and the timer, view the stack, set and display watch variables, and set breakpoints. You can load and run a program at full speed, in slow motion, or by single- stepping. The simulator and Iota's development software require a '386 or higher computer. The SC-75 has complete documentation, including data sheets and the specification for the I2C bus. Iota also sells some of those hard-to-find I2C components, including analog and digital I/O chips and keypad and LCD interfaces. LS Electronic Systems Design: EMC32F The EMC32F ($80) is an 8031 microcontroller with 40 kilobytes of Flash EPROM and 8 kilobytes of RAM. Another 8K of Flash EPROM stores a monitor program and Flash memory manager, for viewing and changing memory, running programs, loading Intel Hex files into RAM, and programming Intel Hex files into the Flash EPROM. You can use the monitor program with the provided Kermit terminal emulator or your own software. Cables are available for the serial connector (RJ-11 to DB25, $8) and power (Molex to stripped, tinned wire ends, $4). Programming the Flash EPROM requires an additional 12V power supply. To store a program, you select the Flash Memory Manager in the monitor program, then select Program, and use your terminal emulator to upload your file to the board. The monitor program takes care of the programming details. The Flash EPROM is a 28F001BX, which actually is a 128K device, though much of it is unused on this board. Since the 8031 can access just 64K of read/write memory, the 128K is divided into two pages. Page 0 contains the monitor program and user-program storage. The remaining 16K in the memory area is used by RAM and I/O, so it's not accessible in the Flash EPROM. Page 1 contains another 64K. However, the monitor program can't access this page, so there's no convenient way to program it or perform the other monitor functions. Still, the available 40K is plenty for many applications. The memory can endure at least 10,000 erase/write cycles. You get a printed schematic and an excellent 47-page manual on disk. The manual includes startup instructions, hardware and software details, good explanations of the circuit design, and even some tips on how to write and develop programs. The disk also contains source code for the monitor program, which is also well documented, so you can study the code and even change and reassemble it if you wish. A variety of application notes with source code and schematics are available. You can also buy the board in kit form ($60) and solder the components yourself. Micromint: Domino-52 The Domino-52 ($79) is an 80C52-BASIC system in a 1.1" by 1.75" package. Inside the Domino are an 80C32 microcontroller and 32 kilobytes each of EEPROM and RAM. All of the chips and other components are hidden inside the Domino's potted package, which seals the circuits in a pool of epoxy poured into a case that's about the size of a domino. You connect to the circuits via a 20-pin header that includes pins for an external +5V supply, 14 I/O bits, and an RS-232, -422, or -485 link. For easy reference, the pin functions are labeled on the package. An alternate version ($99) replaces two of the digital I/O bits with 12-bit analog inputs. To program the Domino, you need a 3-wire serial cable and a way to connect its wires to the 20-pin header. I soldered three short wires to a female DB-25 solder-cup connector, plugged it into my serial cable's male connector, and jumpered the wires to the Domino's header. Not elegant, but functional. An optional development board ($19) brings the Domino's header pins out to screw terminals. The RS-232 interface actually transmits at 5V and 0V levels instead of RS-232's positive and negative voltages, but most RS-232 ports will communicate with it without problems, if you keep the cable short. If you add a MAX232 chip for true RS-232 levels, remember that the MAX232's level shifters are also inverters, so you'll have to reinvert the signals. When you have the serial link connected, the Domino is very much like any system that runs the popular BASIC-52 interpreter. The 97 commands, instructions, and operators are virtually identical to BASIC-52's instruction set, including floating-point math. The Domino has six assembly-language utility routines that you can call from your BASIC programs. A PWM utility replaces and enhances BASIC-52's PWM instruction. Other utilities read the ADC inputs, measure frequency or period, access an I2C interface, and store programs in EEPROM. Unlike BASIC-52's PROG commands, the programming utility can store just one program at a time - storing a program erases the previous one. The utilities aren't part of BASIC-52, so you have to use non-intuitive statements like CALL 0F000H to run them (instead of ADC, for example). A package of development tools ($99) includes Host-52 communications software, a BASIC-52 programming manual, and a backup copy of the utility routines on disk. If you use your own terminal emulator, you can get by with just the BASIC-52 Programming Manual ($15), which brings the price of a start-up system to $94 or $114, depending on the Domino version. 68HC11 Family Motorola's 68HC11 is a popular choice for tiny controllers because the chip has its own bootloader software that automatically loads a program received at the serial port into RAM. You can use the bootloader to load a small program (such as PCBUG11, available from Motorola's BBS) that in turn receives another program at the serial port and stores it in an 'HC11's on-chip EEPROM. All of the boards I looked at use this method to load programs. Most 'HC11 versions have 38 port pins in addition to a serial port, so there's plenty of I/O available. Eight of the bits can be configured as analog inputs. CGN: CGN1001-232 CGN's wire-wrap modules provide the basics of an 'HC11 circuit on a compact circuit board. On the CGN1001-32 ($45), you get a 68HC811E2 with 2 kilobytes of EEPROM, an oscillator, reset circuit (but no reset switch), mode-select jumper, RS-232 interface, and power-supply bypass capacitors. All 52 of the 'HC11's connections are brought out to wire-wrap headers in the same rectangular format of the PLCC chip. The RS-232 interface is also brought out to wire-wrap pins. The CGN1101-232 ($55) uses two ports as data and address buses, to allow the 'HC11 to run in expanded multiplex mode. To use these boards, you connect the RS-232 interface to a personal computer and use CGN's software ($10) or Motorola's freeware to load your assembled program into the 'HC11's EEPROM. The documentation consists only of a schematic and a 1- page explanation and illustration of how to use the board, plus a handy printed wire-wrap I.D. sheet that fits over the pins on the solder side of the board. If you're already familiar with the 'HC11, these modules are a quick and convenient way to get a project started. You can also buy the boards without the 'HC11 chip installed for $20 less, and versions without an RS-232 interface are also available. LDG Electronics: LDG-SBC-2 LDG's SBC-2 ($59.95) is a basic board with 512 bytes of EEPROM in a 68HC11A1 chip. If you need more program memory, the -E2 version ($79.95) has 2048 bytes of EEPROM. The new SBC-8K adds 8 kilobytes of program memory in a Xicor X68HC75 EEPROM. The boards have an RS-232 interface and solder pads for accessing I/O. A disk contains BASICA and QBASIC programs that load files in S-record format from your computer into the EEPROM. You also get Motorola's freeware assembler and some simple but useful example programs. The documentation includes a printed reference for the assembler, basic instructions for using the board, some detail about the hardware and software, plus Motorola's HC11 Reference Manual and Programming Reference Guide. New Micros: NMIN-0021A/0121A/0121 I looked at three New Micros boards, each with an on- chip MaxForth interpreter. Forth has always has a dedicated following, though it's never been as popular as BASIC or C. With New Micros' MAXDDE software, you can also access these boards using Visual BASIC and other Windows programs, though you will still need some familiarity with Forth. The Forth language begins with a dictionary of defined words, which are somewhat like BASIC's reserved words. MaxForth has 311 words. You write a Forth program by building phrases from these words, and defining new words that are then added to the dictionary. A final word names the program, which you run by typing its name. If you prefer assembly language, MaxForth allows in-line assembly code, so you can get by with a minimum of Forth programming if you wish. MaxForth has two modes that are similar to BASIC-52's command mode for immediate executing and run mode for entering program lines. The MAXForth interpreter is programmed into the 'HC11's ROM. You communicate with the boards over a serial link, using any terminal emulator. For storage of your Forth programs, you're limited to the 'HC11FN's 512 bytes of EEPROM. The NMIN-0021A ($60) has solder pads for a 9V AC power supply, or you can connect a 9V unregulated or 5V regulated supply. The NMIN-0121A ($60) can use a 9V DC or 5V regulated DC supply. This board also has the ability to run without a conventional power supply at all. Through ingenious use of a 555 timer, a MAX231 RS-232 interface, and a voltage regulator, the -0121A's circuits can take their power from the RXD, DTR, RTS inputs on the RS-232 port. The circuits can "steal" around 20 milliamperes, which is enough to power the board with some to spare for additional low-power components. This makes it easy to place a controller on a serial link without having to worry about providing power to it. The NMIN-0121A uses through-hole components and has solder pads in addition to a header for I/O connections. The NMIN-0121 ($75) is a smaller surface-mount version without the solder pads. The new NMIN-0022A will support an RS-422 or RS-485 interface. The documentation for the boards seemed complete, though I sometimes found it hard to find what I was looking for. There is some documentation of MaxForth, but you'll also want the complete manual, which adds $30 (printed) or $10 (disk) to the price of a start-up system. MAXDDE and EasyA are tools (available separately) that you can use to program the MaxForth boards from Visual BASIC or another Windows program that supports DDE (dynamic data exchange). The 'HC11 board runs the Forth program EasyA, which implements an EasyA protocol, or set of rules, for serial communications. MAXDDE acts as a DDE server that controls the exchange of information over the EasyA link. Your Visual BASIC program accesses the microcontroller by reading and writing to MAXDDE. EasyA includes code for monitoring four analog inputs, monitoring and debouncing four digital inputs, and writing to four outputs. You can use EasyA as-is, or modify it to suit your application. Included with MAXDDE is an example Visual BASIC program with a display of gauges, simulated LEDs, and switches that display and control the states of port bits. Technological Arts: Adapt-11 The Adapt-11 ($69.90) is designed to make it easy to add and test I/O circuits on a solderless breadboard. The board's power and I/O connections are brought out to two rows of 25 pins spaced 0.3" apart, which plug directly into the parallel rows of sockets in a breadboard. If you like to experiment, this board makes it easy to add and remove components. The board's 68HC811E2 has 2 kilobytes of EEPROM, which ships with a handy test program already stored. The program allows you to view and change port bits and generally verify that the board is working. With the board, you also get a disk with Motorola's freeware assembler, a file loader, and demo program. There is some documentation on how to use the software to load programs into EEPROM, but familiarity with the 'HC11 and its bootloader mode will help a lot. A complete package with the board, serial cable, disk, and Motorola's Applications Handbook and Programming Reference Guide is $74.95. With the addition of a 12V programming voltage, you can use the same board to program the -E9 version of the chip, which has 12K of EPROM. Moving on You can reach me on internet at jaxelson@mailbag.com. Comments, suggestions, etc. are welcome. Sources Allen Systems 2346 Brandon Rd. Columbus, OH 43221 614-488-7122 Blue Earth Research 165 West Lind Ct. Mankato, MN 56001 507-387-4001 CGN Company 1000 Chula Vista Terrace Sunnyvale, CA 94086 408-720-1814 EE Systems 50935 Hill Drive Elkhart, IN 46514 219-296-1754 Iota Systems POB 8987 Incline Village, NV 89452-8987 702-831-6302 LDG Electronics 1445 Parran Rd. St. Leonard, MD 20685 410-586-2177 L.S. Electronic Systems Design 2280 Camilla Rd. Mississauga, ON L5A 2J8 Canada 905-277-4893 Micromint 4 Park St. Vernon, CT 06066 203-871-6170 New Micros 1601 Chalk Hill Rd. Dallas, TX 75212 214-339-2204 Parallax 3805 Atherton Rd. Rocklin, CA 95765 916-624-8333 Technological Arts Suite 1704 1644 Bayview Ave. Toronto, Ontario M4G-3C2 Canada 416-963-8996