TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: Marwuin en 01 de Julio de 2010, 10:56:43
-
Resulta que quiero comunicar dos PIC 16f877 y estoy simulando en Proteus y no me funciona, a ver si alguien me ayuda con el codigo en cuanto al error que estaria cometiendo. Es un programa sencillo solo para verificar la comunicacion.
para el trasmisor
'----------------------------------------------------------------
'CONFIGURACIÓN PRELIMINAR
'----------------------------------------------------------------
Device = 16F877 ' Define el Micro a Utilizar
Xtal = 20 ' Define velocidad resonador
'----------------------------------------------------------------
'DEFINICION DE VARIABLES, CONSTANTES Y PUERTOS I/O
'----------------------------------------------------------------
TRISC = $00
Declare Hserial_Baud 9600
Declare Hserial_RCSTA %10010000 ' Configura el registro RCSTA
Declare Hserial_TXSTA %00100000 ' Configura el registro XSTA
Declare Hserial_Clear On ' Limpia el bit de "Overrun Error"
' antes de comenzar leer el puerto
Dim LOOP As Byte
Dim Dato As Byte ' Variable Datos
Symbol true = 1
'----------------------------------------------------------------
' PROGRAMA PRINCIPAL
'----------------------------------------------------------------
Main:
For LOOP = 0 To 5
SerOut PORTC.6, 16780, ["A"]
DelayMS 500
Next
GoTo Main
para el receptor
'CONFIGURACIÓN PRELIMINAR
'----------------------------------------------------------------
Device = 16F877'6 ' Define el Micro a Utilizar
Xtal = 20 ' Define velocidad resonador
'----------------------------------------------------------------
'DEFINICION DE VARIABLES, CONSTANTES Y PUERTOS I/O
'----------------------------------------------------------------
TRISB.2 = 0 ' Declara a PORTB.2 como Salida Dig.
PORTB.2 = 0 ' Coloca en PORTB.2 un cero (0) Lógico
Declare LCD_ENPin PORTB.3 ' Pin de Enable LCD conec. al PORTB.3
Declare LCD_RSPin PORTB.1 ' Pin de RS LCD conec. al PORTB.1
'SERIAL
TRISC = $FF
Declare Hserial_Baud 9600'4800
Declare Hserial_RCSTA %10010000 ' Configura el registro RCSTA
Declare Hserial_TXSTA %00100000 ' Configura el registro XSTA
Declare Hserial_Clear On ' Limpia el bit de "Overrun Error"
' antes de comenzar leer el puerto
Dim Dato_Ser As Byte
'----------------------------------------------------------------
' PROGRAMA PRINCIPAL
'----------------------------------------------------------------
Main:
SerIn PORTC.7, 16780, [Dato_Ser]
If Dato_Ser = "A" Then
Print $FE,1
Print At 1,1, "Prueba de Tx/Rx "
Print At 2,2, "Dec:", Dec Dato_Ser
Else
Print At 1,1,"no funciona "
Print At 2,2, "Dec:", Dato_Ser
EndIf
GoTo Main
End
Desde el trasmisor Envio la letra A y en el receptor leo y si recibe la letra A manada un mensaje a la LCD. Aqui va el diagrama en proteus.
(http://)
-
Hola buenas tardes, estimado paisano; entrando en tema noto varios casas que no estan como deberian tienes que estar claro con tu compilador proton ya que estas declarando lo del puerto y luego usas serout y serin que son para usar rs232 de manera software mientras que la declaracion es para usarlo via hardware lo otro es que en el receptor no veo bien lo de la declaracion de la lcd y ademas tu no indicas cual realmente es tu problema.
Saludos y cualquier cosa estoy a la orden.
Atten.
Alexander Santana.
Venezuela-Barcelona.
-
Gracias por responder.
En base a lo que afirmas que comandos me recomendarias en lugar de serin y serout
Con respecto a la LCD no tengo problemas asi funcion perfectamente, solo tengo problemas en la comunicacion PIC-PIC estoy estancado ya que estoy empezando con este programa.
Gracias... Saludos
-
si vas usar hardware del pic usa hserout y hserin sino usa los que tu tenias pero eso es por software.
Saludos.
Atten.
Alexander Santana.
Venezuela-Barcelona.
-
Problema solucionado, esra la configuracion del Crystal en proteus... Tenia uno en 4M y el otro en 20M (un trabajo darme cuenta)... Saludos y gracias