Archivo

Posts Tagged ‘Comunicacion serial’

PROGRAMA DE COMUNICACION SERIAL PC A PC CON VISUAL BASIC MODO CONSOLA

octubre 13, 2008 7 comentarios

En primer lugar quiero agradecer por la aceptación que han tenido mis artículos y sus opiniones, las cuales me han motivado a seguir escribiendo y brindando información a todo el que la necesita.

Este tutorial consiste en un programa escrito en lenguaje VISUAL BASIC “consola”, que permite la conexión entre 2 computador a través del puerto serial, dicho programa es muy sencillo no necesita de configuración de la rata de transmisión, ni tampoco del control de flujo, como se configuran en otros programas como el hyperterminal.

<!–[if !supportLists]–>1- <!–[endif]–>Creación del proyecto: este fue realizado con VISUAL STUDIO 2005 pero es igual para algunas versiones anteriores y para la nueva versión 2008.

Le damos nuevo proyecto y le damos seleccionamos VISUAL BASIC aplicación consola

<!–[if gte vml 1]> <![endif]–><!–[if !vml]–><!–[endif]–>

Después de crear el proyecto nos aparecerá algo en la pantalla como esto:

<!–[if gte vml 1]> <![endif]–><!–[if !vml]–><!–[endif]–>

<!–[if !supportLists]–>2- <!–[endif]–>Programa: para usarlo solo tienen que copiar y pegar sobre lo que les aparece en el proyecto que crearon:

PROGRAMA DE TRANSMICION DE DATOS

Module Module1

Sub SendSerialData(ByVal data As String)

‘Envia una cadena string al puerto serie

Dim Data As String

Data = “HOLA” ‘coloca lo que desees transmitir al puerto.

Using com1 As IO.Ports.SerialPort = _

My.Computer.Ports.OpenSerialPort(“COM1”)

com1.WriteLine(data)

com1.Close()

End Using

End Sub

End Module

PROGRAMA DE RECEPCIÓN DE DATOS

Module Module1

Function ReceiveSerialData() As String

‘Recibe una cadena string que halla sido escrita en el puerto

Dim returnStr As String = “”

Using com1 As IO.Ports.SerialPort = _

My.Computer.Ports.OpenSerialPort(“COM1”)

Do

Dim Incoming As String = com1.ReadLine()

If Incoming Is Nothing Then

Exit Do

Else

 

returnStr &= Incoming & vbCrLf

Console.WriteLine(returnStr)

End If

Loop

com1.Close()

End Using

End Function

End Module

 

3 – Explicación: el programa consiste en un modulo de transmisión de datos al puerto serie y otro de recepción de datos, también se puedes combinar las 2 programas para que ambos escriban y lean.

EL programa de recepción debe estar en modo run, cuando este todo listo se ejecutara el de transmisión quien enviara la cadena string solo una vez y deberá ser recibida por el otro PC inmediatamente.

Los programas no pueden ser probados en el mismo PC por la utilización del puerto del puerto serial.

Espero que les ejecute a todos y que les sirva.

Cualquier duda comentario o sugerencia será recibida.

De nuevo gracias por los comentarios de los anteriores artículos y/o tutoriales son una motivación para seguir escribiendo.

 

Anuncios

PROGRAMA DE COMUNICACION SERIAL EN ASSEMBLER PARA EL MICRONTROLADOR HC908GP32

agosto 18, 2008 12 comentarios

El siguiente es un código empleado para establecer una comunicación serial entre un computador y un microcontrolador de la marca Motorola de referencia HC908GP32.

El condigo consiste en enviar caracteres desde teclado de un computador conectado por el puerto serial hasta el microcontrolador, este a su vez tiene conectado por su puerto PTB un display de 7 segmentos de la siguiente manera:

Display de 7 segmentos —————— Microcontrolador ———————PC

El microcontrolador recibe los caracteres desde el PC si son numero desde 0 hasta 9 entonces los muestra en el display de la contrario muestra la letra E indicando error.

El siguiente es el código que se debe quemar en el microcontrolador explicado paso a paso.

FLS      EQU $8000 ; se iniciará en la posición 8000 de la memoria

RST      EQU $FFFE

CONFIG1  EQU $1F

PTB      EQU $01 ;se inicia el Puerto B

DDRB     EQU $05 ;se configura el DRRB

SCDR     EQU $0018

TC       EQU $06

SCISR    EQU $0016

SCRF     EQU $05

CONT     EQU $60 ;se crea apuntador en la posición 60 de nombre CONT

DATO     EQU $61 ;se crea apuntador en la posición 61 de nombre DATO

VAR      EQU $62 ;se crea apuntador en la posición 62 de nombre VAR

SCC1     EQU $0013

SCC2     EQU $0014

SCBR     EQU $0019

ORG   FLS ;se configura como punto de partida del programa FLS

MAIN:    BSET  0,CONFIG1 ; de deshabilita el COP

;Se configura todo el sistema para establecer la comunicación

MOV   #$03,SCBR

BSET  6,SCC1

BSET  2,SCC2

BSET  3,SCC2

MOV   #$FF,DDRB ; configure todo el Puerto B como salida

INICIO:  MOV   #$00,PTB ; apaga todo el puerto

LDHX  #MSG ;carga el mensaje “INGRESE UN NUMERO”

TX:      LDA   ,X

CMP   #$FF

BEQ   PRINT

BRCLR TC,SCISR,* ; Espera que se envié un dato al micro

STA   SCDR

AIX   #$01

BRA   TX

PRINT:   BSR   DELAY

BRCLR SCRF,SCISR,*

LDA   SCDR

CMP   #$39

BGT   ERROR

CMP   #$30

BLO   ERROR

SUB   #$30

STA   DATO

LDHX  #TABLA ;carga el número correspondiente en la tabla

TXA

ADD   DATO

TAX

LDA   ,X

EOR   #$80

STA   PTB ; envía el número correspondiente al display

BSR   DELAY

BRA   INICIO

ERROR:

MOV   #$F9,PTB ; envía la letra E al display

BSR   DELAY ; va a la subrutina para esperar un tiempo

BRA   INICIO ; vuelve al inicio del programa

; genera una rutina temporizadora con la variable VAR

DELAY:   MOV   #$00,CONT

SIGA:    CLR   VAR

LAZO:    NOP

NOP

NOP

NOP

NOP

DEC   VAR

BNE   LAZO

DEC   CONT

BNE   SIGA

RTS

; envía un mensaje al computador “INGRESE UN NUMERO”

MSG:     DB    “INGRESE UN NUMERO”,$FF

TABLA:   DB    3F ;tabla de los número del 0 al 9

DB    06

DB    5B

DB    4F

DB    66

DB    6D

DB    7D

DB    07

DB    7F

DB    67

ORG   RST

DW    MAIN ; regresa al comienzo del programa

END ;termina el programa

Agradeciemientos a Monica Ovadia Cardona

Alguna duda o sugerencia por favor pongan el comentario.

Gracias.