pic 16f877A comunicacion serial

hola a todos....
por favor quisiera que me ayuden ....
estoy trabajando en un proyecto de comunicacion serial con matlab y el pic 16f628a, he probado en una computadora con el puerto serial de una pc de escritorio y funciona, ahora quiero utilizar mi lapto como no tiene ese puerto, compre un adaptador usb a serial, pero no logro estblecer la conexion , me podrían ayudar,........
mido los voltajes entre los pines del puerto el de tx y tierra y me da -6 voltios, y en la pc de escritorio si me da -12 voltios entre dichos pines, alguien me pudiera decir cual podría ser el problema
 
Hola a todos:
Alguien me podria aclarar una duda de la comunicacion serie en 8051 o cualquier PIC. El problema es que quisiera saber si cuando se ejecuta la instruccion MOV SBUF,#'A' por ejemplo, la comunicacion es independiente es decir paralela a la CPU del micro como tal, la CPU sigue con su programa y aparte de ella se ejecuta como si fuera un proceso independiente la comunicacion serie hasta la activacion de RI o TI.
Porque digo esto, es que me he topado con el siguiente codigo:
MOV SBUF, #'A'
JNB TI,$
CLR TI


y creo que no es el mas apropiado, sin embargo tengo este otro:
org 023h
jmp serie


serie: JB RI, sal
CLR TI
RETI
sal: CLR RI
RETI


y es que en muchos libros me he topado con el primero, pero creo que tiene un problema y es que el se mantiene haciendo el lazo hasta que termine la transmision o recepcion y no utiliza el vector de interrupciones.
Cual de los dos es el mas conveniente para una practica real?

Hola marcelocr5
Creo que debes adaptarlo con el CI o Driver max232 que es el que adpata un micro de 5V aproximadamente al 15-25V, busca informacion sobre este CI
 
Última edición:
hOLA BUENAS TARDES SE QUE ESTA PREGUNTA ES DE HACE UN PAR DE AÑOS PERO QUIERO RESPONDER PARA FUTURAS CONSULTAS DE OTROS COMPAÑEROS

PASOS A SEGUIR PARA HACER UNA TRANSMISION EN SERIE
´
1.-CONFIGURAR PIC
A) CONFIGURAR RC6/TX COMO SALIDA (TRANSMISOR SERIAL TX)
B) CONFIGURAR RC7/RX COMO ENTRADA (RECEPCION SERIAL RX)
C) CONFIGURAR PORTA COMO ENTRADA
D) CONFIGURAR PORTA COMO DIGITAL

2.- HABILITAR USART (PUERTO SERIAL) COMO ASINCRONO (SOLO ENVIAR Y RECIBIR DATOS)
A) SYNC=0 (MODO ASINCRONO)
B) SPEN=1 (HABILITAR PUERTO SERIE)

3.- SI SE USAN INTERRUPCION HABILITAR TXIE=1 Y HABILITAR GIE Y PEIE

4.- TX9=0 PARA UNA TRANSMISION DE 8 BITS

5.- VALORES ADECUADOS PARA VELOCIDAD DE TRANSMISION (BAUD RATE)
A) 19200 BPS
B) XTAL = 4 MHZ
C) SPBRG= 12 (EN DECIMAL) o SPBRG=0C (EN HEXADECIMAL)
D) BRG = 1 (ALTA VELOCIDAD)

NOTA: SI NECESITAS SABER COMO CALCULAR ESTOS VALORES ESCRIBEME

6.- ACTIVAR LA TRANSMISION CON TXEN=1

7.- CARGAR EL VALOR A TRANSMITIR EN TXREG

8.- ESPERAR A QUE EL BUS SE TRANSMITIDO EN TSR
A) TRMT=1 (TSR VACIO)
B) TRMT=0 (TRS NO VACIO)

9) VOLVER A REPETIR LOS PASOS 7 Y 8


CODIGO:

INCLUDE "P16F877.INC" ; LIBRERIA DE COMANDOS DE PIC16F877

ORG 0X00 ; ORIGEN VECTOR DE RESET
GOTO INICIO ; SALTA A INCIO DE PROGRAMA
ORG 0X20 ; RESPETAR LAS PRIMERAS LOCALIDADES DE MEMORIA
INICIO: BANKSEL TRISC ; SELECCION DEL BANCO DONDE ESTA TRISC
BSF TRISC, 7 ; RX COMO ENTRADA
BCF TRISC, 6 ; TX COMO SALIDA
BANKSEL TRISA
MOVLW 0X1F
MOVWF TRISA ; PORTA COMO ENTRADA
BANKSEL ADCON1
MOVLW 0X06 ; PORTA COMO DIGITAL
MOVWF ADCON1
BANKSEL SPBRG
MOVLW .12 ; BAUD RATE 19200
MOVWF SPBRG
BANKSEL TXSTA
BCF TXSTA, 6 ; TRASMISION 8 BITS
BCF TXSTA, 4 ; USART MODO ASINCRONO
BSF TXSTA, 2 ; BRGH EN MODO ALTA VELOCIDAD
BSF TXSTA, 1 ; HABILITA TRANSMISION SERIAL
BANKSEL RCSTA
BSF RCSTA, 7 ; HABILITA USART (PUERTO SERIE)
ENVIAR: BANKSEL PORTA
MOVFW PORTA ; LEE LO QUE TIENE EL PUERTO A
BANKSEL TXREG
MOVWF TXREG ; TRANSMITE SERIE EL VALOR DEL PUERTO A
BANKSEL PIR1
ESPERAR:BTFSS PIR1, TXIF
GOTO ESPERA ;ESPERA A QUE SE HAYA REALIZADO LA TRANSMISION
.
. ; AQUI PODRIAS PONER DELAY ANTES DE
. ; TRANSMITIR NUEVAMENTE

GOTO ENVIAR ; VUELVE A ENVIAR EL VALOR DEL PORTA

END
 
Atrás
Arriba