Autor Tema: AYUDA CON COMUNICACION SERIAL  (Leído 1352 veces)

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

Desconectado ramxt

  • PIC10
  • *
  • Mensajes: 3
AYUDA CON COMUNICACION SERIAL
« en: 06 de Mayo de 2005, 12:21:00 »
HOLA:
A TODOS, LOS DEL FORO.

DESEO COMUNICARME EN FORMA SERIAL ENTRE DOS PIC UN 16F877(COMO MAESTRO) Y OTRO PIC  IGUAL (COMO ESCLAVO) ME GUSTARIA VER UN EJEMPLO MAESTRO-ESCLAVO EN ASM, ESPERO QUE ALGUIEN DEL FORO PUEDA ORIENTARME,PARA LOGRAR ESTE TRABAJO.

CUALQUIER RESPUESTA EN ESTE SENTIDO DESDE YA SE LES AGRADECERA.

Desconectado RGL

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 634
RE: AYUDA CON COMUNICACION SERIAL
« Respuesta #1 en: 09 de Mayo de 2005, 18:13:00 »
En el foro de Basic tienes un ejemplo de Lager.

Saludos,
Ricky

Desconectado ramxt

  • PIC10
  • *
  • Mensajes: 3
RE: AYUDA CON COMUNICACION SERIAL
« Respuesta #2 en: 10 de Mayo de 2005, 22:22:00 »
que tal amigos necesito de su ayuda estoy realizando un proyecto sobre comunicacion por radio frecuencia, pero lo que estoy haciendo ahorita es la de comunicacion serial sincrona entre dos pic16f877 en la cual tengo problemas en la transmision serial, realice el programa en asm del pic master pero no logro transmitir , acontinuacion les presento el programa que e realizado haber si alguien lo checa y medigan donde esta el error para la transmision serial sincrona.

;***********************************************************
           list p=16f877           ;se usa el PIC16F84

      include "p16f877.inc"     ;se carga la libreria correspondiente
                                  ;al PIC16F84      

CONTD      EQU      0X3C          ;se le asigna la direccion a "CONTB"
           org      0x00
           goto     INICIO
           org      5
INICIO       call     initrans
      bsf      STATUS,RP0    ;banco 1
           movlw    0xbF     
      movwf    TRISC
      movlw    0XFF          
           movwf    PORTD         ;puerto d como entrada        
           movlw    0X06         ;puerto a como salida
           movwf    ADCON0
           clrf     PORTA
           movlw    0XD7          
           movwf    TMR0          ;prescaler 1 :128
           
           bcf      STATUS,RP0    ;banco 1
             
ruttec     movlw    0x02
           movwf    PORTA  
           call     EXPLOTEC
           call     envia
           goto     ruttec  
        
        
;*************************************************************************
;exploracion del teclado
;*************************************************************************
EXPLOTEC           movlw   0X1A
         subwf   PORTD,0
         btfss   STATUS,Z
         goto   T7
         movlw     0X1A
         return
T7         movlw   0X19
         subwf   PORTD,0
         btfss   STATUS,Z
         goto   T1
         movlw     0X19
         return   
T1         movlw   0X1B
         subwf   PORTD,0
         btfss   STATUS,Z
         goto   T4
         movlw     0X18
         return   
T4         movlw   0X14
         subwf   PORTD,0
         btfss   STATUS,Z
         goto   T0
         movlw     0X14
         return   
T0         movlw   0X16
         subwf   PORTD,0
         btfss   STATUS,Z
         goto   T8
         movlw     0X16
         return   
T8         movlw   0X18
         subwf   PORTD,0
         btfss   STATUS,Z
         goto   T5
         movlw     0X18
         return   
T5         movlw   0X1C
         subwf   PORTD,0
         btfss   STATUS,Z
         goto   T2
         movlw     0X1C
         return   
T2         movlw   0X1D
         subwf   PORTD,0
         btfss   STATUS,Z
         goto   TN
         movlw     0X1D
         return   
TN         movlw   0X15
         subwf   PORTD,0
         btfss   STATUS,Z
         goto   T9
         movlw     0X15
         return
