this works for me
Code:
#CONFIG
CONFIG FOSC = INTIO67
CONFIG PLLCFG = OFF
CONFIG PRICLKEN = OFF
CONFIG FCMEN = OFF
CONFIG IESO = OFF
CONFIG PWRTEN = OFF
CONFIG BOREN = SBORDIS
CONFIG BORV = 190
CONFIG WDTEN = ON
CONFIG WDTPS = 32768
CONFIG CCP2MX = PORTC1
CONFIG PBADEN = OFF
CONFIG CCP3MX = PORTB5
CONFIG HFOFST = ON
CONFIG T3CMX = PORTC0
CONFIG P2BMX = PORTB5
CONFIG MCLRE = EXTMCLR
CONFIG STVREN = ON
CONFIG LVP = OFF
CONFIG XINST = OFF
CONFIG DEBUG = OFF
CONFIG CP0 = OFF
CONFIG CP1 = OFF
CONFIG CP2 = OFF
CONFIG CP3 = OFF
CONFIG CPB = OFF
CONFIG CPD = OFF
CONFIG WRT0 = OFF
CONFIG WRT1 = OFF
CONFIG WRT2 = OFF
CONFIG WRT3 = OFF
CONFIG WRTC = OFF
CONFIG WRTB = OFF
CONFIG WRTD = OFF
CONFIG EBTR0 = OFF
CONFIG EBTR1 = OFF
CONFIG EBTR2 = OFF
CONFIG EBTR3 = OFF
CONFIG EBTRB = OFF
#ENDCONFIG
;INCLUDE "modedefs.bas"
;INCLUDE"ALLDIGITAL.pbp"
;INCLUDE "HomeAutomationVars.bas" 'Open with PBP editor
INCLUDE "DT_INTS-18.bas" ; Base Interrupt System
INCLUDE "ReEnterPBP-18.bas" ; Include if using PBP interrupts
define OSC 8
DEFINE DEBUG_REG PORTB
DEFINE DEBUG_BIT 7
DEFINE DEBUG_BAUD 9600
' Set Debug mode: 0 = true, 1 = inverted
DEFINE DEBUG_MODE 0
x var word
rxflag var bit
rxchar var byte
ASM
INT_LIST macro ; IntSource, Label, Type, ResetFlag?
INT_Handler RX1_INT , _read_serial, PBP, no
endm
INT_CREATE ; Creates the interrupt processor
ENDASM
OSCCON = $60 ; OSC 8
anselc = 0
RCSTA = $90 ' Enable serial port & continuous receive
TXSTA = $20 ' Enable transmit, BRGH = 0
SPBRG = 51 ' 9600 Baud @ 8MHz, 0.16%
SPBRGH = 0
BAUDCON.3 = 1 ' Enable 16 bit baudrate generator
baudcon1= baudcon1&%11001111 ;invert tx/rx polarity for usb-tty adapter
TRISB.7 = 0 ;DEBUG
LATB.7 = 1 ;DEBUG
@ INT_ENABLE RX1_INT ; enable external (RX) interrupts
debug "running",13,10
Main:
debug "."
for x = 1 to 1000
if rxflag then
Debug 13,10,"got !! asc chr ",#rxchar,13,10
rxflag=0
endif
pauseus 1000
next x
Goto main
read_serial:
rxflag = 1
rxchar = rc1reg
@ INT_RETURN
this is much better , get rid of all those nasty pauses and goto's
Code:
;pic18f26k22 rx1 int demo
#CONFIG
CONFIG FOSC = INTIO67
CONFIG PLLCFG = OFF
CONFIG PRICLKEN = OFF
CONFIG FCMEN = OFF
CONFIG IESO = OFF
CONFIG PWRTEN = OFF
CONFIG BOREN = SBORDIS
CONFIG BORV = 190
CONFIG WDTEN = ON
CONFIG WDTPS = 32768
CONFIG CCP2MX = PORTC1
CONFIG PBADEN = OFF
CONFIG CCP3MX = PORTB5
CONFIG HFOFST = ON
CONFIG T3CMX = PORTC0
CONFIG P2BMX = PORTB5
CONFIG MCLRE = EXTMCLR
CONFIG STVREN = ON
CONFIG LVP = OFF
CONFIG XINST = OFF
CONFIG DEBUG = OFF
CONFIG CP0 = OFF
CONFIG CP1 = OFF
CONFIG CP2 = OFF
CONFIG CP3 = OFF
CONFIG CPB = OFF
CONFIG CPD = OFF
CONFIG WRT0 = OFF
CONFIG WRT1 = OFF
CONFIG WRT2 = OFF
CONFIG WRT3 = OFF
CONFIG WRTC = OFF
CONFIG WRTB = OFF
CONFIG WRTD = OFF
CONFIG EBTR0 = OFF
CONFIG EBTR1 = OFF
CONFIG EBTR2 = OFF
CONFIG EBTR3 = OFF
CONFIG EBTRB = OFF
#ENDCONFIG
INCLUDE "DT_INTS-18.bas" ;
define OSC 8
DEFINE DEBUG_REG PORTB
DEFINE DEBUG_BIT 7
DEFINE DEBUG_BAUD 9600
DEFINE DEBUG_MODE 0
x var byte bank0
flag var byte bank0
rxflag var flag.7
dotflag var flag.0
rxchar var byte
ASM
INT_LIST macro ; IntSource, Label, Type, ResetFlag?
INT_Handler RX1_INT , _read_serial,asm,no
INT_Handler TMR1_INT , _TOCK,asm,no
endm
INT_CREATE ; Creates the interrupt processor
ENDASM
clear
OSCCON = $60 ; OSC 8
anselc = 0
RCSTA = $90 ' Enable serial port & continuous receive
TXSTA = $20 ' Enable transmit, BRGH = 0
SPBRG = 51 ' 9600 Baud @ 8MHz, 0.16%
SPBRGH = 0
BAUDCON.3 = 1 ' Enable 16 bit baudrate generator
T1CON=1 ;32mS tick
TRISB.7 = 0 ;DEBUG
LATB.7 = 1 ;DEBUG
baudcon1= baudcon1&%11001111 ;invert tx/rx polarity for usb-tty adapter
pause 2000 ;give me time to setup debug
@ INT_ENABLE RX1_INT ; enable external (RX) interrupts
debug 13,10 ,"listening "
@ INT_ENABLE TMR1_INT
x=31
while 1
if rxflag then
;Debug 13,10,"got asc chr ",#rxchar,13,10
tx1reg = rxchar ;echo back
rxflag = 0
endif
if dotflag then
debug "."
dotflag=0
endif
wend
end
read_serial:
ASM
bsf _flag ,7
MOVE?BB RC1REG,_rxchar
INT_RETURN
ENDASM
TOCK:
asm
DECFSZ _x,F
BRA BREXIT
movlw 31
bsf _flag ,0
movwf _x
BREXIT
BCF PIR1 ,0
INT_RETURN
ENDASM
Bookmarks