Autor Tema: Ayuda con el pic 16f873A  (Leído 4515 veces)

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

Desconectado adrianrs86

  • PIC10
  • *
  • Mensajes: 24
Ayuda con el pic 16f873A
« en: 15 de Marzo de 2008, 00:10:41 »
Hola amigos tengo un problemilla con este pic, resulta que estoy haciendo un programa tan simple como prender 3 leds (en el puerto B)  al detectar un nivel alto en el RC0; y resulta que al hacer el programa me compila y me simula bien, pero cuando descargo el programa en el pic al alimentarlo con los 5 V los tres leds se prenden sin esperar a que yo ponga un nivel alto en el RC0, prendiendosen como si de una vez ya estuviera este estado alto en este bit (RC0), por favor ayudenme cuanto antes, aqui dejo el programa por si encuentran alguna irregularidad.

LIST P=16F873A
INCLUDE P16F873A.INC



               ORG         00      
               GOTO      START
               ORG         05




START
               BANKSEL      TRISA
               MOVLW      B'11111'
               MOVWF      TRISC
               CLRF      TRISB   
               BANKSEL      PORTA
               CLRF      PORTB
               CLRF      PORTC

INICIA                            BTFSS      PORTC,0
               GOTO      INICIA
               MOVLW      .7
               MOVWF      PORTB
               GOTO      INICIA
               END



Desconectado poseidon20

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 762
Re: Ayuda con el pic 16f873A
« Respuesta #1 en: 15 de Marzo de 2008, 01:59:41 »
hola adrianrs86, lo que veo en tu programa es, primero: como estas configurando los fuses?, osea si tienes habilitado o no el WDT, BODEN, CP, CP etc, segundo: veo que tu programa pregunta sine l pin RC0 esta en 1, ahora digamos que el pin RC0 detecta 1 y enciende los 3 leds del portb, y si luego ya no detecta el 1, deberia apagar los leds, pero tu programa no hace eso por que una vez que detecte uno los leds del puerto B se quedaran encendidos. Tercero: como esta conectdo el pulsador en el pin RC0, si pudieras poner el diagrama esquematico de tu circuito, pero me atrevo a asegurar que lo tienes de esta manera:

 5v
  !
  !
 10k
  !
  !-----RC0
  !
  !
pulsador
  !
  !
gnd

como te podras dar cuenta, apenas tu programa comienze, el pin RC0 va a detectar 1, sin haber presionado el pulsador(que es del tipo normalmente abierto) y como tu programa no contempla lo que anteriormente te mencione los leds del puerto B se quedaran encendidos indefenidamente. Deberias hacerlo de esta manera:

Código: ASM
  1. BANKSEL      PORTA
  2.  
  3.  
  4.                CLRF        PORTB        ;limpio el portb
  5. INICIO  
  6.                BTFSC      PORTC,0     ;pregunto si se preciono el pulsador
  7.                GOTO       $-2            ;NO, retrocedo dos lineas para borrar portb
  8.                MOVLW      .7             ;SI, enciendo los leds del portb
  9.                MOVWF      PORTB
  10.                GOTO      INICIA         ;cominzo de nuevo el ciclo
  11.                END

De esta manera los leds encenderan cuando solo presiones el pulsador, en este caso estas detectando un nivel bajo, pero si quieres hacerlo por nivel alto tienes que cambiar la posicion del pulsador en RC0 asi:

  5v
   !
   !
pulsador
   !
   !----4.7k----RC0
   !
 10K
   !
   !
  gnd

Como puedes ver de esta manera necesitarias una resistencia mas y en un diseño se trata de optimizar los recursos y espacios en un placa, si haces una placa no se notaria la direcencia pero si haces 100 en ese caso si se ve la diferencia. Y el codigo solo cambiarias esta linea :

Código: ASM
  1. BANKSEL      PORTA
  2.  
  3.  
  4.                CLRF        PORTB        ;limpio el portb
  5. INICIO  
  6.                BTFSS      PORTC,0     ;pregunto si se preciono el pulsador
  7.   ....
  8. .....
  9.                END

Bueno, espero que te aya sido de ayuda mi explicacion  si no te quedo claro algo no dudes en preguntar en el foro, que para eso estamos, para aprender este mundo maravilloso de los uC  :mrgreen: :mrgreen:





Desconectado adrianrs86

  • PIC10
  • *
  • Mensajes: 24
Re: Ayuda con el pic 16f873A
« Respuesta #2 en: 16 de Marzo de 2008, 23:56:34 »
Solo una cosa mas dime como configurar los fuses, porque a la hora de descargar el programa deshabilito el perro guardian y elijo el el oscilador XT (4 MHZ)

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Ayuda con el pic 16f873A
« Respuesta #3 en: 17 de Marzo de 2008, 01:40:33 »
Si quemas al PIC con el programa ICPROG, lo puedes hacer antes de grabar el micro, habilitando o desbilitndo los item en la pare derecha de la ventana de ICPROG.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado alexlhmx

  • PIC10
  • *
  • Mensajes: 1
Re: Ayuda con el pic 16f873A
« Respuesta #4 en: 17 de Marzo de 2008, 16:54:57 »
Hola, buen día, tengo una preguta con respecto a este pic, deseo saber si hay forma de ver la información que guarda un pic protegido?, ya que con el programador que tengo (Top Max) no la puedo ver el editor me aprece en ceros cuando lo intento leer, esepero alguien me pueda ayudar a resolver mi duda.
Gracias.
Saludos.

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Ayuda con el pic 16f873A
« Respuesta #5 en: 17 de Marzo de 2008, 19:43:10 »
No se puede ya que es el propio PIC que no envía datos cuando se lo intenta leer.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado poseidon20

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 762
Re: Ayuda con el pic 16f873A
« Respuesta #6 en: 17 de Marzo de 2008, 20:57:49 »
Solo una cosa mas dime como configurar los fuses, porque a la hora de descargar el programa deshabilito el perro guardian y elijo el el oscilador XT (4 MHZ)

Lo de los fuses me refiero a ponerlos en el programa algo asi :

Código: ASM
  1. LIST P=16F873A
  2. INCLUDE P16F873A.INC
  3.  
  4. __CONFIG  _CP_OFF  & _WDT_OFF & _PWRTE_ON & _XT_OSC
  5.  
  6.                ORG         00      
  7.                GOTO      START
  8.                ORG         05

asi ya no tendras necesidad de estar cambiando en el software de grabacion los fuses, ya que estos bienen definidos en el asm, claro que para este modelo de pic me faltan poner mas fuses, para saber cuantos fuses soporta este pic en particular, deberas revisar el archivo include del mismo y ahi figura los fuses que soporta :D

Hola, buen día, tengo una preguta con respecto a este pic, deseo saber si hay forma de ver la información que guarda un pic protegido?, ya que con el programador que tengo (Top Max) no la puedo ver el editor me aprece en ceros cuando lo intento leer, esepero alguien me pueda ayudar a resolver mi duda.
Gracias.
Saludos.

cuando esta con CP_ON, no podras leer el pic de ninguna manera, es por eso que solo te arroja puros ceros cuando tratas de leerlo

Desconectado adrianrs86

  • PIC10
  • *
  • Mensajes: 24
Re: Ayuda con el pic 16f873A
« Respuesta #7 en: 20 de Marzo de 2008, 19:56:26 »
Ok amigos muchas gracias por su ayuda, ya vi cual era el problema, era que el protoboard donde montaba el circuito tenia un corto y el voltaje de alimentacion al pic no era el apropiado jajajaj pero menos mal no se me quemo mi pic....
Ahora porfavor necesito que me ayuden a crear una rutina para trabajar con PWM (PIC 16f873A) es que la verdad no tengo ni idea como hacerla ni que registros configurar, gracias a todos

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Ayuda con el pic 16f873A
« Respuesta #8 en: 21 de Marzo de 2008, 07:49:18 »
Ahora porfavor necesito que me ayuden a crear una rutina para trabajar con PWM (PIC 16f873A) es que la verdad no tengo ni idea como hacerla ni que registros configurar, gracias a todos

Leíste el datasheet? Ahí te menciona qué registros debes configurar.
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)


 

anything