• Miércoles 6 de Noviembre de 2024, 02:45

Autor Tema:  Comunicacion Via Rs232  (Leído 2401 veces)

Kain589

  • Miembro activo
  • **
  • Mensajes: 53
    • Ver Perfil
Comunicacion Via Rs232
« en: Domingo 1 de Enero de 2006, 12:12 »
0
Hola sé que se trata de un tema bastante trillado, estoy empezando con los micros y ya he usado los distintos modulos y hecho problemas, asi que me propuesto empezar con la comunicacion entre dispositivos. he estado buscando por el foro y me encontre con unas rutinas, las he adaptado y cambiado algunas cosas para el 16f876, pero no me van; todo lo hecho creo que es necesario y que se debe a que falta algo, aunque puede que este mal. si alguien puede decirme que esta mal o si falta algo, muchas gracias y felicitarles por este gran foro tambien espero con el tiempo poder ayudar

Citar
PROGRAMA : rx-rs232.asm                       
; Funcion : Escucha puerto serie rs232 y cuando recibe un dato salta la
;     interrupcion y lo muestra en PortB.       
;           Serial port config: 9600 baudios,8 bits,paridad = none             
;
; Programa para : PIC16F876
; CPU Clock : 4 MHz                      Reloj instruccion : 1 MHz = 1 us
;       WDT : Deshabilitado                  Tipo de reloj : XT 
; Code Prot : OFF



  LIST   P = 16F876   ;Se indica el modo de procesador

  INCLUDE   <P16f876.inc>   ;se incluye la definicion de los

;<<<<<<---------------------- VECTOR DE RESET ------------------------>>>>>>>
  ORG   00H  ;Inicio en el Vector de Reset
 
  goto   INICIO  ;Va a la primera instruccion del
       ;programa

;<<<<<<------------------- VECTOR DE INTERRUPCION -------------------->>>>>>>

  ORG   04H  ;Vector de interrupcion


INTER   btfss   PIR1,RCIF   ;¿Interrupcion por recepcion?
  goto   VOLVER  ;No. Falsa interrupcion
  bcf  PIR1,RCIF  ;Si. Reponer Flag
  movf   RCREG,W  ;Lectura dato recibido
  movwf   PORTB  ;Visualiza dato recibido
 

VOLVER   retfie     ;retorna de la interrupcion.
 
 
;<<<<<<----------------- INICIO PROGRAMA PRINCIPAL ------------------->>>>>>>

INICIO   clrf   PORTB  ;Limpia salidas
  clrf   PORTC

  bsf   RCSTA,SPEN   ;se activa la USART
  bsf   STATUS,RP0   ;Cambio al banco 1 ------------------
  bcf   STATUS,RP1
 
  clrf   TRISB  ;Puerta B como salida
  clrf   TRISB  ;Puerta B como salida
  movlw   80H     ;RC7/Rx entrada,
  movwf   TRISC     ;RC6/Tx   salida y RC5 Salida.

  movlw   04H   ;Configuracion USART
  movwf   TXSTA  ;y activacion de transmision
  movlw   .207  ;9600 baudios
  movwf   SPBRG
  bsf  PIE1,RCIE   ;Habilitacion interrupcion RX
  bcf  STATUS,RP0   ;Cambio al banco 0 -----------------
 
  bsf  RCSTA,SPEN   ;se activa la USART
 
  movlw   90H   ;Configuracion de la usart
  movwf   RCSTA  ;para recepcion continua
 
  movlw   0C0H   ;Habilitacion para las
  movwf   INTCON  ;interrupciones generales
 
 
 
BUCLE   goto   BUCLE  ;espera aqui hasta que salte la int.


  END




Citar
PROGRAMA : tx-rs232.asm
; Funcion : Transmite 2 bytes por el puerto serie del pic en intervalos de
;     1 segundo.   
;           Serial port config: 9600 baudios,8 bits,paridad = none
;   
;  rograma para : PIC16F876
; CPU Clock : 4 MHz                      Reloj instruccion : 1 MHz = 1 us
;       WDT : Deshabilitado                  Tipo de reloj : XT 
; Code Prot : OFF           


  LIST   P=16F876   ;Se indica el modo de procesador

  INCLUDE   <P16f876.inc>   ;se incluye la definicion de los
       ;registros internos
CounterA   EQU   20h
CounterB   EQU   21h
CounterC   EQU   22h

;<<<<<<---------------------- VECTOR DE RESET ------------------------>>>>>>>
  ORG   00H  ;Inicio en el Vector de Reset
 
  goto   INICIO  ;Va a la primera instruccion del
       ;programa

