Circuitos Digitales - comunicacion serial

 
Vista:

comunicacion serial

Publicado por Rildho (2 intervenciones) el 12/11/2007 17:45:19
tengo una consulta sobre comunicacion serial, estoy desarrollando un proyecto con un pic 16f877 y un chip conversor analogo digital CS5550 el cual tiene una interface bidireccional de comunicación serial, el problema es que como soy nuevo con esto de la comunicación serial no tengo la menor idea de como iniciar el protocolo, agradeceria bastante si alguien me pudiera enviar informacion de como se debe realizar la comunicación serial en general tanto en un microcontrolador como en cualquier otro equipo, además de enviarme derrepende en assembler alguna rutina de comunicación ya existente para el pic. Agradesco de antemano sus aportes.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:comunicacion serial

Publicado por ovelit (2 intervenciones) el 12/02/2008 20:11:28
Saludos Rildho.
No entiendo porq estas utilizando un conversor analogico digital el pic877 tiene interno como 6 entradas analogicas y el pic877 ya trae el protocolo de comunicacion serial.
te voy a colocar un programa completo que convierte y envia datos serial al PC.

cual quier cosa que no entiendas pega un grito.

LIST P=16F877
INCLUDE <P16F877.INC>
__CONFIG(3D39)

;--------------DECLARACION DE REGISTROS-------------

CBLOCK 20H

UNIDAD
DECENA
CENTENA
DECIMAL
AUX1
AUX
DATO1
DATO2
CONT0
CONT1
CONT2
CONT3
CONT4
CONT5
DATO3
PDel0
NUM_L
NUM_H
REG1
BINARIO
RESULT
TEMP
MULTIP
SETPOIN

ENDC

;--------------DELCALRACIONES DE BIT----------------
#DEFINE RS PORTB,1
#DEFINE EN PORTB,2

;-------------------VECTORES-----------------

ORG 0000H
GOTO INICIO

ORG 0004H
BTFSC PIR1,RCIF
GOTO RCRX
RETFIE


TABLA1 MOVLW " "
CALL DATO
MOVLW " "
CALL DATO
MOVLW " "
CALL DATO
MOVLW "C"
CALL DATO
MOVLW "O"
CALL DATO
MOVLW "N"
CALL DATO
MOVLW "T"
CALL DATO
MOVLW "R"
CALL DATO
MOVLW "O"
CALL DATO
MOVLW "L"
CALL DATO
MOVLW " "
CALL DATO
MOVLW "D"
CALL DATO
MOVLW "E"
CALL DATO
MOVLW " "
CALL DATO
MOVLW " "
CALL DATO
MOVLW " "
CALL DATO


RETURN

TABLA2 MOVLW " "
CALL DATO
MOVLW " "
CALL DATO
MOVLW "T"
CALL DATO
MOVLW "E"
CALL DATO
MOVLW "M"
CALL DATO
MOVLW "P"
CALL DATO
MOVLW "E"
CALL DATO
MOVLW "R"
CALL DATO
MOVLW "A"
CALL DATO
MOVLW "T"
CALL DATO
MOVLW "U"
CALL DATO
MOVLW "R"
CALL DATO
MOVLW "A"
CALL DATO
MOVLW " "
CALL DATO
MOVLW " "
CALL DATO
MOVLW " "
CALL DATO

RETURN


INICIO BSF STATUS,RP0
BCF STATUS,RP1
MOVLW 82H ; PUERTO A PARA ENTRADAS ANALOGICAS
MOVWF ADCON1 ; Y PUERTO E PARA E/S DIGITALES
MOVLW 0FFH
MOVWF PORTA ; ENTRADAS ANALOGICAS
MOVLW B'00000000'
MOVWF PORTB
MOVLW B'10000000'
MOVWF PORTC
BANKSEL INTCON
MOVLW B'11010000'
MOVWF INTCON
CALL BANCO1
BSF PIE1,RCIE
MOVLW B'00100100'
MOVWF TXSTA
MOVLW .25 ;9600
MOVWF SPBRG
CALL BANCO0
MOVLW B'10010000'
MOVWF RCSTA
BANKSEL OPTION_REG
MOVLW B'10000000'
MOVWF OPTION_REG
CALL BANCO0
CALL CONFIG
CLRF UNIDAD
CLRF DECENA
CLRF CENTENA
CLRF BINARIO
CLRF RESULT
CLRF PORTB
CLRF SETPOIN
CLRF NUM_L
CLRF NUM_H
CALL LINEA1
CALL TABLA1
CALL LINEA2
CALL TABLA2
CALL R_1SEG
CALL R_1SEG
BSF PORTB,3
CALL LIMPIA
GOTO TEMPERA

