TODOPIC
Lenguajes de programación para PC => C, C#, C++ => Mensaje iniciado por: Meta en 20 de Enero de 2008, 17:04:17
-
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.
;********************************** 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
-
En si cual es tu problema, la recepcion serial?.
Si mal no recuerdo este pedazo de programa es del libro de la editorial RA-MA(el libro lila), ahi explican como implemetar un usart por software.
-
Es problema es que no se controlar el PIC mediante el Visual C#. Por ejemplo:
Que en una ventana hecha con Visual C#, tengo botones que al activar las entradas del PIC por ahí, responda el PIC las salidas físicamente y de paso que también se muestre en C#. Ese es el único que quiero hacer y que no viene en el libro.
Hablando del libro, la verdad el 16F84A hay que ponerle periféricos hasta para convertidores A/D, Max232 mientras en el 16F876A y según aquí en el foro los 18Fxxx ya vienen incluido. Se nota que ya es antiguo el 16F84A, pero aún se usa.
Cuando pueda pongo un ejemplo gráfico.
-
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.
(http://usuarios.lycos.es/reparaplaystation/cs/hp/1.jpg)
2- Primero se configura.
(http://usuarios.lycos.es/reparaplaystation/cs/hp/2.jpg)
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.
(http://usuarios.lycos.es/reparaplaystation/cs/hp/4.jpg)
4- Las entradas que no se usan se quedan como están.
(http://usuarios.lycos.es/reparaplaystation/cs/hp/3.jpg)
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.
Abajo del foro de este mismo POST se puede ve la descarga HP.rar
PD:No sabía que esto esté tan complicado.
-
Meta, clickando el enlace que has dejado me dice el navegador que no se puede encontrar la página web... ¿?
-
Por si no lo has visto.
http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=20141.0;attach=5934
-
Ok, dijiste que con hyperterminal si se puede, ¿ya lo habías probado?
En .NET ya hay un componente para manejo del puerto serie, puede serte de ayuda.