Desde 1994 en la Red. La pagina de los aficionados a la electronica, informatica y otras curiosidades de la vida. No dudes en visitarnos.
Ahora 3 visitas.| 3410602 Visitas (desde Dic. 2011), hoy: 229 Visitas 515 Pag. Vistas , ultimos 36 dias: 10080 Visitas. 47992 Pag. Vistas. Tu IP: 3.12.36.30
Que ando curioseando:
AutosuficienciaCosas de casaElectronicaEn InternetInformáticaMundo MisticoSin categoríaSociedadTe lo recomiendo

COMUNICACION SERIE CON PIC (16f84)

Se trata de una breve descripcion entre la interfas rs232, un programa en el pic y un programa en visual basic 6 para interactuar con el y asi conocer las intruciones basicas para jugar con el puerto serie, de echo el PIC es una parte extra ya que no se requiere ya que puede ser sustituido por otra compu o en su defecto haciendo un puente entre TX y RX del puerto serial que es lo que esta haciendo el pic esto es trabaja en forma de eco o sea todo lo que le envie la compu lo va e rebotar o retransmitir.

El circuito:

El circuito es el siguiente:

como vez no se requiere de mucho, si no entiendes de pic’s te recomiendo revises en internet por un curso o veas como trabajar con el PIC16f84 en la seccion de proyectos de esta pagina.

Trabajando con el visual Basic 6

la forma de trabajar en visula basic para el puero serie se resumen en seguida.

1.- Definir velocidades y puerto a abrir
MSComm1.setting=”9600,N,8,1″ ;velociad 9600, no paridad, 8 cantidad de bits, 1 bit de parada.
MSComm1.CommPort = 1 ; selecciona el Com1
MSComm1.InputLen=0 ; pone buffer a cero (opcional)

2.- Abrir puerto
MSComm1.PortOpen= True

3.- leer o enviar segun sea el caso

para enviar
MSComm1.Output = “Texto a enviar”

para leer
Text1.Text=MSComm1.Input

4.- cerrar puerto
MSComm1.PortOpen = False

Nota: antes de abrir o cerrar un puerto hay que ver si no esta ya abierto y no volverlo a abrir o cerrar y no se ha abierto por que si no marcara error el programa y se cierra, para esto se deben de poner rutinas de error pero para entender el programa es mejor no poner mucho rollo.

Programa en visual basic.

El programa envia una palabra a la vez con una pausa ya que si no se le da pausa el PIC retransmite informacion.

VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Begin VB.Form Form1
   Caption         =   "Form1"
   ClientHeight    =   5040
   ClientLeft      =   60
   ClientTop       =   450
   ClientWidth     =   5940
   LinkTopic       =   "Form1"
   ScaleHeight     =   5040
   ScaleWidth      =   5940
   StartUpPosition =   3  'Windows Default
   Begin MSCommLib.MSComm MSComm1
      Left            =   3120
      Top             =   3240
      _ExtentX        =   1005
      _ExtentY        =   1005
      _Version        =   393216
      DTREnable       =   -1  'True
   End
   Begin VB.TextBox Text1
      Height          =   2415
      Left            =   120
      MultiLine       =   -1  'True
      TabIndex        =   1
      Top             =   240
      Width           =   4335
   End
   Begin VB.CommandButton Command1
      Caption         =   "Command1"
      Height          =   495
      Left            =   1440
      TabIndex        =   0
      Top             =   4200
      Width           =   1215
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'Option Explicit
Dim i As Integer, Letra(34)
Dim InBuff As String
Private Sub Form_Load()
With MSComm1
.CommPort = 1
'.Handshaking = 2 - comRTS
.RThreshold = 1
.RTSEnable = True
.Settings = "9600,n,8,1"
.SThreshold = 1
.PortOpen = True
End With
Text1.Text = ""
End Sub
Private Sub Command1_Click()
Letra(0) = "h"
Letra(1) = "o"
Letra(2) = "l"
Letra(3) = "a"

For i = 0 To 3
MSComm1.Output = Letra(i)
Delay 1
Next

End Sub

Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
End Sub

Private Sub MSComm1_OnComm()
InBuff = MSComm1.Input
Text1.Text = Text1.Text & InBuff
End Sub
Private Sub Delay(delaytime As Long) 'no se pero no funciona si se definen estas var., dummy no se que tipo es
starter = Timer 'este timer no se ni ke peks, de hecho no tenemos reloj
  Do While Timer < starter + (delaytime / 100)
    dummy = DoEvents()
  Loop
End Sub

descarga
El programa del PIC

El pseudocodigo seria:
-recive el dato
-reenvia dato de regreso
Abajo dejo el asm y hexadecimal por si lo quieres grabar en un PIC.
Como ya dije consiste basicamente en recibir y retransmitir el dato enviado.

descarga

El cable
El cable que necesitas solo requiere de tres hilos uno de Tx, otro para Rx y la tierra y es como el siguiente.

Como sea no necesitas de nada ya que haciendo un puente entre las terminales 2 y 3 del DB9 de tu computadora se obtiene el efecto eco.

Fuente: http://wk3.iespana.es/serial.htm

Tambien te puede interesar mi 2º curso de programación de pics:

http://www.pesadillo.com/pesadillo/?p=4783 donde aprenderás a controlar un pic a través del puerto rs232.

Todo el contenido de los cursos buscando “curso pics” en la web.

Escribe un comentario

Tu comentario