Autor Tema: Comunicación serial con pic 16f877 para graficar datos en labview  (Leído 5701 veces)

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

Desconectado palacio

  • PIC10
  • *
  • Mensajes: 4
Hola ha todos estoy tratando de realizar la comunicación del puerto seria con labview  pero ni problema esta que cuando trato de graficar la  los datos que llagan por el puerto serial no me funciona la grafica de la señal ECG,  debería ser igual a la del osciloscopio pero no lo es no sé si es el software que está mal diseñado o la Interfax   porfa  si alguien puede ayudarme se lo agradecería   
Aquí le dejo el programa que diseñe

list      p=16f877a            ; list directive to define processor
   #include <p16f877a.inc>        ; INCLUIMOS LAS DEFINICIONES DEL PIC  TILIZADO
   
   #define BANCO_1 bsf STATUS,RP0   ;DEFINICION DE BANCO 1
   #define BANCO_0 bcf STATUS,RP0  ;DEFINICION DE BANCO 0
   ERRORLEVEL -306, -302            ;QUITAMOS LOS ERRORES DE BANCO EN MPLAB   
   RADIX HEX                       ; sistema de numeracion hexadecimal

   __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _HS_OSC & _LVP_ON& _DEBUG_OFF & _CPD_OFF
 
; ***********************************
; *    DEFINICION DE ETIQUETAS      *
; ***********************************
   org 0
   goto inicio
 
; **************************************************
; *    RUTINA DE INICIO, AUQI CONFIGURAMOS EL PIC  *
; **************************************************
inicio
    clrf       PORTA
    clrf   PORTB
    bsf   STATUS,RP0   ;Selecciona banco 1
    movlw   b'00000110'
    movwf   ADCON1      ;Puerta A E/S digitales
    clrf   TRISB      ;Puerta B se configura como
 
 BANCO_1
   clrf   PORTC   
   movlw      b'10111111'
   movwf      TRISC
   movlw      b'00100100'   ; SYNC=0 (asincrono) y BRGH = 1 (alta velocidad)
   movwf      TXSTA
   movlw      .129                           
   movwf      SPBRG     ;9600 CON UN CRISTAL DE 20MHz
   BANCO_0
   bsf   RCSTA,SPEN   ;USART en On
 

Init_ADC
         BANCO_0
          movlw   b'10000001'
          movwf   ADCON0
 Loop     bsf   STATUS,RP0   ;Selecciona página 1
          movlw b'00000001'
          movwf TRISA      ;Puerta A entradas
          clrf   ADCON1      ;Puerta A entradas analógicas
          bcf   STATUS,RP0                 ;Selecciona página 0
          bcf   PIR1,ADIF                 ;Restaura el flag del
          nop
          nop     
          bsf     ADCON0,GO_DONE      ;inicializa la conversion
ADC_TERNINO
          btfss    PIR1,ADIF   ;Fin de conversión ??
          goto     ADC_TERNINO          ;espera a terminar la conversion
          bsf   STATUS,RP0   ;Selecciona banco 1
          movlw b'00000110'
          movwf ADCON1          
          BANCO_0
          movf      ADRESH,w
          andlw     b'11111111'         
          BANCO_0
          movwf     TXREG   ;el resultado es retornado  (8bits)
          nop
          nop
          nop
          nop
          nop
          nop
          nop
          nop
          nop
 
 allsend
         BANCO_1       ; Banco 1 
         btfss  TXSTA,TRMT        ; byte transmitido ?????
         goto    allsend         ; No pues espera

         goto Loop
    END

Desconectado yushiro50

  • PIC10
  • *
  • Mensajes: 23
Re: Comunicación serial con pic 16f877 para graficar datos en labview
« Respuesta #1 en: 29 de Marzo de 2010, 17:54:44 »
Que tal bueno de labview no conosco mucho, lo que si de comunicacion serie entre pic's me ha salido bien con el siguiente codigo

