Working with Stamps and PICs

copyright, Peter H. Anderson, Georgetown County, SC, Mar, '98

Introduction.

Many have asked me, "Should I get started with the Parallax Basic Stamps or with PICs".

There is no simple single paragraph answer. People are working at different experience levels and they have different goals and it becomes all the more complex with the availability of numerous development products. For the newcomer, getting started can be one very confusing and expensive experience.

This discussion deals with such items as the Parallax Basic Stamps 1 and 2, Versatech's TIC62, Micro Engineering Labs PIC Basic, Micromint's Pic Stic and other approaches to using the Microchip PIC in embedded processor control. The intent is to aid the newcomer to the area of embedded processor control in appreciating the strengths and weaknesses of various products and how many fit together in realizing a development environment for PIC based designs.

Note that this is a noncommercial site. My students develop educational materials and products which aid other people in tinkering and this has proven a nice platform in enhancing their education and raising their self esteem all the while helping many others beyond Morgan. The results of these efforts are this Web site, a number of books and a number of products. I can't afford to give these away and thus we do sell books and products. In the spirit of helping others, we attempt to do this inexpensively and any meager profits are used to fund new developments.

Clearly, if these sell well, I am pleased as there is a satisfaction in creating and seeing the fruits used by others. However, if they don't, my financial position in life doesn't change.

This is a good vantage point as it affords me the ability to honestly appraise products and publicly note "buy this" or "don't buy that".

Thus, in the following I have attempted to be up front and frank. We have been down many roads and spent a great deal of money. Some turned out to be dead ends, while others proved quite valuable. The intent is to provide some guidance in helping you down the right road.

The Parallax Basic Stamp 2.

Frankly, my feeling is that every enthusiast in the area of embedded processor control should have a Basic Stamp 2.

These are universally $49.00 from Jameco, Digikey and Parallax and a number of other sources throughout the world.

For those on a tight budget, or for those of us who must have many Stamps, we offer a homebrew kit consisting of the EEPROM, 20MHz ceramic resonator, MAX232 and a few discrete components for $7.00 ($5.00 for each additional). You can order the Basic Stamp 2 Interpreter IC in a 28-pin DIP from Parallax for $25 ($20 each for five).

Parallax offers a Basic Stamp 2 Starter Kit for $149. This includes the development software, a manual, a serial cable and a small carrier board. Save the money. Both the software and the manual are available from the Parallax web site, you can easily make up a serial cable and the carrier board is close to useless for the enthusiast who desires to experiment. The Basic Stamp 2 module is a 24 pin DIP and I suggest you invest in a solderless breadboard that will allow you to prototype project after project.

The manual is also available in printed form from Radio Shack for $35.00.

Parallax also offers a Basic Stamp Activity Board for $79. This consists of simply four LEDs, four pushbutton switches, a speaker, a potentiometer and two eight pin sockets to accommodate various ICs. It is very poorly documented and you are bound to be disappointed.

Here again, invest in a solderless breadboard. Al Williams at http:// www.al-williams.com

offers a bread boarding system including a number of components. We also offer Starter Packages which I feel are superior. But, whether you go with Al's system, our's or go out and buy a breadboard, some LEDs and switches, you will be far ahead in prototyping your own

circuits.

Why Not the Basic Stamp 1.

Electronics dealers continue to advertise the Basic Stamp 1 right along with the Basic Stamp 2 and my concern is that many hobbyists mistakenly get sidetracked toward the Basic Stamp 1. This is exacerbated by Radio Shack offering a Basic Stamp 1 package which includes the Stamp 1, software and manual.

The Basic Stamp 2 has eight times the memory, twice the I/O, a far more powerful instruction set and a far more powerful development software package. My students were forever running out of program memory on anything but the most simple of programs.

For example, I had two students who attempted to interface a Stamp 1 directly with an LCD and display my name and amateur call sign. This is not a complex program and yet it required a great deal of time and effort for them to cram the program into the 256 bytes available on the Stamp 1 and there was no remaining programming memory to do anything else.

There is no doubt that in many applications, the Basic Stamp 1 will do the job. However, if you are an enthusiast intending to tinker with many projects, avoid the aggravation and go with the Basic Stamp 2.

Parallax has one clever feature associated with the Basic Stamp 1. Once you have your program working, you can very simply burn the program into a PIC16C57 for production. However, this requires that you have a $199 Parallax PIC programmer and there are far less expensive and more robust programmers which are discussed below. This may have been clever at one time, but with the advent of the PIC16F84 which may be erased and reprogrammed again and again, in my mind this ceases to be a strong selling point.

Why the Basic Stamp 2 is Important to Developers.

My initial statement was the thought that every embedded processor control enthusiast would benefit from having one or two Basic Stamps for use in the development of projects.

Consider an example.

We are currently developing an inexpensive PIC based weather kit capable of measuring two temperatures, barometric pressure and relative humidity. This will have a two serial interfaces, one for interfacing with a PC or Stamp and another for local display on our PIC-n-LCD serial LCD.

The nature of the Stamp is such that one can quickly develop, debug and test such modules as interfacing the pressure sensor with a 12-bit A/D converter and interfacing a capacitor that changes as a function of humidity with a 555 free running clock. All of this involves calculations which may be quickly programmed using the Stamp.

