Llevo algún tiempo intentando conseguir comunicar dos pics entre sí.Los siguientes programas funcionan con la simulación, pero cuando los llevo al pic no obtengo nada.La electrónica he comprobado que está bien.Para comprobar que el lcd funciona visualizo el mensaje "hola mundo", pero cuando transmito no consigo visualizar nada en el lcd.Estos programas forman parte de otros más largos.
emisor:Define CONF_WORD = 0x3184
'Trabajando con servos, PIC12F629
Define CLOCK_FREQUENCY = 4
Define SEROUT_DELAYUS = 1000
AllDigital
'Define SIMULATION_WAITMS_VALUE = 1
Symbol rojo = GPIO.1
Symbol boton = GPIO.2
Symbol verde = GPIO.4
Symbol rele = GPIO.0
Symbol servo = GPIO.5
TRISIO = %001100
'#########################################################################
'define variables
Dim velocidad As Byte
Dim codigo As Byte
Dim posicion As Byte '1 centro 2-dch 3-izq posicion servo
Dim pulso_dch As Byte 'angulo dch servo
Dim pulso_izq As Byte 'angulo izq servo
Dim i As Byte
codigo = 0
'##########################################################################
Gosub leer
rojo = 0
verde = 0
servo = 0
rele = 0
velocidad = 12
'Enable
'######################################################
'inicio programa
main:
Gosub leer
OPTION.INTEDG = 1
INTCON.INTE = 1
INTCON.GIE = 1
Enable
'Serin GPIO.3, 300, total
Goto main
End
'###################################################
On Interrupt
Read 01, posicion
Read 03, pulso_dch
Read 04, pulso_izq
Read 06, velocidad
For i = 1 To 12
Serout GPIO.1, 300, "V", CrLf
Next i
WaitMs 5000
For i = 1 To 12
Serout GPIO.1, 300, velocidad, CrLf
Next i
'Serout GPIO.1, 300, #velocidad, CrLf
INTCON.INTF = 0
Resume
leer:
Read 01, posicion
Read 03, pulso_dch
Read 04, pulso_izq
Read 06, velocidad
Return
receptor
Define CONF_WORD = 0x3d31
'pic16f876
Define CLOCK_FREQUENCY = 4
AllDigital
Define LCD_BITS = 4 'indicamos que el bus de datos del lcd sera de 4bit
Define LCD_DREG = porta 'el bus de datos sera el puerto A
Define LCD_DBIT = 0 'el bus de datos seran los 4 bit menos significativos del puerto A
Define LCD_RSREG = porta 'el bit de control RS sera del puerto B
Define LCD_RSBIT = 4 'se usara el Ra4 como RS
Define LCD_EREG = portb 'el bit de control E sera del puerto B
Define LCD_EBIT = 3 'se usara el RB6 como E
'Define LCD_RWREG = PORTA 'el bit de control RW sera del puerto A (si se suprime el compilador no protesta)
'Define LCD_RWBIT = 5 'se usara el RA5 como RW (si se suprime el compilador no protesta)
Define LCD_COMMANDUS = 2000 'Tiempo de espera despues de ejecutar un comand del lcd en uSeg.
Define LCD_DATAUS = 100 'Tiempo de espera despues de enviar un dato al LCD en uSeg.
Define LCD_INITMS = 100 '(50) 'Tiempo de espera despues de inicializar el Display, solo se ejecuta una vez en mSeg., trucado para simulacion
'------------------------------------------------------------------------------------------------------
Define SIMULATION_WAITMS_VALUE = 1 'suprime los tiempos de espera Waitms, solo
Define SEROUT_DELAYUS = 1000
trisa = 0
trisb = %00001111
trisc = %00001111 'puerto C teclado 4bits bajos salidas 4 altos entradas
Symbol fila1 = portc.3
Symbol fila2 = portc.2
Symbol fila3 = portc.1
Symbol fila4 = portc.0
Symbol col1 = portc.4
Symbol col2 = portc.5
Symbol col3 = portc.6
Symbol col4 = portc.7
'#########################################################################
'define variables
Dim numero As Byte
Dim codigo As Byte
Dim v As Byte
Dim a As Byte
Dim b As Byte
Dim i As Byte
'Dim velocidad As Word
'Dim valor As Word
Lcdinit
WaitMs 1000
'#########################################################################
main: 'comienza el programa principal
a = 0
b = 0
v = 0
numero = 0
Lcdcmdout LcdClear
WaitUs 1000
Lcdout "hola mundo"
'WaitUs 3000
'codigo = "V"
Lcdcmdout LcdClear
WaitUs 3000
Serin portb.0, 300, codigo
'Lcdcmdout LcdClear
'WaitUs 1000
For i = 1 To 12
Lcdout codigo
WaitUs 1000
Lcdcmdout LcdClear
Next i
Goto main
End
No encuentro en donde puede estar el fallo y ya no sé que más puedo hacer.
Muchas gracias