Autor Tema: Transmisión serial pic16f876  (Leído 1512 veces)

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

Desconectado marianaxx

  • PIC10
  • *
  • Mensajes: 1
Transmisión serial pic16f876
« en: 17 de Noviembre de 2004, 14:54:00 »
El siguiente programa debe transmitir por el puerto C un dato a otro pic 16F876. De acuerdo a la hoja de datos para configurar el Puerto C se debe poner el bit 7 y 6 en uno (eso es lo que dice la hoja de datos); pero de esta forma no funciona.

¿Alguien me puede decir dónde está el error?


ESTADO      EQU   H"03"   ;
INTCON      EQU   H"0B"   ;
OPCION      EQU   H"81"   ;
TRISA      EQU   H"85"   ;
TRISB      EQU   H"86"   ;
TRISC      EQU   H"87"   ;
TMR0      EQU   H"01"   ;
PORTA      EQU   H"05"   ;
PORTB      EQU   H"06"   ;
PORTC      EQU   H"07"   ;
RCREG      EQU   H"1A"
TXREG      EQU   H"19"
RCSTA      EQU   H"18"
TXSTA      EQU   H"98"
SPBRG      EQU   H"99"
PIE1      EQU   H"8C"
PIR1      EQU   H"0C"

COM         EQU   H"20"
COM_2      EQU   H"21"
SEG         EQU   H"23"

    ORG   00         ;la 1º inst. es guardada la posicion 00
     goto   CONFIG
   
    ORG   04
                      ;INICIO DE LA SUBRRUTINA DE TIEMPO
    DECFSZ   COM,1      
    GOTO   CLOK
    MOVLW   H"11"
    MOVWF   COM
    DECFSZ   COM_2,1
    GOTO   CLOK
    INCF   SEG
    MOVLW   H"08"
    MOVWF   COM_2
CLOK
    MOVLW   H"05"
    MOVWF   TMR0
    BCF   INTCON,2   
    RETFIE
    NOP

    ORG   20
         ;el progama se graba desde la posicion 20
;;;;;;;;;;;;;;;;;;configuracion de los registros ;;;;;;;;;;;;;;
CONFIG               ;
    MOVLW   H"E0"      ;1010 0000
    MOVWF   INTCON      ;
    MOVLW   H"38"      ;0011 1000
    MOVWF   ESTADO      ;
    MOVLW   H"00"      ;0000 0000
    MOVWF   TRISA      ;
    MOVLW   H"FF"      ;1111 1111
    MOVWF   TRISB      ;
    MOVLW   H"F0"      ;1011 0000
    MOVWF   TRISC      ;
    MOVLW   H"04"      ;X010 01XX
    MOVWF   TXSTA
    MOVLW   H"00"      ;0001 1001   
    MOVWF   SPBRG
    MOVLW   H"10"      ;XX01 XXXX
    MOVWF   PIE1
    CLRF   OPCION
    BCF   ESTADO,5   ;
    MOVLW   H"80"      ;1000 XXXX
    MOVWF   RCSTA
    MOVLW   H"FF"
    MOVWF   COM
    MOVLW   H"08"
    MOVWF   COM_2
INICIO
    BTFSC    PIR1,4
    NOP
    MOVF   SEG,0
    MOVWF   PORTC   ; a efectos de verficar funcionamiento pic
    BTFSS   SEG,2
    GOTO   INICIO
    CLRF   SEG      ; empieza la transmisión
    BSF   RCSTA,7
    BSF   ESTADO,5
    BCF   TXSTA,4
    BTFSC   TXSTA,1
    NOP
    BCF   ESTADO,5
    MOVLW   H"05"   
    MOVWF   TXREG
    BSF   ESTADO,5
    BSF   TXSTA,5
    BCF   ESTADO,5
    GOTO   INICIO
END

Gracias,
Mariana

Desconectado wqtrp

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 170
RE: Transmisión serial pic16f876
« Respuesta #1 en: 17 de Noviembre de 2004, 16:32:00 »
hola, lo primero q veo es q en la interrupcion estas usando el reg W y no lo salvas antes y lo mismo sucede con los flags, con lo cual nunca sabras a ciencia cierta que es lo que hace el prog. o que datos hay y cuales son validos...
fijate en el data sheet como se hace para entrar y salir de una interrupcion y como salvar los datos...
ademas creo q cuando hablas de transmitir por el port C te referis a una transmision serie????
pone mas informacion a ese repstecto y trata de solucionar lo de la int.

Suerte.


Desconectado JacoPastorius2004

  • PIC10
  • *
  • Mensajes: 42
RE: Transmisión serial pic16f876
« Respuesta #2 en: 17 de Noviembre de 2004, 18:57:00 »
Hola!

Que interface serie estas usando?
SPI, UART?

Como manejas la recepcion, via pooling o por interrupciones?
Fijate de manejarla en un principio via pooling (en el lado del receptor), hasta que tengas bien en claro todo el proceso de comunicacion.



 

anything