Foros del Web » Programación para mayores de 30 ;) » Programación General »

Comunicaión PC a 16F84A con Visual C#

Estas en el tema de Comunicaión PC a 16F84A con Visual C# en el foro de Programación General en Foros del Web. Hola: Quiero hacer un proyecto con un PIC 16F84A que lo controla desde el PC por el puerto serie. C#===>PC===>RS232===>MAX232===>PIC-16F84A Tengo un Form1, un Butto1 ...
  #1 (permalink)  
Antiguo 20/01/2008, 10:34
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 727
Antigüedad: 17 años
Puntos: 8
Comunicaión PC a 16F84A con Visual C#

Hola:

Quiero hacer un proyecto con un PIC 16F84A que lo controla desde el PC por el puerto serie.

C#===>PC===>RS232===>MAX232===>PIC-16F84A

Tengo un Form1, un Butto1 y un control PuertoSerie1

Si en las entradas del PIC16F84A se activa unos series de bits d entrada por ejemplo 101, en su salida del PIC muestra 0 0 0 1 1 1 ; (Configuración 5).

En resumen, quiero controlar el PIC desde el PC con el C#. Con el HyperTerminal si se puede, pero es pésimo, prefiero uno propio con C#.

Si encuentran Web con estos tema, también se lo agradezco. Gracias.

Código:
;********************************** Indexado.asm *************************************
;
; Implementar una tabla de la verdad mediante el manejo de tablas grabadas en ROM.
; Por ejemplo, la tabla será de 3 entradas y 6 salidas tal como la siguiente:
; 
; 		C  B     A  |   S5   S4   S3   S2   S1   S0
; 		-----------|---------------------------
; 		0   0   0   |   0    0    1    0    1    0	; (Configuración 0).
; 		0   0   1   |   0    0    1    0    0    1	; (Configuración 1).
; 		0   1   0   |   1    0    0    0    1    1	; (Configuración 2).
; 		0   1   1   |   0    0    1    1    1    1	; (Configuración 3).
; 		1   0   0   |   1    0    0    0    0    0	; (Configuración 4).
; 		1   0   1   |   0    0    0    1    1    1	; (Configuración 5).
; 		1   1   0   |   0    1    0    1    1    1	; (Configuración 6).
; 		1   1   1   |   1    1    1    1    1    1	; (Configuración 7).
;
; Las entradas C, B, A se conectarán a las líneas del puerto A: RA2 (C), RA1 (B) y RA0 (A).
; Las salidas se obtienen en el puerto B:
; RB5 (S5), RB4 (S4), RB3 (S3), RB2 (S2), RB1 (S1) y RB0 (S0).
;
; ZONA DE DATOS **********************************************************************

	LIST		P=16F84A
	INCLUDE		<P16F84A.INC>
	__CONFIG	_CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC

; ZONA DE CÓDIGOS ********************************************************************

	ORG 	0					; El programa comienza en la dirección 0.
Inicio
	bsf		STATUS,RP0			; Acceso al Banco 1.
	clrf	TRISB				; Las líneas del Puerto B se configuran como salida.
	movlw	b'00011111'			; Las 5 líneas del Puerto A se configuran como entrada.
	movwf	TRISA
	bcf		STATUS,RP0			; Acceso al Banco 0.
Principal
	movf	PORTA,W				; Lee el valor de las variables de entrada.
	andlw	b'00000111'			; Se queda con los tres bits de entrada.
	addwf	PCL,F				; Salta a la configuración adecuada.
Tabla
	goto	Configuracion0
	goto	Configuracion1
	goto	Configuracion2
	goto	Configuracion3
	goto	Configuracion4
	goto	Configuracion5
	goto	Configuracion6
	goto	Configuracion7
Configuracion0
	movlw 	b'00001010'			; (Configuración 0).
	goto	ActivaSalida
Configuracion1
	movlw 	b'00001001'			; (Configuración 1).
	goto	ActivaSalida
Configuracion2
	movlw 	b'00100011'			; (Configuración 2).
	goto	ActivaSalida
Configuracion3
	movlw 	b'00001111'			; (Configuración 3).
	goto	ActivaSalida
Configuracion4
	movlw 	b'00100000'			; (Configuración 4).
	goto	ActivaSalida
Configuracion5
	movlw 	b'00000111'			; (Configuración 5).
	goto	ActivaSalida
Configuracion6
	movlw 	b'00010111'			; (Configuración 6).
	goto	ActivaSalida
Configuracion7
	movlw 	b'00111111'			; (Configuración 7).
