On 1 Jul 01 at 0:08, Brandon Fosdick wrote: > produces this hex file... > > :10000000831606309F0001308500003086000713FC > :10001000813099009816181583129817F0308600D1 > :020020000E28A8 > :02400E00FA3F77 > :00000001FF > > The line in question being... > > :02400E00FA3F77 > > ...which as far as I can tell says to put 0x3FFA at address 0x400E. > 0x3FFA is the configuration word for this file and all the other > lines reference space in program memory, so I'm fairly certain this > line is talking about the config word. Looking at the 16F87X > datasheet (DS30292B) tells me that the config word is at 0x2007. Brandon- If you divide 0x400E by 2, you get your desired 0x2007. I think we're seeing some history in the format of the .hex file. We're using a byte-oriented format to express 14-bit word entries, so the indicated addresses are essentially byte locations. Note the second line, which I've broken up into pieces to make the point: :10 0010 00 8130.9900.9816.1815.8312.9817.F030.8600 D1 We know this is really destined for word locations 0x008 through 0x00F--not 0x010 through 0x017--since it follows the code in the previous line directed at 0x000 through 0x007. The indicated length is 16 (0x10), but there are only eight words provided. Bottom line: divide the indicated address by two to derive the 14-bit word location to be programmed. Regards, Steve -- http://www.piclist.com hint: PICList Posts must start with ONE topic: [PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads