Problema con configuracion de puertos? - PIC16F887

Hola a todos!

Estoy haciendo mi primer programita en ASM, y me encuentro con un pequeño inconveniente: cuando inicializo el programa, configuro y "limpio" los puertos B y D, pero al simularlo en Proteus, no pone todos a cero (estan configurados como salida). Sin embargo, el puerto C, tambien como salida, si funciona. Acomode los registros como lo recomienda la hoja de datos (primero port y despues tris), utilice clrf, utilice movlw 0x00 movwf puerto, y nada! Hasta anulé las funciones que se anulan al configurar el puerto como salida.

Estoy convencido de que me mande alguna al configurar, pero ya no se me ocurre que puede ser.

Les dejo el archivo con el codigo, y un zip con los archivos del MPlab y Proteus.

Desde ya muchas gracias y saludos a todos!

PD: por cierto, el programa es un intento de circuito para medir la fs de un parlante. :D
 

Adjuntos

  • Proyecto PIC16F887.txt
    7.3 KB · Visitas: 48
  • Proyecto.zip
    60.6 KB · Visitas: 20
Cuando lo corro en mi versión de proteus (7.7 sp2) anda perfectamente, todos los puertos a 0 y el Puerto C variando...

El único problema que veo es que no estás esperando el tiempo necesario para la conversión ADC...

Un saludo,
Gonzalo
 
Gracias por responder!
A vos te funciona?? Que raro... Sera entonces algun problema del Proteus?? Alguna configuracion del PIC??

Y ya que estoy... No viste si al final mostraba algun dato en el LCD?:D

Saludos!
 
Cuando lo corro en mi versión de proteus (7.7 sp2) anda perfectamente, todos los puertos a 0 y el Puerto C variando...

Bien, entonces, alguna idea de que es lo que puede ser? Me interesa mas saber cual es el problema, si la version de Proteus, o alguna metida de pata en la programacion, lo del ADC lo arreglare cuando pueda simularlo correctamente.
 
BCF STATUS,RP0 ;Pone a cero el RP0 del STATUS
BCF STATUS,RP1 ;Pone a cero el RP1 del STATUS y selecionamos banco 0
CLRF PORTA ;Limpia el puerto A
CLRF PORTB ;Limpia el puerto B
CLRF PORTC ;Limpia el puerto C
CLRF PORTD ;Limpia el puerto D
CLRF PORTE ;Limpia el puerto E
BSF STATUS,RP0 ;Pone a 1 el bit RP0 del STATUS , se selecciona el banco 1
MOVLW B'01110000' ;Carga el valor B'01110000' (0X70) en el registro W para configurar la frecuencia
;a 8MHz en el OSCCON el cual es para configurar la frecuencia del osc
;interno del Microcontrolador
MOVWF OSCCON ;Carga lo que hay en W a OSCCON osea que pasa el valor de W hacia OSCCON
BSF STATUS,RP1 ;Pone a 1 el bit RP1 del STATUS para selecciona el Banco3, porque estaba
MOVLW B'00000000'
MOVWF ANSEL ;Con estas dos ultimas lineas de limpiar ANSEL configura una parte de Entradas
CLRF ANSELH ;y salidas digitales
BCF STATUS,RP1 ;Pone a 0 el bit RP1 del STATUS para selecciona el Banco1 (B'01')
MOVLW B'00000000' ;Con esta linea y la siguiente configura el PORTA como salidas
MOVWF TRISA
MOVLW B'00000000' ;Con esta linea y la siguiente configura el PORTB como salidas
MOVWF TRISB
MOVLW B'00000000' ;Con esta linea y la siguiente configura el PORTC como salidas
MOVWF TRISC
MOVLW B'00000000' ;Con esta linea y la siguiente configura el PORTD como salidas
MOVWF TRISD
MOVLW B'00000000' ;Con esta linea y la siguiente configura el PORTE como salidas
MOVWF TRISE
BCF STATUS,RP0

Esa es una configuracion inicial de los puertos que uso en todos mic programas , la puedes tener en una Sub-Rutina y llamarla al inicio de tu programa. Espero te sirva
 
Que tal compañeros, pues tengo un pequeño problema con este pic, lo que pasa es que estoy utilizando el puerto A como salida, y para probar dicho puerto estoy haciendo una cuenta binaria ascendente del 0 al 255, pero a la hora de que tienen que encender los led's del puerto A (bit 6 y bit 7) no encienden, yo se que ahí debería ir el cristal pero estoy usando el oscilador interno con OSCCON = $74.
Y bueno lo que he hecho es lo siguiente y no logro ponerlos como salida digital
TRISA=%00000000
TRISA.6=0
TRISA.7=0
ANSEL.7=0
ANSEL.6=0
ANSELH=0
estoy programando en PROTON IDE (muy similar al basic)
espero me puedan echar la mano, desde ya gracias
 
Que tal compañeros, pues tengo un pequeño problema con este pic, lo que pasa es que estoy utilizando el puerto A como salida, y para probar dicho puerto estoy haciendo una cuenta binaria ascendente del 0 al 255, pero a la hora de que tienen que encender los led's del puerto A (bit 6 y bit 7) no encienden, yo se que ahí debería ir el cristal pero estoy usando el oscilador interno con OSCCON = $74.
Y bueno lo que he hecho es lo siguiente y no logro ponerlos como salida digital
TRISA=%00000000
TRISA.6=0
TRISA.7=0
ANSEL.7=0
ANSEL.6=0
ANSELH=0
estoy programando en PROTON IDE (muy similar al basic)
espero me puedan echar la mano, desde ya gracias

Hola...Prueba :
Código:
Device = 16F887
Config1 $2FD4
Config2 $3FFF

All_Digital= 1

Saludos.

Ric.
 
Atrás
Arriba