Hola amigos

, me podian ayudar en un problemita?
Estoy haciendo un robot sumo, la plaqueta del robot anda re bien (en protoboard), y en la plaqueta, cuando conecto los motores se me resetea a veces cuando detecta algo, y al sacar los motores, la plaqueta funciona correctamente... no encuentro donde esta el problema.
Los motores son de 12V y son manejados por reles y por el integrado ULN2083A (integrados con 7 darlingtons). Probé hacer de todo, conectar capacitores bien cerca del PIC y del Motor, poner un diodo en inversa en la batería, pero el problema persiste...

Podria ser problema de la programacion?
Aquí adjunto el programa:
;Programa del robot "Gantz"
;Integrantes: Kuo Yao Ming, Mariano Rodriguez Lusardi
;UTN - Escuela Tecnológica Werner von Siemens
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON &_XT_OSC
LIST P=16F84
INCLUDE <P16F84.INC>
CBLOCK 0CH
CONTA
CONTB
CONTC
CONTD
CONTE
CONTF
ENDC
ORG 0
INICIO
BSF STATUS,RP0
MOVLW B'11110000'
MOVWF TRISB
MOVLW B'0011111'
MOVWF TRISA
BCF STATUS,RP0
MOVLW B'0000'
MOVWF PORTB
CALL _5SEG
BTFSS PORTA,0
GOTO PROGRAMA
BTFSS PORTA,1
GOTO PROGRAMA
BTFSS PORTA,2
GOTO PROGRAMA
GOTO IZ
PROGRAMA
MOVF PORTA,W
XORLW B'11111111'
ANDLW B'00000111'
ADDWF PCL,F
TABLA
GOTO PROGRAMA
GOTO CASO2
GOTO CASO3
GOTO CASO4
GOTO CASO5
GOTO CASO6
GOTO CASO7
GOTO CASO8
CASO2
MOVLW B'1001'
GOTO SALIDA
CASO3
MOVLW B'0110'
GOTO SALIDA
CASO4
MOVLW B'0000'
GOTO SALIDA
CASO5
MOVLW B'0101'
GOTO SALIDA
CASO6
MOVLW B'0101'
GOTO SALIDA
CASO7
MOVLW B'0101'
GOTO SALIDA
CASO8
MOVLW B'0101'
SALIDA
MOVWF PORTB
GOTO PROGRAMA
IZ
MOVLW B'1001'
MOVWF PORTB
GOTO PROGRAMA
_5SEG
MOVLW D'50'
GOTO RETARDIN
RETARDIN
MOVWF CONTC
BE2
MOVLW D'100'
MOVWF CONTB
BE
MOVLW D'249'
MOVWF CONTA
BI
NOP
DECFSZ CONTA,F
GOTO BI
DECFSZ CONTB,F
GOTO BE
DECFSZ CONTC,F
GOTO BE2
RETURN
END
Muchas Gracias por leer el post.

Saludos.
Atte. Kuo Yao Ming