Barometric pressure is a function of absolute pressure, altitude and temperature and thus some means must be provided to permit the user to enter site dependent data. And, the list goes on and on.

When developing an interface with an LTC1298, it may not initially work for a number of reasons. Either we do not thoroughly understand the serial protocol and we write good code for the incorrect protocol or we do understand the protocol but write incorrect code for the right protocol or both. With the understandable nature of Basic it is less likely one will write incorrect code or overlook an error for very long. The nice thing about the Stamp is the ability to quickly make changes and try them and with a bit of knowledgeable trial and error get the interface working. In a few hours with a Stamp, one can get more done than in days of frustration with a Stamp.

The project involves providing the user with a menu to enter options and calibrations. What looks good on paper isn't always good in real life and here again the ease of the SEROUT and SERIN Stamp commands along with the ability to quickly change the design allows us to relatively quickly develop a prototype interface.

In summary, the Stamp allows us to quickly prototype the design. We then have better understand all of the tasks, we understand the hardware interfaces and having a working prototype gives us a bit of courage in mapping the design over to a PIC.

In our case, the goal is low priced kits for the experimenter and in the effort we will probably provide both a kit of parts along with free source code for the Stamp enthusiasts and a programmed PIC along with parts for others.

The significant points are that if you are a hobbyist who is simply tinkering and learning or a professional who sells products, the Stamp is a viable platform for both the development and the actual product.

And, if you are a professional developing PIC based products for sale, the Stamp will speed the development process. Get aspects of the design going on the Stamp and then port them over to a PIC.

Summary thus Far.

The Parallax Basic Stamp 2 is an excellent platform for newcomers and hobbyists and a very powerful tool in the development of products which may either be implemented using the Stamp itself or mapped over to a Microchip PIC, or for that matter to a 68HC11, 8051 or ATMEL flash processor.

Your investment need be no more than the $49 for the Basic Stamp 2 or even less with our "homebrew" approach.

Take a pass on the Parallax Basic Stamp 1, the Parallax Starter Packages and the Parallax Basic Stamp Activity Board. Invest in a solderless breadboard and a stock of common components.

Why is Tinkering so Easy with the Stamp 2.

First, the user writes the program in Basic. I love assembly and actually dislike Basic, but there is no escaping the fact that one can program far more quickly in Basic.

After editing your Basic Program on a PC and correcting all of the syntactical errors, the PC development software generates "tokens" which are downloaded to the PIC associated with the Basic Stamp and saved in the associated 24LC16 EEPROM. Once downloaded, the Stamp's PIC fetches each of these tokens in turn, decodes them and carries out the desired action.

Thus, the function of the PIC associated with the Stamp is one of communicating with the PC, saving tokens to EEPROM and fetching the tokens, decoding them and carrying out the specified action.

By using this approach, there is no special PIC programmer. In fact, the PIC has already been programmed by Parallax and your program is saved in the peripheral 24LC16 EEPROM.

Thus, in development, there is not the usual two step process of inserting your processor in a special programmer, programming it, taking it out and placing it in your circuit.

Rather, from within the PC development software, it is a one step process of alt-R (run), observe the result, change the program, alt-R and again observe. Aside from hitting the keyboard nothing else is required.

What are the Disadvantages in the Approach.

The obvious disadvantage in fielding a Stamp 2 in a design is the $49.00 cost.

However, it will cost a company a great deal in the development time associated with mapping the design over to a PIC. Thus, in limited run systems, each costing many thousands of dollars, the $49 may not be a factor. Most of my consulting activities have been very low run systems and by fielding them using the Stamp, I have the capability to provide revised code and have the customer load the revision.

I know of no way to "protect" my code. That is, the customer may well read the EEPROM and copy it for other systems. However, in consulting, I am paid well for the development, the customers are honest and the systems are so specialized that no one would really want to copy the code.

The biggest deficiency in using the Stamp is speed. In executing a command, the Stamp must fetch the tokens from the EEPROM which may require hundreds of instruction cycles.

However, this has impacted me only when interfacing with the Dallas 1-Wire devices where a logic zero must be followed by a read within 15 usecs. The best I can do with a Stamp is 100 usecs.

Many will complain of the 2048 token capacity. My general feeling is that if I have a design which I can't prototype on the Stamp 2, I probably won't be able to write the assembly language code to get it into a PIC16C558 which provides 2048 bytes of program memory and 128 RAM variables.