;<<<<<<------------------- VECTOR DE INTERRUPCION -------------------->>>>>>>

  ORG   04H  ;Vector de interrupcion



;<<<<<<----------------- INICIO PROGRAMA PRINCIPAL ------------------->>>>>>>
INICIO   clrf   PORTB  ;Limpia salidas
  clrf   PORTC

  bsf   RCSTA,SPEN   ;se activa la USART
  bsf   STATUS,RP0   ;Cambio al banco 1 -------------
  bcf   STATUS,RP1
 
  clrf   TRISB  ;Puerta B como salida
  movlw   80H   ;RC7/Rx entrada,
  movwf   TRISC     ;RC6/Tx   salida.

  movlw   24H   ;Configuracion USART
  movwf   TXSTA  ;y activacion de transmision
  movlw   .207  ;9600 baudios
  movwf   SPBRG
  bcf   STATUS,RP0   ;Cambio al banco 0 -------------
 
  bsf   RCSTA,SPEN   ;se activa la USART
 

  bsf   STATUS,RP0   ;Cambio al banco 1 -------------
  bcf   STATUS,RP1
  bsf   TXSTA,TXEN   ;Habilita la transmision
  bcf   STATUS,RP0   ;Cambio al banco 0 -------------   
 
bucle   goto   PDelay
  movlw   49H  ;Envia el caracter, valor hex
  movwf   TXREG  ; del codigo ascii
 
  bsf   STATUS,RP0   ;Cambio al banco 1 -------------
  bcf   STATUS,RP1
COMP_TX   btfss   TXSTA,TRMT   ;comprueba si acabo de Tx.
  goto   COMP_TX
  bcf   STATUS,RP0   ;Cambio al banco 0 -------------
  movlw   .50  ;caracter ASCII en decimal
  movwf   TXREG
  goto  bucle

;<<<<<<----------------------- OTRAS RUTINAS ------------------------->>>>>>>
;PIC Time Delay = 1,0000020 s with Osc = 4 MHz
PDelay   movlw   6H
  movwf   CounterC
  movlw   19H
  movwf   CounterB
  movlw   0B2H
  movwf   CounterA
loop  decfsz   CounterA,1
  goto   loop
  decfsz   CounterB,1
  goto   loop
  decfsz   CounterC,1
  goto   loop
  return
   

   
  END

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Comunicacion Via Rs232
« Respuesta #1 en: Lunes 2 de Enero de 2006, 23:15 »
0
Bueno, entes que nada bienvenido :smartass: y es de seguro que con el tiempo nos daras una mano :) si asi lo deseas.

Mirando muy por arriba el codigo parece estar bien. la mayoria de los programadores de pic nos centramos en que el problema es de codigo y no de hardware :ph34r: .. asi que antes de entrar en profundidad sobre el programa te pediria si sos tan amable que adjuntes algun dibujito con el esquema de como tienes conectado el pic al pc. Espero tu respuesta, vamos por pasos y asi entontraremos el error mas facilmente. Saludos :)
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

Kain589

  • Miembro activo
  • **
  • Mensajes: 53
    • Ver Perfil
Re: Comunicacion Via Rs232
« Respuesta #2 en: Martes 3 de Enero de 2006, 01:10 »
0
Gracias por la bienvenida y por tu respuesta, en realidad yo queria establecer la comunicacion entre dos pics, la finalidad era simplemente didactica. Al final he desechado estas rutinas,ahora que ya lo he conseguido volvere a repasarlas, y he buscado en las notas de aplicacion de microchip encontrando ejemplos que he adaptado, acabo de probarlos y funcionan.
Mañana seguramente los suba para quien le pueda interesar, no los subo ahora porque los tengo en otro pc que para mas inri tiene roto el usb

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Comunicacion Via Rs232
« Respuesta #3 en: Martes 3 de Enero de 2006, 12:21 »
0
Cita de: "Kain589"
Gracias por la bienvenida y por tu respuesta, en realidad yo queria establecer la comunicacion entre dos pics, la finalidad era simplemente didactica. Al final he desechado estas rutinas,ahora que ya lo he conseguido volvere a repasarlas, y he buscado en las notas de aplicacion de microchip encontrando ejemplos que he adaptado, acabo de probarlos y funcionan.
Mañana seguramente los suba para quien le pueda interesar, no los subo ahora porque los tengo en otro pc que para mas inri tiene roto el usb
Bueno, realmente me alegra que hayas arreglado el problema :) .. un punto mas para la lista de experiencias :lightsabre: .. Si subes las rutinas dejalas en el foro de "Soluciones de Hard y Soft" http://foros.solocodigo.com/index.php?showforum=156  .. Gracias y Suerte ;)
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»