Hola a todos, bueno, he leido mucho en éste foro y me hubiera gustado opinar..pero como tampoco se responder a ninguna duda por ahora no he podido participar desgraciadamente.
La cosa es que estoy haciendo un PFC con un PIC 16f877a utlizandolo de tarjeta de adquision de datos de un motor, con su conversor para luego meterlo al LABVIEW...pero no hay manera, incluso meto los ejemplos que he visto por ahi y nada.
Me he comprado el EASYPIC5, lo estoy intentando hacer con Ensamblador comunicando a 9600Baud con 16f877a y reloj externo de 8MHZ y mi programa es éste...pero nose que pasa q no recibo nada, llevo mas de una semana metiendo horas y horas y no avanzo..y me gustaria una pequeña ayudita porque de verdad, me estoy muriendo y con ganas de tirar la toalla...
A ver que opinais...ademas es muy sencillo, adquirir una señal y mandar una de los 2 registros del ADRES
************************************************************************
;* Este programa realiza la conversión de una señal analógica conectada *
;* al canal AN0 y envía a través del serie los datos al ordenador
;**************************************************************************
;
Include "p16f887.inc"
list P=16f887
cont EQU 0x20
dato EQU 0x21
org 0x0000
CALL initrans ;Inicializamos el puerto serie
BSF STATUS,RP0 ;Banco 1
CLRF ADCON1 ;configura 8 canales analógicos,
BSF ADCON1,ADFM ;justificación a la derecha
BSF TRISA,0 ;entrada el canal digital RA0
BCF STATUS,RP0 ;Accedemos al Banco0
MOVLW b'00000001' ;AN0, reloj de conversión Fosc/2
MOVWF ADCON0 ;y enciende el convertidor
ciclo CALL pausa ;30 µseg tiempo de adquisición
BSF ADCON0,GO_DONE ;inicia conversión
espera BTFSC ADCON0,GO_DONE
GOTO espera ;Espera a que termine la conversión
BSF STATUS,RP0 ;Banco 1
MOVF ADRESL,W ;Carga en W el Byte alto resultado
MOVWF dato ;lo guarda en dato
CALL envia ;Enviamos por el puerto serie
GOTO ciclo ;Volvemos a convertir
;**************************************************************
; Subrutina de pausa de aprox. 30 µseg (con Fosc=20 MHZ)
;****************************************************************
pausa MOVLW 0x29 ;Carga dato para 30 µseg.
MOVWF cont ;inicializa contador con el dato
rep DECFSZ cont,1 ;Decrementa contador y escapa si cero
GOTO rep ;si no es cero, repite
esc RETURN ;regresa de esta subrutina
;********************************************************************
; Subrutina para inicializar el puerto serie para el envío de datos
;*********************************************************************
initrans BSF STATUS,RP0 ;Banco 1
BCF TXSTA,BRGH ;Pone Bit BRGH=0 (velocidad baja)
MOVLW b'00001100' ;12 decimal para 9600 8Mhz vel baja
MOVWF SPBRG ;Lo configura a 9600
BCF TXSTA,SYNC ;Limpia Bit SYNC (Asincrono)
BSF TXSTA,TXEN ;Ponemos a 1 el bit (Habilitamos)
BCF STATUS,RP0 ;Banco 0
BSF RCSTA,SPEN ;Pone Bit a 1 (habilita serie)
RETURN
;**********************************************************************
; Subrutina para enviar un dato por el puerto Serie
;***********************************************************************
envia BSF STATUS,RP0 ;Banco 1
esp BTFSS TXSTA,TRMT ;Chequea el buffer de transmision
GOTO esp ;si esta ocupado espera
BCF STATUS,RP0 ;Regresa al Banco 0
MOVF dato,W ;Rescata el dato a enviar
MOVWF TXREG ;lo envia
RETURN
end
MUCHAS GRACIAS POR ENTRAR EN EL POST