LIST P=16F877A
RADIX HEX
INCLUDE P16F877A.INC
jojo equ 0x21
jojo1 equ 0x22
ORG 0X00
goto inicio
inicio
;;;;;;;;;;; CONFIGURACION ADC Y PUERTOS

bcf STATUS,RP0; seleccion de
bcf STATUS,RP1;   banco 0

bcf ADCON0,0; desactiva ADC
bsf STATUS,RP0; seleccion banco 1           

movlw b'1011111'
movwf TRISC
movlw b'11111111'
movwf TRISD
movlw b'111111'
movwf TRISA

bcf STATUS,RP0 ; banco 0
bcf STATUS,RP1 
clrf PORTC
clrf PORTA
clrf PORTD
clrf jojo
clrf jojo1
bsf RCSTA,SPEN

bsf STATUS,RP0 ;mover banco 1
bcf STATUS,RP1 ;
 
movlw b'00100100'
movwf TXSTA
movlw .51
movwf SPBRG
parte0
      bcf STATUS,RP0
      movf PORTD,w
      movwf jojo
      bsf TXSTA,TXEN
      
      movf PORTD,w
      xorlw b'00000000'
      btfsc STATUS,Z
            movlw b'00000000'
            btfsc STATUS,Z
            movwf jojo
            btfsc STATUS,Z
            movlw b'00000000'
            btfsc STATUS,Z
            movwf TXREG   
      movf PORTD,w
      xorlw b'00000001'
      btfsc STATUS,Z
            movlw b'00000001'
            btfsc STATUS,Z
            movwf jojo
            btfsc STATUS,Z
            movlw b'11111111'
            btfsc STATUS,Z
            movwf TXREG         
      movf PORTD,w
      xorlw b'00000011'
      btfsc STATUS,Z
            movlw b'00000011'
            btfsc STATUS,Z
            movwf jojo
            btfsc STATUS,Z
            movlw b'11101100'
            btfsc STATUS,Z
            movwf TXREG
      movf PORTD,w
      xorlw b'00000111'
      btfsc STATUS,Z
            movlw b'00000111'
            btfsc STATUS,Z
            movwf jojo
            btfsc STATUS,Z
            movlw b'00101100'
            btfsc STATUS,Z
            movwf TXREG
      movf PORTD,w
      xorlw b'00001111'
      btfsc STATUS,Z
            movlw b'00001111'
            btfsc STATUS,Z
            movwf jojo
            btfsc STATUS,Z
            movlw b'01110100'
            btfsc STATUS,Z
            movwf TXREG
      movf PORTD,w
      xorlw b'00011111'
      btfsc STATUS,Z
            movlw b'11010101'
            btfsc STATUS,Z
            movwf jojo
            btfsc STATUS,Z
            movlw b'10000100'
            btfsc STATUS,Z
            movwf TXREG
      movf PORTD,w
      xorlw b'00111111'
      btfsc STATUS,Z
            movlw b'00111111'
            btfsc STATUS,Z
            movwf jojo
            btfsc STATUS,Z
            movlw b'00000101'
            btfsc STATUS,Z
            movwf TXREG
      movf PORTD,w
      xorlw b'01111111'
      btfsc STATUS,Z
            movlw b'01111111'
            btfsc STATUS,Z
            movwf jojo
            btfsc STATUS,Z
            movlw b'11111101'
            btfsc STATUS,Z
            movwf TXREG
      movf PORTD,w
      xorlw b'11111111'
      btfsc STATUS,Z
            movlw b'11111111'
            btfsc STATUS,Z
            movwf jojo
            btfsc STATUS,Z
            movlw b'00000000'
            btfsc STATUS,Z
            movwf TXREG
      goto parte0
end


las comparaciones que hago dependeran de 1 dipswich que tengo conectado y asi mandara cierta informacion al otro pic, que tiene otro programa para recibir informacion por el puerto serie, espero te sirva de algo