ActivaSalida
	movwf	PORTB				; Visualiza por el puerto de salida.
	goto 	Principal

	END
  #2 (permalink)  
Antiguo 20/01/2008, 13:06
Avatar de hieloverde  
Fecha de Ingreso: julio-2005
Ubicación: México, D.F
Mensajes: 467
Antigüedad: 18 años, 10 meses
Puntos: 5
Re: Comunicaión PC a 16F84A con Visual C#

Hola REHome,

Que yo sepa el PIC16F84A no tiene UART integrada ¿o si?, a lo que me refiero es, no te seria mas fácil usar un PIC con UART integrada como el 16F876 o 877 ¿? Por que la verdad no entiendo como estas usando el MAX232.


Pero bueno, mira es muy sencillo desde C# poder comunicarte a través de puerto serie con el PIC, lo mas importante es que entre la PC y el dispositivo coincidan el baud rate y los bits de datos. Y luego por ejemplo en C# se puede disparar un evento cada vez que se reciban datos con el fin de que tu aplicación se entere y pueda leer, escribir, etc.


Todo lo puedes configurar perfectamente en las propiedades del puerto serie que hayas agregado a tu proyecto, luego para trabajar con el puerto se tienen varios métodos como:


Open()

Close()
ReadLine()
WriteLine()
etc...

Aquí tienes un buen ejemplo, aunque es por consola te ayudara:


http://msdn2.microsoft.com/en-us/library/system.io.ports.serialport.aspx


Espero te sirva.


Saludos,
__________________
<? echo("1 <script> dice + que 1000 palabras"); ?> EspacioMéxico
  #3 (permalink)  
Antiguo 20/01/2008, 21:01
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 727
Antigüedad: 17 años
Puntos: 8
Re: Comunicaión PC a 16F84A con Visual C#

Tengo el 16F876, pero compré un libro que es sólo el 16F84A. En un futuro cuando domine el 16F84A bien con el asm incluido, me compraré otro libro del 16F876A y algo del 18Fxxx. En la Universidad solo enseñan el 16F84A.

Si sabes algo del 16F876 que no lo conozco bien por ahora, si encuentras ejemplos por ahí, mejor que mejor.

No es por nada, ahora todo el mundo quiere que aprenda con el 16F876A.

Un saludo.

Última edición por REHome; 20/01/2008 a las 21:18
  #4 (permalink)  
Antiguo 21/01/2008, 02:47
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 727
Antigüedad: 17 años
Puntos: 8
Pregunta Re: Comunicaión PC a 16F84A con Visual C#

Para que lo entiendan. Estoy haciendo una interfaz con Visual C# 2008 que desde ahí pueda activar y desactivar los puertos de entrada del 16F84A, es decir, controlar el PIC desde el puerto serie.

Mientras activo y desactivo las entradas del PIC desde la interfaz hecho con C#, físicamente puedo controlar el PIC y la salida que muestra el PIC físicamente también en la Interfaz se ve las salidas activadas y desactivadas.

Lo de arriba que dije, es lo que quiero hacer. Lo que no se, es cómo programar desde la Interfaz en C# que entienda o que comunique con el PIC por el puerto serie COM1.


1- Al ejecutar la aplicación como muestra abajo en la imagen, se ve que los puertos están desactivado debido que no encuentra dispositivo.


2- Primero se configura.


3- Al activar una serie de entradas por ejemplo la 101, muestra a su salida la 000111. Rojo significa 1 activado y la verde significa 0 desactivado.


4- Las entradas que no se usan se quedan como están.


Aquellos que se atrevan a aventurarse a este mundillo, les dejo el código fuente de una plantilla no funcional ya preparado para que lo programen a ver si alguien es capaz de controlar el PIC desde el PC y al revés.

Código fuente hecho con Visual C# 2008 Express

PD:No sabía que esto esté tan complicado.

Última edición por REHome; 21/01/2008 a las 06:00
  #5 (permalink)  
Antiguo 21/01/2008, 11:43
Avatar de hieloverde  
Fecha de Ingreso: julio-2005
Ubicación: México, D.F
Mensajes: 467
Antigüedad: 18 años, 10 meses
Puntos: 5
Re: Comunicaión PC a 16F84A con Visual C#

Cita:
Para que lo entiendan. Estoy haciendo una interfaz con Visual C# 2008 que desde ahí pueda activar y desactivar los puertos de entrada del 16F84A, es decir, controlar el PIC desde el puerto serie.

Mientras activo y desactivo las entradas del PIC desde la interfaz hecho con C#, físicamente puedo controlar el PIC y la salida que muestra el PIC físicamente también en la Interfaz se ve las salidas activadas y desactivadas.

