Hello.
I'm trying to use mr. Taylor's MIBAM and USART communication in a program but can't get anywhere. I guess I'm ruining something with content of some of the registers because approximately 2 seconds after sending data to the PIC it resets.
Please, someone give me a hand with this.
Code:
'pbp250a...
'16F887...
DEFINE OSC 20
pause 20
ASM
__CONFIG _CONFIG1, _DEBUG_OFF & _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_ON & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_ON & _HS_OSC
__CONFIG _CONFIG2, _WRT_OFF & _BOR21V
ENDASM
RCSTA = $90
TXSTA = $24
SPBRG = 129
DEFINE HSER_CLROERR 1
RXbff var byte(32)
cnt var byte
n var byte
tmp var byte
OERR var RCSTA.1
CREN var RCSTA.4
RCIF var PIR1.5
RCIE var PIE1.5
'GIE var INTCON.7
'PEIE var INTCON.6
ANSEL = 0
ANSELH = 0
WPUB=0
OPTION_REG.7 = 1
porta = 0
portb = 0
portc = %11000000
portd = 7
porte = 0
trisa = %00010000
trisb = %00000000
trisc = %10000000
trisd = %00000000
trise = %00000000
pause 500
;____[ Interrupt Context save locations ]___________________________________
wsave var byte $20 SYSTEM
wsave1 var byte $A0 SYSTEM
wsave2 var byte $120 SYSTEM
wsave3 var byte $1A0 SYSTEM
ssave var byte BANK0 SYSTEM
psave var byte BANK0 SYSTEM
;___________________________________________________________________________
;----[ MIBAM Setup ]--------------------------------------------------------
BAM_COUNT CON 3 ; How many BAM Pins are used?
INCLUDE "MIBAM.pbp" ; Mirror Image BAM module
Red var byte
Green var byte
Blue var byte
ASM
BAM_LIST macro ; Define PIN's to use for BAM
BAM_PIN (PORTB,0, Red) ; and the associated Duty variables
BAM_PIN (PORTB,1, Green)
BAM_PIN (PORTB,2, Blue)
endm
BAM_INIT BAM_LIST ; Initialize the Pins
ENDASM
;___________________________________________________________________________
Red = 170: Green = 255: Blue = 120
cnt = 0
'PEIE = 1
'GIE = 1
RCIE = 1
'*****************
MAIN:
'*****************
if OERR then
CREN=0
CREN=1
endif
while RCIF
RXbff[cnt] = RCREG
cnt = cnt + 1
wend
if RXbff[cnt-1] = "~" then
for n = 0 to cnt-1
TXREG = RXbff[n]
pause 3
' hserout [RXbff[n], 32]
next n
TXREG = 13: TXREG = 10
pause 3
' hserout [13, 10]
cnt = 0
endif
goto MAIN
'*****************
Bookmarks