Autor Tema: Duda con rs232  (Leído 2889 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado SimonMG

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 172
Duda con rs232
« en: 29 de Septiembre de 2006, 18:00:06 »
Compañeros del foro concretamente nesesito que si es posible que me muestren un programa en asembler de lo minimo que se nesesita para comunicarme por rs232 utilizon un pic16f876a agradeceria mucho que me ayudaran... saludos
 :mrgreen:
"La politica es para ahora, una ecuacion es para siempre"
Albert Einstein

Desconectado microcom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 568
Re: Duda con rs232
« Respuesta #1 en: 29 de Septiembre de 2006, 18:22:12 »
MOVLW   B'00100100'   ;SELECCION TX DE 8 BITS,ALTA VELOCIDAD,MODO ASINCRONO
MOVWF   TXSTA
MOVLW   B'00000110'   ;RC6 SALIDA SERIAL USART.
MOVWF   PORTC



;SERIAL COMUNICACION
SERIAL   BCF   STATUS,5
   BCF   PIR1,TXIF
   MOVLW   B'11000000'
   MOVWF   INTCON
   BSF   STATUS,5
   MOVLW   B'00100101'   
   MOVWF   TXSTA
   MOVLW   .12
   MOVWF   SPBRG
   BCF   STATUS,5
   BSF   RCSTA,SPEN
   BSF   STATUS,5
   BSF   TXSTA,TXEN
   BCF   STATUS,5
   MOVF   CONTA,W
   ADDLW   30
   MOVWF   TXREG
ESPERE   BTFSS   PIR1,TXIF
   GOTO   ESPERE
   MOVLW   0
   MOVWF   TXREG
EPE   BTFSS   PIR1,TXIF
   GOTO   EPE
   MOVLW   .32
   MOVWF   TXREG
ESPE   BTFSS   PIR1,TXIF
   GOTO   ESPE
   MOVLW   0
   MOVWF   TXREG
EP   BTFSS   PIR1,TXIF   
   GOTO   EP
   MOVF   DECENAS,W
   ADDLW   30
   MOVWF   TXREG
RINO   BTFSS   PIR1,TXIF
   GOTO   RINO
   MOVLW   0
   MOVWF   TXREG
P   BTFSS   PIR1,TXIF   
   GOTO   P   
   MOVF   UNIDAD,W
   ADDLW   30
   MOVWF   TXREG
EST   BTFSS   PIR1,TXIF
   GOTO   EST
   MOVLW   .13
   MOVWF   TXREG
MAR   BTFSS   PIR1,TXIF
   GOTO   MAR
   RETURN
   MOVWF   TXREG
ET   BTFSS   PIR1,TXIF
   GOTO   ET
   MOVLW   H'7F'
   MOVWF   TXREG
FUI   BTFSS   PIR1,TXIF
   GOTO   FUI
   BCF   STATUS,5
   BCF   STATUS,6
   RETURN
   END

Desconectado SimonMG

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 172
Re: Duda con rs232
« Respuesta #2 en: 30 de Septiembre de 2006, 13:48:13 »
Este esta bien????????????????????' quiero preguntar porque se me hace mas facil de entender

;************************************************************************
;* PROYECTO STARGATE.                                                   *
;* sg-echo-pic16f876-xx-0.asm.                                          *
;*                                                                      *
;* Jose Angel de Sande Tundidor <josejosejose@iespana.es>           *
;* Juan Gonzalez <juan@iearobotics.com>                                 *
;* Octubre-2003                                                         *
;*----------------------------------------------------------------------*
;* Servidor de ECO.                                                     *
;* Servidor: sg-echo                                                    *
;* Implementado para el micro 16F876 en una tarjeta prototipo           *
;*----------------------------------------------------------------------*
;* Se hace eco de todo lo recibido por el puerto serie.                 *
;* El caracter recibido ademas se saca por el puerto B para poderse     *
;* visualizar con la tarjeta PCT-LED                                    *
;*----------------------------------------------------------------------*
;*  Licencia GPL                                                        *
;************************************************************************

;-- Establecer el PIC a emplear
   LIST p=16f876
   INCLUDE "p16f876.inc"

   ORG 0
   
;-- Configuracion del puerto serie
   BSF STATUS,5      ; Acceso al banco 1
   MOVLW 0x19      ; Velocidad: 9600 baudios
   MOVWF SPBRG

   MOVLW 0x24
   MOVWF TXSTA      ; Configurar transmisor

   BCF STATUS,5      ; Acceso al banco 0      
   MOVLW 0x90      ; Configurar receptor
   MOVWF RCSTA

   
;-- Configurar puerto B para salida
   BSF STATUS,5      ;  Acceso al banco 1
   CLRF TRISB      ;  Configurarlo para salida

;--- Comienzo del servidor
   BCF STATUS,5      ; Banco 0
   MOVLW 0xFF
   MOVWF PORTB             ; Valor inicial del puerto B
   
main
   ;-- Esperar a recibir un caracter
   CALL leer_car

   ;-- Hacer eco
   CALL enviar

   ;-- Sacar caracter por el puerto B
   MOVWF PORTB
   
   GOTO main


;**************************************************
;* Recibir un caracter por el SCI
;-------------------------------------------------
; SALIDAS:
;    Registro W contiene el dato recibido
;**************************************************
leer_car
   BTFSS PIR1,RCIF           ; ¿RCIF=1?
   GOTO leer_car      ; no--> Esperar

   ;-- Leer el caracter
   MOVFW RCREG           ; W = dato recibido
   
   RETURN
   
;*****************************************************
;* Transmitir un caracter por el SCI               
;*---------------------------------------------------
;* ENTRADAS:
;*    Registro W:  caracter a enviar         
;*****************************************************
;-- Esperar a que Flag de listo para transmitir esté a 1
enviar
wait
   BTFSS PIR1,TXIF      ; ¿TXIF=1?
   goto wait      ; No--> wait

   ;; -- Ya se puede hacer la transmision
   MOVWF TXREG
   RETURN
      
   END
   
"La politica es para ahora, una ecuacion es para siempre"
Albert Einstein

Desconectado SimonMG

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 172
Re: Duda con rs232
« Respuesta #3 en: 01 de Octubre de 2006, 21:46:21 »
tambien quisiera saber como acoplar un programa de ADC con el programa anterior, pero por los momentos a ver si en que e posteado esta bueno... un millon de gracias por su ayuda y saludos  :D
"La politica es para ahora, una ecuacion es para siempre"
Albert Einstein

Desconectado Y@el

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 415
Re: Duda con rs232
« Respuesta #4 en: 04 de Octubre de 2006, 20:29:21 »
Te recomiendo, que en vez de estar esperando con un bucle, hasta que te llegue una interrupcion.
Habilites la Interrupcion por Recepcion.

De ser asi, si no me equivoco quedaria algo asi:
;-- Establecer el PIC a emplear
   LIST p=16f876
   INCLUDE "p16f876.inc"

   ORG 0
   GOTO INICIO
   ORG 4
INTERRUPCION:
   BTFSS PIR1,RXIF;Si no es Interrupcion por Rx
   GOTO SALIR_INT
'Desabilita Interrupciones:
   INTCON.7=0
   movfw RCREG;Muevo dato Recibido a W
   movwf TXREG;Muevo W a Registro de Tx
   bcf PIR1,RXIF;Borro Flag de Interrupcion por Rx
SALIR_INT:
   INTCON.7=0
   retfie
INICIO:
;-- Configuracion del puerto serie
   BSF STATUS,5      ; Acceso al banco 1
   MOVLW 0x19      ; Velocidad: 9600 baudios
   MOVWF SPBRG

   MOVLW 0x24
   MOVWF TXSTA      ; Configurar transmision Continua

   BCF STATUS,5      ; Acceso al banco 0     
   MOVLW 0x90      ; Configurar receptor
   MOVWF RCSTA

   
;-- Configurar puerto B para salida
   BSF STATUS,5      ;  Acceso al banco 1
   CLRF TRISB      ;  Configurarlo para salida


   movlw b'0010000';Habilito Interrupcion por Rx
   movwf PIE1

;--- Comienzo del servidor
   BCF STATUS,5      ; Banco 0
   MOVLW 0xFF
   MOVWF PORTB             ; Valor inicial del puerto B

  ;Colocar mis interrupciones
  movlw b'11000000'
  movwf INTCON

  ;Habilitar interrupcion:
   bsf INTCON,7
main
   clrwdt 
   GOTO main
end
« Última modificación: 04 de Octubre de 2006, 20:33:06 por Yoel_Ocmin »

Desconectado SimonMG

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 172
Re: Duda con rs232
« Respuesta #5 en: 04 de Octubre de 2006, 20:57:44 »
oye!!! muchas gracias  :-/ :-/ :-/ asi es mas fasil de entender... muchas gracias
"La politica es para ahora, una ecuacion es para siempre"
Albert Einstein

Desconectado Antoni

  • PIC10
  • *
  • Mensajes: 2
Re: Duda con rs232
« Respuesta #6 en: 12 de Enero de 2007, 10:18:08 »
Hola, puede que el mensaje de Yoel tenga un pequeño error?


   ORG 0
   GOTO INICIO
   ORG 4
INTERRUPCION:
   BTFSS PIR1,RXIF;Si no es Interrupcion por Rx
   GOTO SALIR_INT
'Desabilita Interrupciones:
   I

Por:

   ORG 0
   GOTO INICIO
   ORG 4
INTERRUPCION:
   BTFSS PIR1,RCIF;Si no es Interrupcion por Rx
   GOTO SALIR_INT
'Desabilita Interrupciones:

Saludos,



 

anything