Hola a todos amigos de TODOPIC, como indica el encabezado de este tema tengo un gran problema para hacer funcionar un circuito que tome prestado de la pagina web de
PABLIN, para presentarlo como proyecto para una clase en particular a continuacion adjunto el esquema del circuito
Este circuito accionara los reles mediante una orden enviada desde el puerto serial RS-232 de una PC, con ayuda de una interfaz grafica implementada en visual basic VB 6.0, la cuestion es que ya monte el circuito y logre realizar la interfaz grafica con la ayuda de unos colaboradores del foro de
"Programacion en Visual Basic", pero al momento de enviar una orden por el puerto no se acciona ningun LED,
NOTA: (Estoy utilizando leds en lugar de los reles) , he intentado de todo, no se si es la programacion del PIC o la interfaz grafica la que esta ocasionando el problema o en ultima instancia es la configuracion del propio circuito.
Estoy desesperado
, tengo que entregar los resultados dentro de poco y aun no lo he resuelto, estare muy agradecido si logran ayudarme en esta travesia electronica, cualquier sugerencia o correccion de su parte sera
BIENVENIDA!!! A continuacion les adjunto el programa del PIC y de la interfaz grafica en Visual Basic:
Programa del PIC--------------------------------------------------------------------------------------------------------------------------------------------------
LIST p=16F84A
processor PIC16F84A
#include "P16F84A.INC"
__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
ERRORLEVEL -302
#DEFINE rx 2 ; bit de recepcion de datos en serie
CBLOCK 0x0C
r0d ; registro de proposito general
r0e ; registro de proposito general
conta ; registro de proposito general(contador)
recep ; buffer de entrada
ENDC
org 00h ;vector de reset
goto inicio ;salta al comienzo del programa
org 05h ;saltea el vector de interrupcion
start movlw .124 ;retardo para generar bit de arranque
goto startup
delay movlw .83 ;retardo para generar bit de datos
startup movwf r0e
redo nop ;pierde 12 microsegundos
nop
decfsz r0e,F ;resta 1 al retardo
goto redo ;si falta el tiempo itera
retlw 0 ;si termino retorna limpiando w
recibir nop ;recibe un byte por RS232
clrf recep ;limpia el buffer de recepcion
btfss PORTA,rx ;mira el estado de la linea serie
goto $-1 ;si esta inactiva queda a la espera
call start ;retardo para bit de arranque
rec movlw .8 ;carga cantidad de bits a recibir
movwf conta
rnext bcf STATUS,C ;limpia el carry
btfss PORTA,rx ;mira la linea de recepcion
bsf STATUS,C ;si esta en alto sube el carry
rrf recep,W ;rota el buffer de recepcion
call delay ;retardo entre bits
decfsz conta,F ;resta 1 a la cantid. de bits a recibir
goto rnext ;si faltan bits para recibir itera
retlw 0 ;si termino sale y limpia w
inicio bsf STATUS,RP0 ;selecciona la pagina 1 de memoria
movlw 0ffh ;programa el puerto "a" como entradas
movwf TRISA
movlw 00h ;programa el puerto "b" como salidas
movwf TRISB
bcf STATUS,RP0 ;selecciona la pagina 0 de memoria
clrf recep ;limpia el buffer de recepcion
clrf PORTB ;apaga todas las salidas
ciclo call recibir ;queda a la espera de recibir datos
movf recep,w ;carga en w el dato recibido
movwf PORTB ;manda el dato a las salidas
goto ciclo ;itera indefinidamente
end
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
INTERFAZ GRAFICAOption Explicit
Dim Salida As Byte
Private Sub CmdGo_Click()
Dim i As Integer
Salida = 0
For i = Chk.LBound To Chk.UBound
Salida = Salida + Chk(i).Value * 2 ^ i
Next
'Salida contiene el valor a enviar
MsgBox Salida
End Sub
Private Sub ENVIAR_Click()
MSComm1.Output = Salida
End Sub
Private Sub conectar_Click()
'comprueva que el puerto este cerrado para poder abrirlo
If MSComm1.PortOpen = False Then
'determina el puerto que seleccionado
MSComm1.CommPort = 1
MSComm1.PortOpen = True
Else
MSComm1.CommPort = 2
End If
'determina: 9600-Velocidad en Baudios, N-No utiliza ninguna paridad,
'8-Cantidad de bits de envio y recepcion por paquete,
'1-Determina los bits de parada
MSComm1.Settings = "9600,N,8,1"
'lee todo el buffer de entrada para que quede vacio
MSComm1.InputLen = 0
'Abre el puerto seleccionado
MSComm1.PortOpen = True
Me.Caption = "Conectado por el puerto " & MSComm1.CommPort
End Sub
Private Sub Desconectar_Click()
If MSComm1.PortOpen Then
'cierra el puerto
MSComm1.PortOpen = False
Me.Caption = "Desconectado"
End If
End Sub
Private Sub Form_Load()
Dim i As Integer
'Insertar números a los pulsadores
For i = Chk.LBound To Chk.UBound
Chk(i).Caption = i
Next
End Sub
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Por ultimo les adjunto el programa en VB GRACIAS POR MOLESTARSE EN LEER MI GRAN INCONVENIENTE!!!!