T9         movlw   0X1E
         subwf   PORTD,0
         btfss   STATUS,Z
         goto   T6
         movlw     0X1E
         return   
T6         movlw   0X17
         subwf   PORTD,0
         btfss   STATUS,Z
         goto   T3
         movlw     0X17
         return   
T3                 movlw   0X13
         subwf   PORTD,0
         btfss   STATUS,Z
         goto   TF
         movlw     0X13
         return
TA         movlw    0X01
         movwf    PORTA
         movlw   0X17
         subwf   PORTD,0
         btfss   STATUS,Z
         goto   TB
         movlw     0X17
         return
TB         movlw   0X1D
         subwf   PORTD,0
         btfss   STATUS,Z
         goto   TC
         movlw     0X1D
         return   
TC         movlw   0X1B
         subwf   PORTD,0
         btfss   STATUS,Z
         goto   TD
         movlw     0X1B
         return   
TD         movlw   0X1E
         subwf   PORTD,0
         btfss   STATUS,Z
         goto   TE
         movlw     0X1E
         return   
TE         movlw   0X0F
         subwf   PORTD,0
         btfss   STATUS,Z
         goto   TU
         movlw     0X0F
         return   
TF         movlw   0X0F
         subwf   PORTD,0
         btfss   STATUS,Z
         goto   TA
         movlw     0X0F
         return   
            
TU                 movlw     0X00
                   return         
                 
        
      
;****************************************************************
;Subrutina para inicializar el puerto serie USART como transmisor
;a 9600 Bauds, MODO SINCRONO
;****************************************************************
initrans
   BCF STATUS,RP1
   BSF STATUS,RP0    ;banco 1
   MOVLW .103    ;valor para 9600 Bauds (Fosc=4 Mhz)
   MOVWF SPBRG    ;configura 9600 Bauds
   BSF TXSTA,CSRC   ;pone en 1 el bit CRSC(modo master)
   BSF TXSTA,SYNC    ;pone en 1 el bit SYNC (modo síncrono)
   BSF TXSTA,TXEN    ;pone bit TXEN=1 (habilita transmisión)
   BCF STATUS,RP0    ;regresa al banco 0
   BSF RCSTA,SPEN    ;pone bit SPEN=1 (habilita puerto serie)
   BSF RCSTA,CREN
   RETURN

;***************************************************************
;Subrutina para enviar el byte guardado en W por el puerto serie
;***************************************************************
envia    BSF STATUS,RP0 ;banco 1
esp    BTFSS TXSTA,TRMT ;checa si el buffer de transmisión
   GOTO esp ;si está ocupado espera
   BCF STATUS,RP0 ;regresa al banco 0
   MOVWF TXREG ;envía dato guardado en W
   RETURN

;**************************************************          
RETARDOS   movlw    D"10"
           movwf    CONTD
RET        movlw    -D"78"
           movwf    TMR0
EXPLOS     btfss    INTCON,2
           goto     EXPLOS
           bcf      INTCON,2
           decfsz   CONTD,F
           goto     RET
           goto     SAL        
SAL        return
           end        

en lacual consta de un teclado que va conectado al pic y es la señal del teclado la que quiero transmitir a otro pic como esclavo. en la cual tambien tengo problemas de como hecer la recepcion de estemismo.
cualquier respuesta se las agradecere.    

Desconectado ufenix

  • PIC10
  • *
  • Mensajes: 4
RE: AYUDA CON COMUNICACION SERIAL
« Respuesta #3 en: 20 de Mayo de 2005, 10:48:00 »
hola

querido amigo... bueno la verdad es que no he analisado tu programa pero te puedo dar una sugerensia.......

Bueno para inisiar tienes que hacer la comunicacion con los dos 77 de forma directa osea sin la via radio...... si te presenta errores debes de cambiar la velosidad de transmision o sino el cristal recuerda que la ecuasion del modulo USUART tiene un margen de error...... sino verifica con un computador que los micro te recepsionan bien, y listo ha y recuerda que la transmision por via radio influye mucho la velosidad ala que el transmisor es ideal. bueno espero que te sirva de mucha ayuda.


 

anything