9600 might be a bit fast for 4MHz. So an adjustment there could be in order.
Let work on the interrupt problem first.
The below code has a push button on PORTB.0. PORTB.0 is pulled LOW with an external 10K.
I have an LED on PORTD.2 for testing with a 470 to the zero rail.
Using SEROUT2 so a level converter (MAX232) is not needed at this time.
See if you can make this work and then we can play with the hardware serial and level converters.
Code:'##################### '16F877A DEFINE OSC 20 '#################### @ __config _HS_OSC & _WDT_OFF & _LVP_OFF & _CP_OFF &_BODEN_OFF I VAR BYTE ON INTERRUPT GOTO MACINT INTCON = %10010000 LOOP: HIGH PORTD.2 SEROUT2 PORTC.6,16468,["PUSH ME !!!",10,13] PAUSE 100 GOTO LOOP '############################################ DISABLE MACINT: IF PORTB.0 = 1 THEN FOR I = 1 TO 10 HIGH PORTD.2 PAUSE 150 LOW PORTD.2 PAUSE 150 SEROUT2 PORTC.6,16468,["MACKRACKIT",10,13] NEXT I ENDIF INTCON.1 = 0 RESUME ENABLE 'THE ABOVE WILL ALSO DEBOUNCE THE SWITCH '#############################################





Bookmarks