Re: Very strange problem...
Just a guess here, but 2 things jump at me.
INTRC is not a valid choice according to the datasheet, is this a typo or something strange.
Assuming the above is just strange to me, try setting SCS bits to SCS1=1 and SCS0=0. This will force it to use the internal no matter what the config says (maybe).
Now if this makes it work, I will have no idea why. My guess there is, well, hmmm, maybe, no no, ummm, clearly I have no idea. SRY
Re: Very strange problem...
Hi Bert--
Thank you for your reply! My reference to INTRC was actually referring to the configuration option I selected from the pull-down menu for the meProg software-- it tells the U2 programmer to set the configuration fuses for the internal oscillator. I tried explicitly setting the SCS1 & SCS2 bits per your recommendation, but the program still behaves the same-- it works when it contains the LCDOUT command, and doesn't work without the command being present.
Thanks--
--Alan
Re: Very strange problem...
Hi Alan,
Do you have the "Options > More Options > Program > Serial Number" enabled in meProg?
If so, uncheck it.
It could be overwriting locations in Flash at the beginning of the code space.
Re: Very strange problem...
Hi Darrell--
Thank you for taking a look at this! That was, in fact, the problem. I turned off the serial number programming feature and it worked, and I verified that by turning the serial number feature back on, and adding a DEFINE RESET_ORG xx instruction at the top of the code, and it worked as well.
So what is it about the LCD command's presence that makes the code work? Does LCDOUT force a different start for the code?
Thanks--
--Alan
Re: Very strange problem...
Well, the only difference between the two examples was the additional Library code added by the LCDOUT command.
LCDOUT comes before PAUSE in the .lib file, so when included ... it pushes PAUSE up to a higher address. And since the LCDOUT command was never executed, a memory overwrite wouldn't be noticed, but PAUSE would work now.
If the first example had tried to execute the LCDOUT statement, it probably wouldn't have worked (right) either.