Lo de arriba que dije, es lo que quiero hacer. Lo que no se, es cómo programar desde la Interfaz en C# que entienda o que comunique con el PIC por el puerto serie COM1.
Hola de nuevo, perdón que siga con mi necedad pero ¿como es que estas conectando el 16F84 al MAX232?, lo de la conexión del PIC te lo pregunto por que, como debes saber el MAX232 se usa para convertir los niveles de transmisión y recepción (los del PIC (UART) a la PC y viceversa). No seria malo que mostraras como lo estas conectando.

En el ASM que mostraste al principio, no veo ninguna parte para el control de la interfaz, aunque ahí no me voy a meter pues yo programo el PIC en C. Y reitero que el F84 nunca lo he usado para comunicación con la PC (habiendo otros micros para ello).


Por la parte de la aplicación, los formularios que muestras se entienden (mas o menos), aunque créeme que no le veo ningún sentido a controlar las entradas desde ahí ¿para que? El chiste fuera que esas entradas estuvieran censando algo en el mundo real.

Mas que dejar la plantilla para que alguien mas se ponga a programar (por cierto, el archivo no se puede descomprimir), deberías preguntar tus dudas especificas. Con el ejemplo de Microsoft que te deje arriba debería bastar para que comiences a entender esto.


De hecho no es complicado, simplemente aclárate mas.


Saludos,
__________________
<? echo("1 <script> dice + que 1000 palabras"); ?> EspacioMéxico
  #6 (permalink)  
Antiguo 21/01/2008, 14:50
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 727
Antigüedad: 17 años
Puntos: 8
Re: Comunicaión PC a 16F84A con Visual C#

MAX232 se usa en el 16F84A al derecho y al reves. Si sabes de PIC como dices, me extraña que no sepas esto. Pues, esto del MAX232 es sacado del libro

http://personales.ya.com/cepalacios/...us_Capitulo_20 extraña que

Passoword del archivo = D.P.E.

Me extraña que no sepas sobre el MAX232 en 16F84. Si conoces a alguien que tenga ese libro, mira la página 312 y encuentras el Esquema electrico.

Es para bajar la tensión a TTL.

otros PIC tendrá USART, si lo quieres conectar al puerto serie COM1 te obliga a usar el MAX232.

http://www.tecnotopia.com/b/2004/07/...-rs-232-a-ttl/



Hay un esquema aquí abajo

http://www.hard-concept.net/foro/vie...2e52a466ef3035

Cita:
;************************************ RS232_01.asm **************************************
;
;
; En la pantalla del modulo LCD se visualizarán los caracteres que se reciban a través del
; puerto serie del ordenador. Lo que se escriba por el teclado del ordenador aparecerá en
; la pantalla del sistema con microcontrolador.
;
; Se utilizará un programa de comunicaciones para que el ordenador pueda enviar datos a
; través de su puerto serie. Este programa puede ser el Hyperterminal de Windows o alguno
; similar.
;
; ZONA DE DATOS ************************************************** ***********************

LIST P=16F84A
INCLUDE <P16F84A.INC>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

CBLOCK 0x0C
ENDC

; ZONA DE CÓDIGOS ************************************************** *********************

ORG 0
Inicio
call LCD_Inicializa ; Inicializa el LCD y las líneas que se
call RS232_Inicializa ; van a utilizar en la comunicación con el puerto
Principal ; serie RS232.
call RS232_LeeDato ; Espera recibir un carácter.
call LCD_Caracter ; Lo visualiza.
goto Principal ; Repite el proceso.

INCLUDE <RS232.INC> ; Subrutinas de control de la comunicación con el
INCLUDE <LCD_4BIT.INC> ; puerto serie RS232 del ordenador.
INCLUDE <RETARDOS.INC>
END

  #7 (permalink)  
Antiguo 21/01/2008, 14:53
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 727
Antigüedad: 17 años
Puntos: 8
Re: Comunicaión PC a 16F84A con Visual C#

En la Web www.pic16f84a.com hay esquemas electricos y ejempos con Poteus sobre MAX232 en 16F84A.
  #8 (permalink)  
Antiguo 21/01/2008, 18:04
Avatar de hieloverde  
Fecha de Ingreso: julio-2005
Ubicación: México, D.F
Mensajes: 467
Antigüedad: 18 años, 10 meses
Puntos: 5
Re: Comunicaión PC a 16F84A con Visual C#

