Programación Específica > Microcontroladores

 Problemas Con El 16f87

(1/4) > >>

karen81:
:hitcomp: Estoy desesperada, no puedo hacer que el PIC 16F87 reciba y transmita datos, inicialmente estoy probando con el siguiente programa de envio:


--- Código: Text ---  LIST  p=16F87    &#59;indica el modelo del pic        #include "P16F87.INC" &#59;se incluye la definicion de los registros internos   AUXI   EQU 0x68&#59;variable auxiliar     ORG 0   goto INITVAR      ORG 5;--------------------------------------------------------------------------------------;Esta rutina inicializa las variables a utilizar;--------------------------------------------------------------------------------------- INITVAR      clrf PORTA&#59;Limpia la salida        bsf RCSTA,SPEN&#59;configura la USART para recepcion continua    bsf STATUS,RP0&#59;cambia al banco 1    clrf TRISA&#59;Puerta A como salida        movlw b'11011111'        movwf TRISB    movlw b'00100100'        movwf TXSTA        movlw .25 &#59;Baud Rate = Fosc/(16(X+1))= 9600 baudios, X=(Fosc/((Baud rate)x16))-1     movwf SPBRG&#59; X=(4MHz/(9600x16))-1 = 25     bcf STATUS,RP0;cambia al banco 0        bsf RCSTA,SPEN&#59;configura la USART para recepcion continua;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""        bsf STATUS,RP0&#59;cambia al banco 1      bcf STATUS,RP1&#59;cambia al banco 1    bsf TXSTA,TXEN        bcf STATUS,RP0;cambia al banco 0      movlw 0x42 &#59;UNA B        movwf AUXI         call ENVIAR        ESPERA  clrwdt        goto ESPERA ENVIAR          movf AUXI,W    movwf TXREG        bsf STATUS,RP0&#59;cambia al banco 1COMPTX   btfss TXSTA,TRMT&#59;comprueba si acabo de transmitir    goto COMPTX        bcf STATUS,RP0&#59;cambia al banco 0    movlw 0x02        movwf PORTA        return  END  
el problema que tengo es que supuestamente si no leo el dato, no tendria que sacar ese dos por el puerto A ¿verdad?, pero solo enciendo el pic y me muestra ese dos ¿en que me he equivocado?, me he basado en programas del pic 16f873 que esta aqui en este foro, y para comunicarme estoy usando un circuito alterno al del MAX232 que esta en la pagina http://www.pablin.com.ar/electron/circuito/mc/ttl232/
¿sera que no funciona? o ¿se me habra arruinado la parte rs232 del pic? porque lo he probado con programas que no la usan y si funcionan.

 :ayuda:  porfavor


cualquier ayuda sera bienvenida

lalo_soft:

--- Citar ---ENVIAR 
       movf AUXI,W
    movwf TXREG
       bsf STATUS,RP0;cambia al banco 1
COMPTX   btfss TXSTA,TRMT;comprueba si acabo de transmitir
    goto COMPTX
       bcf STATUS,RP0;cambia al banco 0
    movlw 0x02
       movwf PORTA
       return
--- Fin de la cita ---

Pero si transmites ,espera fin de transmicion y luego le ordenas escribir el 2.¿Cual es el problema? explicanos el contexto para poder ayudarte mejor por que hasta ahora no veo el problema.

Otra cosa:

--- Citar ---ESPERA  clrwdt
       goto ESPERA
--- Fin de la cita ---
Si tienes encendido el WatchDog mejor apagalo en el inicio de tu programa por que  si no tienes bien calculado el tiempo que tardan de las instruciones que usas sera facil que te resete
el micro en medio de cualquier parte en tu programa.

karen81:
el problema es que no funciona  ;), no se si el programa tiene un error o que? , y le puse lo del watchdog por que se me reseteaba, pero eso es lo de menos, se lo quito y ya pero  ya  lo hice y nada.



cualquier ayuda sera bienvenida

Huguen_aus_Tirol:
Hola Karen! No verifiqué que estén bien cada uno de los bits de configuración en tu programa, pero aparentemente estan en orden...
Bien, arrancas el PIC, configuras los registros, llamas a la rutina ENVIAR: escribes un byte en el registro TXREG (la transmisión se inicia automáticamente), verificas que se termine de transmitir (polling), escribes el 2, y return :)
Y entonces quedas en un lazo infinito.
Asi como está el programa, no recibes nada; o mejor dicho, no tienes una rutina para la recepción.
La transmisión la realizas una sola vez, y luega quedas en un lazo.
Bueno, espero ayudar un poquito...

Saludos :hola:

lalo_soft:

--- Citar ---el problema que tengo es que supuestamente si no leo el dato, no tendria que sacar ese dos por el puerto A
--- Fin de la cita ---

Insisto todo lo que haces es transmitir y colocar el dos.

Tirol tiene razon donde esta la rutina de recepcion.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa