Your 16F84 code will probably run with minor changes on the 12C509. As you noted, the 12C509 is a 12 bit core device while the 16F84 has a 14 bit core. This means that a few instructions available on the '84 will not be there on the '509. How much this affects you depends on how much use you have made of the extended instructions and exactly how they have been used. Also, like all members of the 12 bit core family, the '509 does not have interrupts and only has a 2 level stack (compared to the 8 level stack in the '84 and other 14 bit devices). A lot of people develop 16C5X code on the 16C84 and 16F84, and the '509 is pretty much just a 16C5X in and 8 pin package. Also, unlike the 16C5X device, but like the '84, the '509 has programmable weak pullups, so if your design used them on the '84 you can use them on the '509 too. What it comes down to is that if you didn't use the extra couple of instructions available on the '84, if you didn't use interrupts, and if you don't call subroutines more than 2 levels deep, you can probably port your design easily. If you did use those extra instructions you can still probably modify your code easily to make it work. However, if you used interrupts or need more than 2 stack levels, the '509 is probably not a good choice for you. If you need these extra features, wait for the 12C6XX devices, which are 8 pin 14 bit devices. HTH - Martin. ______________________________ Reply Separator _________________________________ Subject: 16F84 to 12C509 Author: pic microcontroller discussion list at Internet Date: 5/21/98 11:57 AM Hi I have some simple code I wrote and debugged for a 16F84. It only uses 4 pins. I was wondering what changes I would have to make to use a 12C509? This chip is much cheaper and I don't need the 16F84's 13 i/o lines or the flash. I see the eprom specs for the 12C509 is 1Kx12 vs 1Kx14 for the 16F84. Does that change the way code is written? Jon