TRTX
MOVWF TXREG
CALL BANCO1
BTFSS TXSTA,TRMT
GOTO $-1
CALL BANCO0
RETURN

RCRX BCF PIR1,RCIF
MOVF RCREG,W
CALL TRTX
RETFIE

TEMPERA MOVLW 09H ; CANAL 2
MOVWF ADCON0 ; ADC ON
CALL LINEA1
CALL TABLA2
MOVLW 0CBH
CALL CONTROL
CALL RETARDO
CALL CONVERCION_AD
CALL MOSTRAR_T
BSF PORTB,3
GOTO TEMPERA

CONVERCION_AD
CALL RETARDO_AD
BSF ADCON0,2 ; INICIO DE CONVERSION
CHEQUE BTFSC ADCON0,2
GOTO CHEQUE
TRANSFORMA
CALL BANCO1
MOVF ADRESL,0
CALL BANCO0
MOVWF NUM_L
MOVF ADRESH,0
MOVWF NUM_H
CALL RETARDO
CLRF CENTENA
CLRF DECENA
CLRF UNIDAD
CLRF DECIMAL
CALL BCD
SALI RETURN

MOSTRAR_T
MOVLW 0C5H
CALL CONTROL
MOVLW 30H
ADDWF DECENA,1
MOVF DECENA,0
CALL DATO
MOVF DECENA,0
CALL TRTX
MOVLW 30H
ADDWF UNIDAD,1
MOVF UNIDAD,0
CALL DATO
MOVF UNIDAD,0
CALL TRTX
MOVLW ","
CALL DATO
MOVLW ","
CALL TRTX
MOVLW 30H
ADDWF DECIMAL,1
MOVF DECIMAL,0
CALL DATO
MOVF DECIMAL,0
CALL TRTX
MOVLW " "
CALL DATO
MOVLW " "
CALL TRTX
MOVLW "C"
CALL DATO
MOVLW "C"
CALL TRTX
RETURN



BCDBIN CLRF BINARIO
; MOVF CENTENA,0
; CALL POR_100
; ADDWF BINARIO,1
MOVF DECENA,0
CALL POR_10
ADDWF BINARIO,1
MOVF UNIDAD,0
ADDWF BINARIO,1
MOVF BINARIO,0
MOVWF SETPOIN
RETURN



POR_100 MOVWF TEMP
MOVLW .100
MOVWF MULTIP
GOTO SIGUE
POR_10 MOVWF TEMP
MOVLW .10
MOVWF MULTIP
SIGUE CLRF RESULT
ETIQ MOVF TEMP,0
ADDWF RESULT,1
DECFSZ MULTIP,1
GOTO ETIQ
MOVF RESULT,0
RETURN



;----------CONTROL DE LA LCD 4 BIT------------------
CONTROL BCF RS
GOTO NEXT
DATO BSF RS
NEXT BSF EN
MOVWF AUX
MOVLW 0FH
ANDWF PORTB
MOVF AUX,W
ANDLW 0F0H
IORWF PORTB
CALL R_.75MS
BCF EN
CALL R_.75MS
BSF EN
MOVLW 0FH
ANDWF PORTB
SWAPF AUX,W
ANDLW 0F0H
IORWF PORTB
CALL R_.75MS
BCF EN
CALL R_.75MS
RETURN

;-------------CONF. LCD A 4 BIT---------------------
CONFIG CALL R_16MS
MOVLW 02H
CALL CONTROL
MOVLW 28H
CALL CONTROL
MOVLW 0CH
CALL CONTROL
MOVLW 06H
CALL CONTROL
MOVLW 01H
CALL CONTROL
RETURN

;-----------------LIMPIAR LCD-----------------------
LIMPIA MOVLW 01H
CALL CONTROL
RETURN

;-------------------LINEA 1-------------------------
LINEA1 MOVLW 80H
CALL CONTROL
RETURN

;-------------------LINEA 2-------------------------
LINEA2 MOVLW 0C0H
CALL CONTROL
RETURN

BCD MOVF NUM_L,1
BTFSC STATUS,Z
GOTO CHEK_H
DECF NUM_L,1
GOTO CON_BCD
CHEK_H MOVF NUM_H,1
BTFSS STATUS,Z
GOTO DE_H
RETURN

