Autor Tema: MAX232 + PIC16f877, cable serie y codigo  (Leído 2281 veces)

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

Desconectado inxanu

  • PIC10
  • *
  • Mensajes: 21
MAX232 + PIC16f877, cable serie y codigo
« en: 26 de Julio de 2012, 10:56:02 »
Hola a todos,

Estoy probando la conexión al pic16f877 con un código que hace eco en el micro y devuelve el carácter que introduzco al hiperterminal de windows. El código es el que escribo a continuación (no es propio, es cogido de alguna web que a su vez lo han cogido de un libro)


Código: [Seleccionar]

;******************************************************************************

processor 16f877
include <p16f877.inc>
__CONFIG 0x3F71

; ------------------------------Código modificado por aztk-------------------------------------
; inicio
          org     0x00
          goto    inicio
          org     0x04
          goto    INTER

; Se transmite via Serie el dato que esta en el registro W
TX_DATO   bcf     PIR1,TXIF      ; Restaura el flag del transmisor
          movwf   TXREG          ; Mueve el byte a transmitir al registro de transmision
          bsf     STATUS,RP0     ; Bank01
          bcf     STATUS,RP1

TX_DAT_W  btfss   TXSTA,TRMT     ; ¿Byte transmitido?
          goto    TX_DAT_W       ; No, esperar
          bcf     STATUS,RP0     ; Si, vuelta a Bank00
          return

; Tratamiento de interrupción
INTER     btfss   PIR1,RCIF      ; ¿Interrupción por recepción?
          goto    VOLVER         ; No, falsa interrupción
          bcf     PIR1,RCIF      ; Si, reponer flag
          movf    RCREG,W        ; Lectura del dato recibido
          movwf   PORTB          ; Visualización del dato
          call    TX_DATO        ; Transmisión del dato como eco
VOLVER    retfie

; Comienzo del programa principal
inicio    clrf    PORTB          ; Limpiar salidas
          clrf    PORTC
          bsf     STATUS,RP0     ; Bank01
          bcf     STATUS,RP1
          clrf    TRISB          ; PORTB como salida
          movlw   b'10111111'    ; RC7/RX entrada,
          movwf   TRISC          ; RC6/TX salida
          movlw   b'00100100'    ; Configuración USART
          movwf   TXSTA          ; y activación de transmisión
          movlw   .25            ; 9600 baudios
          movwf   SPBRG
          bsf     PIE1,RCIE      ; Habilita interrupción en recepción
          bcf     STATUS,RP0     ; Bank00
          movlw   b'10010000'    ; Configuración del USART para recepción continua
          movwf   RCSTA          ; Puesta en ON
          movlw   b'11000000'    ; Habilitación de las
          movwf   INTCON         ; interrupciones en general

BUCLE     nop
          goto    BUCLE

          end


El esquemático esta adjunto a este post, así como el cable que estoy usando para la comunicación con el PC


El problema es que no he conseguido respuesta en la ventana del hiperterminal, es decir, no me deja introducir ningún carácter. Y estoy totalmente perdido, no se si puede ser problema del esquemático, del cable, o del código..... si me ayudáis a descartar cosas os estaré agradecido

Desconectado irukza

  • PIC12
  • **
  • Mensajes: 87
Re: MAX232 + PIC16f877, cable serie y codigo
« Respuesta #1 en: 26 de Julio de 2012, 13:56:13 »
Hola inxanu

Para que la UART trabaje tenés que setear los bits 6 y 7 del TRISC. Es decir, ambos deben estar configurados como salidas. Lo podés ver en la página 95 de la hoja de datos de este micro.

Espero que sea el único problema. Suerte

Desconectado PCCM

  • PIC16
  • ***
  • Mensajes: 109
Re: MAX232 + PIC16f877, cable serie y codigo
« Respuesta #2 en: 26 de Julio de 2012, 16:31:02 »
Tu código está bien, recuerda colocar en la simulación un clock de 4Mhz.
Prueba quitando todo eso y colocándole de frente el terminal virtual, te debe dar el eco, y además según el código lo que escribes debe aparecer en el puerto B.

Desconectado inxanu

  • PIC10
  • *
  • Mensajes: 21
Re: MAX232 + PIC16f877, cable serie y codigo
« Respuesta #3 en: 27 de Julio de 2012, 05:59:10 »
Muchas gracias, ya funciona todo correctamente!

Un saludo.


 

anything