A ver, como ya te dije el 16F84A no lo he usado en combinación en el MAX232, lo admito sin ningún problema, habrá muchos como yo que tampoco hayan tenido necesidad de usar un F84 para ese tipo de comunicación y no creo que eso constituya un delito o que signifique que haya que usarlo para conocer sobre PICs, es simplemente una aplicación que se le da como cualquier otra, igualmente tu tampoco tienes obligación de conocer todas las aplicaciones que se le da a cada PIC ¿o si?

No tengas duda de que se para que es el MAX232 y mas allá, pues a diferencia tuya, si he logrado implementar interfaces por puerto serie sin ningún problema y no es complicado, cualquiera puede hacer su interfaz en VC# para eso esta la clase SerialPort y su documentación. Ademas yo nunca dije que los PIC con USART como el 16F877 no necesitaran el MAX232.


Te pones en un plan como que todo el mundo tiene que saber que es lo que estas tratando de hacer, sin decir ni poner mas datos al respecto. Si yo veo que te puedo ayudar, pues obvio que tengo que preguntar que cosa estas haciendo, mas aun si no proporcionas los datos suficientes.


Por mi parte solo trate de ayudarte, pero en fin .
__________________
<? echo("1 <script> dice + que 1000 palabras"); ?> EspacioMéxico
  #9 (permalink)  
Antiguo 22/01/2008, 03:34
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 727
Antigüedad: 17 años
Puntos: 8
Re: Comunicaión PC a 16F84A con Visual C#

Por la forma de hablar te he ofendido. Pido perdón por cualquier ofensa que te haya hecho. Mi intensión no es que todo el mundo sepa o cosas que crees que estaba diciendo. Mi intención era demostrar que si se puede, tampoco hacía falta cabrearse. Tal vez la forma de expresarme no fue la correcta, con lo cual metí la pata, admito el error y te debo disculpas. Ni me había dado cuenta.

Si es fácil hacer una interfaz. ¿Conoces a alguien que lo haya hecho o WEb?

Por ahora conozco a empresas pero gente de la calle como nosotros como que no me he topado alguno.

Un cordial saludos y perdón como te traté.
  #10 (permalink)  
Antiguo 22/01/2008, 13:04
Avatar de hieloverde  
Fecha de Ingreso: julio-2005
Ubicación: México, D.F
Mensajes: 467
Antigüedad: 18 años, 10 meses
Puntos: 5
Re: Comunicaión PC a 16F84A con Visual C#

Claro, no hay problema, entiendo que cuando uno anda buscando respuestas nos ponemos a echar chispas si alguien parece no estar sintonizado, me ha pasado.

Al tema, no te puedo hablar sobre alguien mas, pero así inicie yo:


Primero me pase un muy buen rato tratando de entender esto:

http://www.htservices.com/Tools/VBan...unications.htm

Luego que mas o menos entendía el asunto, me fije en este ejemplo:

http://www.codeproject.com/KB/cs/ser...unication.aspx

Finalmente la parada obligatoria:

http://msdn2.microsoft.com/en-us/lib...erialport.aspx

Luego, no se que tanta experiencia tengas con VC#, de entrada yo no sabia gran cosa, así que antes de nada me la pase practicando duro, tu sabes conocer el manejo de los controles y sus eventos para darme una idea de como tendría que implementar la clase SerialPort.

Esta clase ofrece básicamente la escritura y lectura de lineas (cadenas), entonces lo que envíe tu PIC a la PC debe terminar con un salto de linea, vamos tu PIC debe enviar mensajes para que la PC los lea y luego tu por medio de código tendrás que decir que se hace con determinado mensaje (lo que quieras que signifique)

Como sabes con la hyperterminal el mensaje simplemente se muestra en pantalla, bueno pues puedes empezar con algo parecido en C#...


Por ejemplo, si el PIC envía: “RA1_1” tu programa lo lee mediante ReadLine() e imprima en un label o textbox. También puede suceder que la PC tenga un mensaje que enviar al PIC y lo puede hacer mediante WriteLine()


Yo no tengo un trabajo publicado sobre ello, pero tu mismo conforme practiques te darás cuenta de que no existe un gran misterio sobre la comunicación por puerto serie, todo esta en la visión que cada quien tenga de como usarla.


Saludos,
__________________
<? echo("1 <script> dice + que 1000 palabras"); ?> EspacioMéxico
  #11 (permalink)  
Antiguo 23/01/2008, 01:11
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 727
Antigüedad: 17 años
Puntos: 8
Re: Comunicaión PC a 16F84A con Visual C#

Muchas gracias, ahora me toca investigar.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:00.