I assume there are valid applications where the 2048 token limitation is a barrier. One might then consider storing text strings in outboard EEPROM and using additional outboard Stamps or PICs to perform certain tasks. The other alternative is to go with a Micromint Domino which is an 8052 based processor. (Aside from that I don't know much about the Domino).

Other limitations of the Stamp 2 is the lack of interrupts and lack of a real time clock / counter.

A Better "Stamp" - The Versatech TICkit 62.

Another processor which uses the tokens stored in EEPROM approach and thus provides the same ease of trial and error is the TICkit 62 developed by Versatech at http://www.sni.net/versatech. The price is marginally less than a Stamp 2 ($45). However, here again, you can "roll your own" for about half the price.

Unlike the Parallax $149 cost for the development package, the Versatech development kit is a more realistic $45 and it is very well done.

I have not personally used the TICkit 62. However, one of my undergraduate students spent a semester fooling with it and he developed a good many sample applications which appear on various pages on this web site . The student's previous more experience than a few weeks with a Basic Stamp 1 and no experience with a Microchip PIC.

In perusing the various manuals I liked the language which might be termed a combination of Basic, Pascal and C. However, for those who are currently using the Basic Stamp 2, there is a learning curve. The language is quite different.

A number of the limitations associated with the Basic Stamp 2 are solved with the TICkit 62. The number of tokens is limited to 8192 (four times the Basic Stamp 2) and both interrupt capability and a real time clock counter are provided.

The TICkit 62 itself uses a Microchip PIC16C62 which is far more powerful PIC than that used on the Basic Stamp 2. The Stamp 2 uses a PIC16C58 which uses 12-bit instructions with a stack which is limited to a depth of two. The PIC16C62 uses 14-bit instructions with a stack that can accommodate a depth of eight.

However, like the Basic Stamp, the TIC62 fetches tokens from EEPROM which requires hundreds of instruction cycles. It is faster than the Basic Stamp 2, but not fast enough to directly interface with the Dallas 1-Wire devices.

In my mind, the Versatech package is a vast improvement over the Parallax Basic Stamp 2.

However, for the moment, we have abandoned the Versatech effort as our goal is to develop material to encourage tinkering and most hobbyists are attracted to the Basic Stamp. There just didn't seem to be much point in developing material for the Versatech which is read by two percent as compared with the numbers reading material related to the Basic Stamp.

The Basic Stamp 2 is well supported by the community of enthusiasts. Both Parallax and High Tech Horizons (http://www.hightech.com) have vast libraries of applications using the Basic Stamp. High Tech maintains a List of Stamp Applications (LOSA) and Parallax maintains a list server which is very active. A newcomer can send a message asking virtually any question and with a few hours will have some ten messages from people who do really know the Stamp.

There is no comparable support for the TICkit 62. However, I have found that Glenn at Versatech, the developer of the TICkit 62 is very good in responding to e-mail

Thus, if you are a newcomer, I suggest the Parallax Basic Stamp 2. It's a bit like the IBM PC and the Mac of many years ago. You may disagree, but there isn't much question in my mind that the Mac was the superior machine. But, everyone jumped on the IBM wagon and thus software developers concentrated on the IBM PC. The Mac was superior, but the support made the IBM the standard. Similarly, in my mind, the Versatech TIC is superior, but the Parallax Basic Stamp is the standard.

However, if you have a good amount of experience and do not need a great deal of support and can use the superior features of the TICkit 62 or are just looking for something new to tinker with, the Versatech "Stamp" may be a viable alternative.

Another Summary.

Both the Basic Stamp 2 and the Versatech TICkit 62 are similar in concept in generating tokens and saving these in EEPROM. The result is a one-step process of download code, observe, modify code and try again. Both make for a development platform that enables fast reworks of code.

The Basic Stamp 2's major deficiencies are a 2K token capability, lack of interrupts and lack of a real time clock and counter. The Versatech TICkit 62 provides far more program memory and does provide for interrupt handling and a real time clock and counter. Neither is fast enough to interface directly with the Dallas 1-Wire family.

Although the Versatech is a better processor, the Basic Stamp is far better supported and I would suggest the Basic Stamp 2 to newcomers who need that support.

ME Labs - PicBasic Compilers

With the Basic Stamp 2 and the Versatech TICkit 62, tokens are saved in an outboard EEPROM. The PIC then fetches these tokens, interprets them and executes the necessary tasks to perform the specified function.

The approach taken by Micro Engineering Labs with their PicBasic Compilers is to skip the tokens. Currently, ME Labs has their original PicBasic and a new PicBasic Pro Complier at $149 and $249 respectively. In addition, you will need a PIC programmer. The is treated in greater detail later in the discussion.

The developer uses the MELabs PicBasic Compiler to edit a program on a PC. This Basic (.bas) file is then complied which generates an assembly language (.asm) file. The (.asm) file is then assembled generating a (.hex) file which is then used to program a PIC.

Thus, the development cycle is one of writing the Basic code and after removing the syntactical errors, assemble the resulting .asm file. Then program the PIC. Remove the PIC from the programmer, place it in your circuit and observe the results.

Note the extra step of programming the PIC, removing the PIC and placing it in your circuit. This is somewhat more cumbersome than working with the Stamp where changes can be made quickly and directly downloaded without transferring the PIC to a programmer and back to your circuit. However, in noting that it is more cumbersome, this is not to be construed as meaning it is any too difficult.

Advantages.

There are many advantages in this approach.

Currently a Microchip PIC16F84 which may be electronically erased and reprogrammed thousands of times is nominally $5.50. Add a three terminal ceramic resonator $0.75 and you have a system. Thus, for less than $7.00 you have a system which may be used for development and the same system may then be used as your final product.

In addition, the compiler supports most if not all of the Microchip 14-bit core devices which have an 8-level stack. This includes the new 12C671 and 672 in an 8-pin package along with 16C554, 556, 558, 61, 62, 62A, 620, 621, 622, 63, 64, 65, 65A, 71, 710, 711, 715, 72, 73, 73A, 74, 74A, C84, F83, F84, 923, 924.

Currently, only the 16C84 and the 16F84 are electronically erasable and re-programmable. Thus, you may initiate your development or develop small portions with one of these PICs and then change the target processor to accommodate your needs in the final product. To my knowledge all of the above are available in a ceramic DIP which may be programmed and then erased using high intensity ultraviolet radiation. Your ultimate design might then use a one time programmable (OTP) version.

Typically, a windowed EPROM version is $12 to $20 and a one time programmable version is $2 to $7, depending on the actual device.

One may wonder why move from a 16F84 if the savings is only a dollar or two. You may not wish to if the 16F84 will do the job. However, each of the above listed devices has its own strengths; e.g., an 8-pin DIP with an internal clock, more program memory, more RAM, on-board analog circuitry, on-board A/D converters. The point is that with the Parallax Basic Stamp, your are confined to the capabilities of the Stamp. With the ME Labs approach, you are not confined to the capabilities of one PIC; you can use any in the Microchip 14-bit core series.

The ME Labs packages permit you to mix assembly with the Basic, either as a single line or entire blocks. Thus, in your development, your "main" routine might be in Basic, with various functions written in either Basic or assembly.

Once again, I enjoy assembly. However, I do not enjoy writing routines to perform such calculations as;

2905 * X / 19 + 219

And then convert the result to binary coded decimal for display on an LCD or PC.

The ME Labs approach permits such mundane tasks to be programmed in Basic.

Of course, the ability to use assembly is necessary in tapping the features of many of the Microchip PICs. For example, there is no Basic instruction to use the on board A/D converters associated with the PIC16C71.

In addition to the ability to interweave assembly with Basic, the package provides the PEEK and POKE commands.

All of this permits you to tap the full capabilities of the Microchip product line. Unlike the Stamp, you have access to the interrupts, on-board counters and the watch dog timer.

As the ME Labs approach does not use tokens which must be fetched from EEPROM, the timing issues associated with interfacing with the Dallas 1-Wire family are solved. Your program will run as fast as the PIC.

Disadvantages.

The costs of the older PicBasic and the newer PicBasic Pro are $149 and $249, respectively and in the following discussion, I strongly recommend going with the higher priced version.

A programmer is also required. This is discussed in greater detail below, but programmers vary in price from ITUTech's $39 kit to MicroChip's PIC-Start Plus for $199 and I can recommend both. Avoid the Parallax programmer as it is expensive and requires a host of expensive adaptors if you plan on using many different PICs.

The development process requires that you move a PIC from your circuit to the programmer and put the programmed PIC back in your circuit which is a bit more cumbersome than with the Parallax Stamp 2.

For a newcomer, the Stamp is about as simple and foolproof as one can get and the ME Labs approach is a bit more intimidating. I would recommend that a newcomer start with the Basic Stamp and then as the confidence and the knowledge base rises, perhaps move on to the ME Labs approach.

But, even for the experienced, I still recommend the Basic Stamp 2 as a valuable tool in quickly trying out a new idea. If you place any value on your time, the $49 for a Basic Stamp will quickly pay it's way.

Thus, when people ask me, "Stamp or ME Labs", you can see that the answer is complex. If forced to put it in a few words, buy the Stamp 2 and depending on your goals and experience level, consider the ME Labs package.

ME Labs PicBasic vs PicBasic Pro.

We purchased the original ME Labs PicBasic which is billed as being compatible with the Basic Stamp 1. That is, you can use a Basic Stamp 1, which I don't really recommend, for the

development process, and then use this same code with the ME Labs package to compile to a .asm file and then assemble to a .hex file and program a PIC.

As noted above, Parallax provides this capability for the Basic Stamp 1. Develop your code and get it working and then burn your PIC. However, this requires that you purchase the Parallax programmer at $199 and you are restricted to the older Microchip PIC16C5 series.

For that $199, you will be far ahead purchasing the ME Labs Pic Basic package for $149 and either the ME Labs EPIC programmer or the ITUTech $39 programmer in kit form.

The ME Labs approach does exactly the same thing for less money, but you are not locked into the older 16C5X family. Rather, you can tap into all of the 14-bit Microchip devices including the electronically erasable PIC16F84, interweave assembly in your code and use such features as interrupts, on-board counters and analog to digital converters and the watch dog timer.

However, we purchased the ME Labs package to aid in our development using assembly language. More to the point, I had to perform yet another calculation involving two byte multiplication and division and converting the result to BCD, a task that can take a day in assembly.

I was certainly impressed with this older package, but I was disappointed to find that the package generated an assembly language file which was not compatible with Microchip's MPLAB integrated development package. Microchip MPLAB is treated in greater detail below.

After pouting over this for a few days, I happened to point my browser to ME Labs, only to find they had a new package; PicBasic Pro.

In this package, ME Labs added many new Basic instructions with the goal of approaching compatibility with the Basic Stamp 2's instruction set.

However, more importantly to me, they provided an option of compiling so as to be compatible with the ME Labs assembler or to be compatible with the MicroChip MPLAB package.

The Microchip MPLAB package is free and I have to say that Microchip does an outstanding job of supporting their product line. MPLAB permits the developer to edit, assemble and simulate all in one powerful package.

Thus, in developing the PRO package, ME Labs has created a bridge from the Stamp to the PIC. The developer can develop small modules using the Stamp 2 and thus take advantage of the ease of quickly testing ideas. As these are developed they can be pasted into the ME Labs PRO package. The target PIC can be modified and user assembly routines can be added to fully tap all of the features of the PIC and the result can then be compiled to an assembly file which is compatible with Microchip's powerful (and free) MPLAB package.

Summary thus Far.

Basic Stamp 2 at $49, yes. Other Parallax tools; Parallax Starter Package ($149), Basic Stamp Activity Board ($79), Parallax Programmer ($199) are all no. Total thus far is $49 plus the cost of a solderless breadboard.

If you are a newcomer, you might consider moving on to also using the ME Labs PicBasic PRO package ($249). You will also need a programmer. More on this later. But, your investment in the Basic Stamp 2 is not lost money. It remains a valuable tool in the development process.

If you do go with the ME Labs packages, I strongly suggest the more expensive Pro package with the enhanced Basic instruction set, but most importantly, the ability to generate assembly compatible with the free and powerful Microchip MPLAB package.

Sidebar - The Micromint PicStic.

Micromint (http://www.micromint.com) is associated with Steve Ciria's Circuit Cellar INK and I certainly have the most profound respect for Steve.

However, I was disappointed with the PicStic which is advertised as a Basic Stamp 1, plus a bit more. There are a number of different models starting at $29. A $200 development package is also required.

The PicStic itself is nothing more than a PIC16C84, a 4.0 MHz ceramic resonator and a power regulator mounted on a single inline package (SIP) similar to the Basic Stamp 1.

The development package appears to be the original ME Labs PicBasic Compiler along with ME Lab's EPIC programmer which has been modified to accept the PicStic with its SIP pinout.

Note that you can prototype your own PicStic with a more powerful PIC16F84 and a 4.0 MHz ceramic resonator for less than $7.00, about one quarter of the price of the PicStic. (The PIC16F84 is somewhat more powerful than the older 16C84 in that it provides an additional 32 RAM locations).

My suggestion is, avoid the PicStic. Buy a handful of 16F84s and ceramic resonators and buy the more powerful ME Labs PicBasic PRO package along with a conventional programmer.

Programmers.

There are all manner of programmers ranging from "do-it-yourself" designs, to kits costing $39, to the Microchip PicStart Plus costing $199. This is an area where I am weak as there are so many different programmers and as we have settled on the PicStart Plus as our workhorse, there has been no urgency to continually examine new approaches. However, I will offer what little experience we have had.

ITUTech. (http://www.itutech.com).

The first programmer we purchased was a $39 kit by ITUTech and it was very well done. A student had assembled the kit within about an hour and had successfully downloaded and programmed a PIC. The unit is supplied with a wall power supply.

DOS software is provided to download a .hex file to the programmer via a PC parallel port.

Over the course of a development, you may move the PIC from your circuit to the programmer and back to your circuit dozens of times and sooner or later one of those terminals on the PIC is going to bend and eventually break. Thus, one modification we made was to replace the conventional socket where the PIC to be programmed is placed with a zero insertion force (ZIF) socket. We also use an 18 terminal wire-wrap socket as a carrier for the PIC.

For a full listing of the PICs which may be programmed using this design, please see ITUTech's home page at http://www.itutech.com.

Micro Engineering Labs. (http://www.melabs.com)

ME Labs markets an assembled programmer know as the EPIC and this is quite often offered in a specially priced "bundle" with the PicBasic Compilers.

As with the ITU programmer, a wall power supply is provided and the PIC is programmed by downloading the .hex file via the PC's parallel port. This software is provided.

For a full listing of the PICs which may be programmed see http://www.melabs.com.

Microchip PicStart Plus. (http://www.microchip.com)

This is available for Digikey for $199.00. The package includes a 40 pin ZIF socket, wall type power supply, serial cable and it is packaged in a plastic housing. The latter is an important consideration for me in academia where what can go wrong usually does.

This unit has become our workhorse for a number of reasons.

Microchip's free MPLAB development package permits editing, assembling and simulating a program all from within a powerful integrated development environment. MPLAB also provides for seamless integration with the PicStart Plus programmer. Thus, once the user desires to program a PIC, they simply pull down a menu to program the PIC. Thus, one factor is a matter of convenience.

However the strongest factor is the versatility. As noted above, Microchip is very serious about selling PICs and in my mind they do an outstanding job in supporting developers. I believe that the PicStart Plus will program every PIC that Microchip markets in a DIP package and it is certainly in Microchip's interest to continue with this by offering free software upgrades as they have done in the past.

Thus, I strongly recommend the PicStart Plus to enthusiasts who plan on using many different PICs and want to take advantage of Microchip's ever growing product line.

Assembly Language Programming.

Thus far the discussion has focused on the Parallax Basic Stamp 2 and the use of the ME Labs Basic Compilers. If you are planning on only using the Stamp, there is no need to learn assembly.

However, if you move on to the ME Labs Compiler approach where assembly may be intermixed with Basic, it is probably to your advantage to learn assembly. A knowledge of assembly is required to use features in PICs which are not supported with Basic commands, writing interrupt service routines, reducing the amount of code and in debugging the code in the MPLAB integrated development environment.

Microchip vs Parallax Mnemonics.

As noted above, the ME Labs packages include their own assembler which is different from Microchip's free assembler. The ME Labs assembler and the assembler associated with the

Parallax programmer use what is known as Parallax mnemonics. Note that these are different than the Microchip mnemonics.

Although they both do the same things, my suggestion is that you learn the Microchip mnemonics for a number of reasons.

Microchip manufactures the PICs and of course, they are not going to cater to those who use someone else's mnemonics. Microchip maintains a vast collection of applications notes on their Web site and is very generous in distributing free documentation, both in printed form and on CDs and again, all sample code uses Microchip mnemonics.

As you surf the web, you will find that most examples of PIC programs use the Microchip instructions.

The Microchip assembler is free. It uses Microchip mnemonics and to my knowledge is not compatible with the Parallax mnemonics.

Learning Assembly.

There is no question but that learning assembly is not trivial.

It certainly helps if you have learned assembly for another processor. Prior to the Spring, '98 semester, I had taught my undergraduate students the Motorola 68HC11. In transitioning to the PIC, I have found that I can pretty much go through the entire PIC instruction set within a few hours and they can begin writing in PIC assembly. Of course, this doesn't cover all of the little subtleties and such items as interrupts and using the real time clock and counter.

The best advice I can give someone who wants to learn PIC assembly on their own is to resolve to do so and set daily goals. Goals might be to develop programs to turn on an LED, flash an LED, flash LEDs at different rates determined by an input switch.

On my home page, I have attempted to offer many routines and discussions which progress for the very simple flashing of LEDs, reading inputs, controlling a stepping motor, arithmetic

routines, looping, serial output and input, implementing compare operators, generating a random number and implementing the branch and lookup commands. More advanced topics include handling interrupts, and interfacing with devices using the Dallas 1-Wire and the Philips 2-wire protocols. I am hopeful that these may be of some help.

The best book I have seen for a newcomer is "Easy PICn" by Square 1 Electronics. This is available from Jameco and numerous other sources. My initial impression was that the material was a bit too simple, but what is simple for one person is just right for another.

Note that all that is required for assembly language programming is the MPLAB software package which is available for free from the Microchip home page and a PIC programmer, and of course some PIC16F84 and 4.0 MHz ceramic resonators.

Putting it All Together.

This far we have a $49 Stamp which permits rapid and painless experimentation.

If you wish to go further, we have the ME Labs PicBasic Pro at $250 and a programmer which can range in price from $39 to $199.

The assembly comes free. The Microchip MPLAB package is free and you already have the programmer.

If you know assembly, you really have the power to create, particularly when coupled with the power of the ME Labs PicBasic Pro.

An LCD as an Aid in Debugging.

In beginning your assembly efforts, I am hopeful you can successfully do such things as indefinitely flash an LED or flash it 10 times. Keep trying as once you do, it will give you a great deal of confidence to continue.

However, there will come a time when you program the PIC to do a task and it doesn't work. I have a great deal of trouble convincing many of my students that sooner or later they are going to have to develop a debugging strategy. They seem to tune me out as this appears yet another layer of complexity I am dumping on them. I guess they assume that they will always write perfect code and will never need this additional complexity.

I think one big reason they tune me out is that there is no one correct way to debug. Much of engineering education remains "plug and crank", that is, plug it into the equations and crank out the result. There is one way to do a problem, and this is the right way and that one right way gets the "A" grade. Regrettably, life and engineering isn't anything like this. And, debugging is "real life".

Debugging requires a good deal of thought and creativity.

Microchip's MPLAB package includes a simulator which permits the developer to single step through code, set break points and watch variables. Of course, it has limitations, but it is invaluable in debugging small modules.

I have also found that a serial LCD is invaluable in the debugging process and we sell an inexpensive unit that may be interfaced with a PIC under development using a single output for sending serial data to the LCD. Many others sell serial LCDs as well, but we offer it for hobbyists on a budget. Our assembled PIC-n-LCD 20X4 LCD is $54. Parallax has similar units for twice that.

We have also developed a number of subroutines suitable for use with a 16F84 which the user may call to aid in the debugging process. For example, a call to LCD_DEBUG will cause the LCD to display the content of the W register and state of the Zero and Carry bits in the Status Register and to display the content of RAM locations $10 through $17.

The module, currently named LCD_V45.ASM contains many other functions to provide delays, to display the content of the W register as either a character or a two digit hexadecimal value and to display a 16-bit natural binary quantity. in decimal format.

This software is available for free on this web site. The developer may include this module in their code using the #include directive. In it's current form, it is intended for use with a PIC16F84 and it uses RAM locations $40-$4F and program memory locations $300 - $3FF or about one quarter of the 16F84 processor. However, the code may be easily modified for other processors having more RAM and program memory.

Aside from debugging, a serial LCD might well be a part of the final project or product as a means of displaying data to the user.

I am currently teaching some 35 eager undergraduate students assembly language programming in the PIC environment. I push my students pretty hard with a weekly hand's on laboratory design project with weekly demonstrations and interviews. In making the change from the Motorola MC68HC11, I was quite concerned as I do not have a sufficient number of emulators to support this number of students.

We are now at mid semester and I am pleased to note that the simulator associated with the MPLAB package and the use of the serial LCD appears to be adequate in writing and debugging meaningful programs.

Summary.

In developing assembly language programs there is no substitute for good detective work in debugging routines. The simulator associated with Microchip's MPLAB along with a serial LCD are both valuable tools. There are many serial LCD modules on the market. We offer both an assembled PIC-n-LCD 20X4 intelligent serial LCD module for $54 which I believe is among the best and yet by far the least expensive. We also have a $10 kit using a processor of our own design which includes everything other than the LCD.

Emulator.

If you spend any appreciable time writing assembly language code, consider an emulator.

An emulator is a box that interfaces with your PC and emulates the operation of your target processor. That is, a ribbon cable with a DIP plug interfaces with your external circuitry and behaves precisely the same as your final programmed PIC.

However, the emulator permits you to single step through your code, set break points, observe and modify the content of the special function registers and user assigned variables.

Once you have used an emulator, you will wonder how you ever lived without it and this was my concern in offering my current undergraduate course without emulators. The truth is that you can live without one, but an emulator makes life a whole lot less frustrating and speeds your development process.

Our total experience with emulators has been confined to the RF Solutions (http://www.rfsolutions.co.uk) ICE-PIC series.

These consist of a main module ($499) which includes the enclosure, a wall transformer power supply, and a mother board. These are customized emulate the desired PIC with personality module which plugs into the mother board. These are typically $299. Thus, an emulator for the 16F84 is nominally $800. However, if you later decide to tinker with the PIC16C71 series with onboard analog to digital converters and a good deal more, your additional cost is limited to the cost of the personality module.

Our experience has been limited to the RF Solutions ICE-PIC as it was the first we one we purchased and within the hour an undergraduate student had installed the software, written and assembled a simple program to flash an LED and the LED was indeed flashing under the control of the emulator.

As noted several times above, Microchip does an outstanding job of supporting their PIC product line and Microchip has adopted the RF Solutions ICE-PIC as their standard which aids in insuring compatibility with the Microchip product line and MPLAB.

As noted above, the free Microchip MPLAB package provides an integrated development environment that permits the developer to edit, assemble, simulate and interface with the PIC-Start Plus to program the PIC.

The RF Solutions ICE-PIC software is a separate package and it is free from the RF Solutions homepage. However, it looks pretty much the same as the MPLAB software. Of course, the two

packages have different functions; MPLAB permits simulation and interfacing with the PIC-Start programmer while the ICE-PIC provides the tools to download to the ICE-PIC emulator, single step, set break points and watch variables. However, the editing and assembly functions may be performed in either package and one can move between the two. That is, code which is edited and assembled using MPLAB may later be brought up in the ICE-PIC package for emulation and once the developer is satisfied they have a working product, the same code may then be brought up in MPLAB so as to program the PIC.

Of course, Microchip and RF Solutions are two different companies and sometimes communication within a single company is difficult enough. However, over the year that we have been using the ICE- PIC emulators, Microchip has revised their MPLAB software a number of times and they have introduced a number of new devices. I have been pleased to note that RF Solutions has always revised their ICE- PIC software such that the two packages are compatible.

Of course, nothing is guaranteed. But, for now, we have the Microchip company that appreciates that market penetration demands that they support developers and they appear to have a strong partnership with another company and for the moment, it is working very well.

There are other emulators and they are similar in cost. However, I have been pleased with the performance of the ICE-PICs and consider the safest path to be one of staying close to Microchip.

Note that a different personality module is not required for each and every Microchip PIC and we have done quite well with three; one for the PIC16C5X series which we use for the 12C508 and 509, one for the PIC16C84 (and PIC16F84) and one for the PIC16C71.

RF Solutions also has a product line which they refer to as ICE- PIC Jr which are somewhat less expensive. These appear to be stripped down ICE-PICs, i.e., no enclosure and no wall

transformer. I suspect that they also use the ICE-PIC software and work as well as the more expensive ICE-PIC. However, I have not verified this.

The ICE-PIC series is available from Digikey. Both the ICE-PIC and ICE-PIC Jr series are available from ITUTech, and as I recall, ITU Tech is somewhat less expensive.

Summary.

Hopefully, your head is not spinning.

I consider the Parallax Basic Stamp 2 to be an excellent platform for the newcomer and a valuable tool for the more advanced PIC programmer. If the Stamp meets your needs, stop there. Avoid the expensive Parallax Starter Package and Activity Board. Invest in a solderless breadboard.

If you decide to move toward PICs, the ME Labs PIC Basic Pro package is a natural bridge from Basic to assembly language. I strongly recommend the Pro package as it is compatible with the powerful and free Microchip MPLAB package.

Working directly with PICs will require a PIC programmer. I would stay away from the expensive Parallax programmer as numerous costly add ons are required as you move from one PIC to another. We have had good experiences with both the ITUTech $39 programmer and ME Labs' EPIC programmer. To assure maximum compatibility with the Microchip product line, consider Microchip's PIC-Start Plus.

If you decide to learn assembly, learn Microchip's mnemonics. This will enable you to tap the vast amount of information available in both printed form and material on the web. It will also permit you to use Microchip's powerful and free MPLAB package.

In learning assembly and in undertaking simple projects, you need only the free MPLAB package and a programmer. In addition to the simulator associated with the MPLAB package, I have found a serial LCD to be a valuable tool.

If you decide to go further, consider an emulator to speed the development process.

Consider the RF Solutions ICE-PIC series. My experience has been very very positive, they work well and the seamless integration with the MPLAB package make using them an absolute joy.

Please note that these are simply my thoughts. However, they are based on a good deal of experience and my goal in setting them down is to provide you with some guidance in avoiding many of the pitfalls which we encountered.

There may well be a better path and I invite you to look around. However, as with buying a used car or a rug, consider that the advice just may be influenced by financial considerations.

But I Don't Have $2000.

The entire package which I have outlined above is nominally $2000.

However, no one is twisting your arm. You can start and stop with the Basic Stamp for $49. You might later move to the ME Labs PIC Basic Pro Compiler for $250 plus the price of a

programmer. Clearly, moving to the emulator is the largest step.

My observation of electrical engineers over a period of 30 years has been that for many, it is a job and for others, it is a job and a hobby.

I can't say I fully understand the first. Many seem happy, others don't and some forty years of being unhappy in a job is a lot of unhappiness.

While the first group would never consider having a soldering iron outside the workplace, those who have managed to make their hobby their occupation, have more than one. They buy houses based on the absence of restrictive covenants against antennas, They have or desire to own their own voltmeter, function generator and oscilloscope. You get the picture.

There is a tendency by the first group to look at the other as "different" or "nerdlike" or "workaholic" and thus less happy. In fact, my observation has been that those who seize life in one area tend to do pretty much the same in all areas. They hike, camp, canoe, run for public office, read everything that comes their way and have more than one hobby. They get married and have children. The same curiosity and interest in life they show on the job are the same skills they apply to other areas of their lives.

Of course, these are sweeping generalizations. We all know of the "workaholic" who is compensating for a bad marriage and I am not talking about those situations.

The first group doesn't tend to invest in their job. I am certain that you have sat in a class where there is no chalk or perhaps no erasure and thus the professor doesn't use the board. I mean when one is making some $70,000 per year, who can afford a $1.00 erasure. This just doesn't seem like a happy person who takes satisfaction in doing a good job.

I have also observed that on the job (or job / hobby) either you find something useful to do or your employer will find something for you to do and in all probability you may not enjoy it as much.

Thus, I invite you to seize on life. Invest in yourself so as to establish peaks of excellence in what you like to do. If you don't, your employer will find something for you to do.

Sure, $2000 is a chunk of change. But, a $35,000 automobile is also a sizeable chunk of change and settling for a $15,000 car sure opens up a lot of other options.

I always find it useful to look at a per day cost. For the professor without an erasure, the $1.00 investment over some three years is about a tenth of a penny per day. A $1200 PC over three years is about $1.00 a day. A $2000 investment in embedded processor control is perhaps $1.50 a day.

Thus, $2000 is a chunk of change. But, if it is something you enjoy, build toward it. I really wouldn't wait around for prices to drop to under $100. Life is too short.

Should I Wait for the Scenix SX.

It always seems as if there is some exciting breakthrough just around the corner. By the time, one is available, which may or may not meet expectations, there is word of another. Technology is running pretty rapidly these days, and I would suggest you jump on as soon as you can.

For the past year, there has been a great deal of talk of the Stamp 3, based on the Scenix SX. I guess I have been as excited as anyone. A processor running at 50 MIPS, a very inexpensive development system, $4.00 per IC.

I have seen dates of Oct, '97, Dec, '97 and now the date is April, '98. But, the Stamp 3 is vaguely referred to as sometime in the summer.

I hope it meets all the expectations we have. However, I wouldn't wait. Life is short. If PICs are your thing, get going now.

There are currently a number of big players in the single chip computer market; Intel, Motorola and Microchip. Semiconductor manufacturing requires a large investment and any semiconductor line depends on economies of scale. Sales to hobbyists can't support a manufacturing facility.

The name of the game is to attract developers. If the developers don't design those processors into remote controls and toys and automobiles, there won't be any sales.

I am not all that familiar with Intel's support, but Motorola's support is excellent. Any educator need only write a letter for free 68HC11 boards and free documentation. Microchip is free with the documentation and their support tools, while not free, are excellent and reasonably priced. Thus, there is a big question in my mind as to whether Scenix can provide those low cost development tools to attract developers.

But, in addition, once user companies such as General Motors or Lucent tools up with a particular processor vendor, they accumulate an enormous investment. This extends far beyond development packages, programming hardware and emulators. Their engineers know the particular language, they have a fortune in debugged code and they have an obligation to continue to support products they have in the field. Unlike hobbyists, they simply are not going to force a change unless there is one very good reason to do so.

Large user companies also look for stability. Lucent Technologies doesn't have the luxury that a hobbyist has. Any decision to use Motorola, Intel or Microchip products involves an examination of whether the company will be around next year to supply the processors.

Thus, there are very big questions in my mind on the SX chip. While 50 MIPS is impressive, it isn't important if you don't need it. Is the SX chip such a leap in technology such that major users will scrap their current investment in whatever processors they are currently using. And, is Scenix stable. What amazing new PIC will Microchip have in a year?

I really hope the SX happens and it meets all of our expectations. But, I wouldn't wait. If you enjoy the area of embedded processors, get going now.

Happy Tinkering. 73.