Something else probably changed, input voltage, temperature, shocked the PICs a bit, seasonal changes, humidity, whatever. Apparently, it was running close enough to 4mhz to keep the timing right to work at 300baud. Now the internal oscillator isn't running at 4mhz.
The fact that you said it DID work just fine, then it would work for a few characters before it started sending random characters, and now it doesn't work at all suggests that the framing of the characters is getting farther and farther off the longer you are transmitting.
Try using SEROUT2, with a mode # of 3332 (which is optimal). Then try shifting 3332 up and down a bit and see what happens. Eventually you'll hit on a range of numbers that does seem to work. Take the middle one and use it.
My advice (as well as others I'm sure)...use an external crystal.
Bookmarks