Autor Tema: Comunicación puerto serie del Pc  (Leído 2520 veces)

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

Desconectado jca

  • PIC12
  • **
  • Mensajes: 75
Comunicación puerto serie del Pc
« en: 22 de Abril de 2004, 15:05:00 »
Hola a todos toy ya desesperao, estoy intentando comunicar el ordenador con el 16f876 através del puerto serie, bueno comunicar...solo intento que el dato que le envío lo coja y me lo
muestre por el puerto B, pero es imposible, ALGUIEN ES TAN AMABLE O TIENE POR AHI UNA RUTINA (QUE FUNCIONE!!) QUE RECOJA EL DATO DEL PUERTO SERIE DEL ORDENADOR???.
He hecho un programilla en Visual Basic el cual manda un dato por el puerto serie con esta configuración de este el 8N1 a 9600bps, de todas formas tb os adjunto los programas con los que
estoy intentando recoger el dato, uno supuestamente funciona por interrupción y el otro esta hecho sin ella, tb adjunto el programa con el que le envio el dato al puerto.
Con el de interrupción como la pata 3 del puerto serie es la que manda los datos, esta está siempre a -10V o así entonces el max232 lo cambia a 5V a la salida, con esto lo que pasa es que siempre entra en la interrupción y cuando mando el dato desde el ordenador este cambia la tensión cambiando así la salida del max232 y poniendola a 0V a si que no hace nada pero en fin que ya no se que hacer.
Si hay algun alma caritativa por ahi que me heche una manilla....
Gracias a todos!!!

Bueno pongo aqui el programa pq no me deja subir el adjunto...

CON INTERRUPCIÓN
-------------------------------------------------------------------------------------
;*****************************************************
; PROGRAMA : cabina rayos U_V_A.asm                          
; Funcion : Escucha puerto serie rs232 y cuando recibe un dato
;salta la interrupcion y lo muestra en el PuertoB.      
;                        
;Configuración puerto Serie: 9600 baudios,8 bits,paridad = none
;     Programa para : PIC16F876
;         CPU Clock : 4 MHz                      
;               WDT : Deshabilitado                    
; Reloj instruccion : 1 MHz = 1 us
;     Tipo de reloj : XT
;*****************************************************   
                 LIST         P=16F876   
   #include   "p16f876.inc"   

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

;------------------- VECTOR DE INTERRUPCION -------------------->>>>>
ORG   0x04      

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.
                  
;----------------- PROGRAMA PRINCIPAL ------------------->>>>>>>

INICIO   
   clrf PORTB
   clrf PORTC
   bsf   STATUS,5                                        ;Cambio al banco 1
   clrf ADCON0
   movlw 0x07      
   movwf ADCON1
   clrf   TRISA                                         ;Puerto A como salida
   clrf   TRISB                                ;Puerto B como salida
   movlw   b"10111111"                                   ;RC7/Rx entrada
   movwf   TRISC                                ;RC6/Tx   salida
   movlw   b"10010000"                                   ;Configuracion USART
   movwf   TXSTA                                                           ;y activacion de transmision
   movlw   .25                                          ;9600 baudios   
                movwf   SPBRG
   movlw   b"00100000"
   movwf   PIE1                                                 ;Habilitacion interrupcion RX
   movlw   b"11000000"                                  ;Habilitacion para las
   movwf   INTCON                  ;interrupciones generales
   bcf   STATUS,5                                        ;Cambio al banco 0
   movlw   b"10010000"                                 ;Configuracion de la usart
   movwf   RCSTA                                               ;para recepcion continua
         
BUCLE   
   goto   BUCLE                                          ;espera aqui hasta que salte la int.
               
END

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
RE: Comunicación puerto serie del Pc
« Respuesta #1 en: 23 de Abril de 2004, 01:58:00 »
Hola compañero:
Mira he revisado un poco el código que pones y te adjunto la parte del programa principal que yo utilizo y que me funciona correctamente con 16F876. Difiere un poco de la tuya(configuracion de USART y estructura de colocacion de bancos de memoria) aunque pienso que deberia funcionar. Lo dicho ahí va:


INICIO   clrf            PORTC      
   clrf   PORTB
   bsf   STATUS,RP0   ;Selecciona banco 1
   clrf   PORTB      ;Puerta B salida
   movlw   b"10111111"
   movwf   TRISC      ;RC7/Rx entrada, RC6/Tx salida
   movlw   b"00100100"   
   movwf   TXSTA      ;TX en On, asíncrono 8 bits, alta velocidad
   movlw   .25
   movwf   SPBRG      ;9600 baudios con Fosc=4MHz
   bsf   PIE1,RCIE      ;Habilita interrupción en la recepción
   bcf   STATUS,RP0   ;Selecciona banco 0
   movlw   b"10010000"
   movwf   RCSTA      ;USART en On, recepción contínua
   bsf   INTCON,PEIE   ;Activa interrupción de periféricos
   bsf   INTCON,GIE   ;Activa interrupciones
Saludos fermin
Todos los días se aprende algo nuevo.

Desconectado jca

  • PIC12
  • **
  • Mensajes: 75
RE: Comunicación puerto serie del Pc
« Respuesta #2 en: 23 de Abril de 2004, 14:43:00 »
Hola de nuevo gracias por tu interés pero esto sigue sin funcionar!!
He puesto la configuración que me as mandado pero nada cuando mando un dato por el puerto serie me pone siempre lo mismo, te puedo pedir un favor???me podrías mandar tu programa para probarle???

GRacias de ante mano!!

Saludos.

Desconectado jca

  • PIC12
  • **
  • Mensajes: 75
RE: Comunicación puerto serie del Pc
« Respuesta #3 en: 05 de Mayo de 2004, 20:19:00 »
Perdón se me olvidó poner que ya funciona todo, gracias a todos los que me han ayudado y bueno por mi parte ya se puede cerrar este hilo, a si que a otra cosa!! jeje.

Gracias a todos 1 Saludo.


 

anything