TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: palacio en 17 de Marzo de 2010, 21:41:46
-
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
-
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