Hey guys, Well, I've been working on this 14000 project, and after *days* of sheer frustration, I figured I'd post my observations, plus a question. First, the Hi-Tech C compiler has a bug in the older versions when it comes to the 14000. Now, before you smirk, I've been at this coding thing for 14 years, and have had to listen to my fair share of programmers complain about "compiler bugs" that ended up being their own stupidity. So I swore I'd never do that, and consequently spent two solid 18-hour days proving the point, having only once before actually found a real compiler bug. And that was about 10 years ago, in a new compiler for a T.I. DSP chip. So here's the deal - the 14000 has two code segments, each 2k long. In older (and I don't have the version number handy here at home, but basically meaning more than about 6 months old) versions of the Hi-Tech compiler, as soon as you go beyond the first code segment, it farts out, BIG TIME. So make sure you get the latest version. I finally figured this out by adding and subtracting lines of code from various places, until I had it nailed to the segment boundaries. I finally downloaded the new version of the compiler, and voila - problem solved. Secondly, each 14000 has pre-programmed calibration constants, to account for chip-by-chip tolerances in things like the on-board temp sensor, A/D drift, etc. And particularly for the measured on-board clock frequency. That was my bane. I did all the app-note suggestions for compensating for on-board clock rate, and I could never get more than a success rate of about one in four chips to drive a 9600bps (internally clocked) serial output. Finally, having carefully worked my way through literally 250 permutations of pre-programmed clock rate across about 30 chips, I realized this was probably a bunch of hokum, and added an external oscillator. Sure enough, all 30 worked perfectly. Now, to drill in a bit, it was entirely unclear to me exactly what format the 1 byte calibration constant was represented as. In the app notes, it suggested it was the mantissa-only component of a 32-bit float. But in the data sheet, I could swear it was meant to be a simple 8-bit unsigned integer. I tried both, *extensively*, and neither made a damn bit of difference. Just to be sure that my understanding of IEEE float definitions wasn't screwed up (which it still may be), I tried using the included Hi-Tech function to access the burned value. Still, bupkiss. As a final note, while I've been at the code game for quite some time, my experience with external oscillators is limited. I'm using an Epson 4Mhz part, which is drawing a whopping 4mA. That's about 30% of the entire circuit draw, without even sleeping the PIC 90% of the time, as I will do eventually. Could someone reccommend a low-power way to do the same thing? Thanks, -Will