CON_BCD
INCF DECIMAL,1 ;DECIMAL
MOVLW .4
ADDWF DECIMAL,1
MOVF DECIMAL,0
XORLW 0AH
BTFSS STATUS,2
GOTO BCD
INCF UNIDAD,1 ;UNIDAD
CLRF DECIMAL
MOVF UNIDAD,0
XORLW 0AH
BTFSS STATUS,2
GOTO BCD
INCF DECENA,1 ;DECENA
CLRF UNIDAD
MOVF DECENA,W
XORLW 0AH
BTFSS STATUS,2
GOTO BCD
INCF CENTENA,1 ;CENTENA
CLRF DECENA
MOVF CENTENA,W
XORLW 0AH
BTFSS STATUS,2
GOTO BCD
; MOVLW 0H
; MOVWF CENTENA
MOVLW 09H
MOVWF CENTENA
MOVWF DECENA
MOVWF UNIDAD
MOVWF DECIMAL
GOTO SAL1
DE_H DECF NUM_H
MOVLW 0FFH
MOVWF NUM_L
GOTO BCD
SAL1 RETURN

;--------------RETARDO DE 16MS----------------------
R_16MS MOVLW .15
MOVWF CONT0
PLOOP1 MOVLW .177
MOVWF CONT1
PLOOP2 CLRWDT
PDELL1 GOTO PDELL2
PDELL2 DECFSZ CONT1,1
GOTO PLOOP2
DECFSZ CONT0,1
GOTO PLOOP1
PDELL3 GOTO PDELL4
PDELL4 GOTO PDELL5
PDELL5 CLRWDT
RETURN
;---------------RETARDO DE 16MS----------------------
R_.75MS MOVLW .186
MOVWF CONT2
LOOP0 CLRWDT
DELL1 GOTO DELL2
DELL2 GOTO DELL3
DELL3 DECFSZ CONT2,1
GOTO LOOP0
DELL4 GOTO DELL5
DELL5 CLRWDT
RETURN
;------------------RETARDO 1 SEG---------------------
R_1SEG MOVLW .14
MOVWF CONT3
PLOP0 MOVLW .72
MOVWF CONT4
PLOP1 MOVLW .247
MOVWF CONT5
PLOP2 CLRWDT
DECFSZ CONT5,1
GOTO PLOP2
DECFSZ CONT4,1
GOTO PLOP1
DECFSZ CONT3,1
GOTO PLOP0
PDEL1 GOTO PDEL2
PDEL2 CLRWDT
RETURN
RETARDO MOVLW 0FFH
MOVWF AUX1
DECFSZ AUX1,1
GOTO $-1
RETURN
RETARDO_AD
MOVLW 15H
GOTO $+2
RETARDITO
MOVLW 02H
BRINCO MOVWF REG1
DECFSZ REG1
GOTO $-1
RETURN

BANCO0 BCF STATUS,RP0
BCF STATUS,RP1
RETURN

BANCO1 BSF STATUS,RP0
BCF STATUS,RP1
RETURN

BANCO2 BCF STATUS,RP0
BSF STATUS,RP1
RETURN

BANCO3 BSF STATUS,RP0
BSF STATUS,RP1
RETURN

END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:comunicacion serial

Publicado por Rildho (2 intervenciones) el 14/02/2008 17:18:25
gracias porl a informacion empesare a realizar pruebas con la rutina que me enviaste, me preguntabas por que usar un conversor a/d externo pues es por la resolucion del pic, no satisface con el trabajo que estoy realizando el chip que te mencione el cs5550 tiene 24 bits de resolucion a comparacion del pic que solo puede utilizar 10 como maximo, agradesco tu respuesta, si tuviera alguna duda te la hare saber, esperando no incomodarte . RiLdHo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:comunicacion serial

Publicado por leo (1 intervención) el 08/06/2008 20:21:49
quisiera saber si tienes los planos de una conexion de audio para pic877 pero sin usar serial sino con un integrador (op 741 +rc)o similares
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:comunicacion serial

Publicado por ADC CS5550 (1 intervención) el 25/04/2009 18:15:25
Hola Rildo:
Me preguntaba si para esta comunicacion tuviste resultados positivos, justo estamos con los mismos componentes desarrollasndo un proyecto, cuentame que tal te fue y si lograste la comunicacion en la pruebas.

Atte

Javier
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar