Autor Tema: ayuda principiante: dudas de programa para simular en proteus  (Leído 10314 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado tiby_fside

  • PIC10
  • *
  • Mensajes: 18
ayuda principiante: dudas de programa para simular en proteus
« en: 17 de Diciembre de 2007, 22:01:25 »
Hola estoy haciendo el programa para realizar un proyecto de una alarma de fin de curso,y estoy haciendo la primera parte para ir poco a poco simulando con proteus y creo que estoy haciendo algo mal,os cuento:

la prueba q estoy haciendo es simple:

-un interruptor conectado a RB0 enciende un LED conectado a RA3.
-un interruptor conectado a RB1 enciende un LED conectado a RA4.

el programa que tengo hecho es este:

   LIST      P=16F84A
   INCLUDE      <P16F84A.INC>
   __CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC

   CBLOCK  0x0C
                           ; El contador a visualizar.
   ENDC


#DEFINE   Encendido1   PORTB,0      ; Pulsador conectado a RA4.
#DEFINE   Encendido2   PORTB,1

#DEFINE   Led1      PORTA,3      ; El display está conectado al Puerto B.
#DEFINE   Led2      PORTA,4

; ZONA DE CÓDIGOS ********************************************************************

   ORG   0                     ; El programa comienza en la dirección 0.
Inicio
     bsf      STATUS,RP0            ; Acceso al Banco 1.
   movlw   b'00000011'                                                                               ; RB0 y RB1 como entradas
   movwf   TRISB               
   movlw   b'11100111'                                                                               ; RA3 Y RA4 como salidas
   movwf   TRISA                  ;
   bcf      STATUS,RP0            ; Acceso al Banco 0.
   
principal
   btfsc   Encendido1
   goto   NOARMADO1
   goto   ARMADO1

   btfsc   Encendido2
   goto    NOARMADO2
   goto   ARMADO2

ARMADO1
   bsf      Led1
   goto    principal


NOARMADO1
   bcf      Led1
   goto   principal

ARMADO2   
   bsf      Led2
   goto   principal


NOARMADO2
   bsf      Led2
   goto    principal


   end


-----------------------------------
segun esta hecho el proteus solo me simula bien un led,solo me funciona cuando pulso RB0 y se enciende el led de RA3.pero la otra parte no me funciona.que tengo mal? quiza es un problema al configurar puertos?

es el primer proyecto que hago y soy muy principiante,pero creo que si arreglo esta parte inicial lo demas creo que sabre hacerlo,pero soy muy torpe para configurar los puertos correctamente.

gracias de antemano.

Desconectado tiby_fside

  • PIC10
  • *
  • Mensajes: 18
Re: ayuda principiante: dudas de programa para simular en proteus
« Respuesta #1 en: 17 de Diciembre de 2007, 22:04:58 »
en NO ARMADO2 es bcf en lugar de bsf perdon

Desconectado poseidon20

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 762
Re: ayuda principiante: dudas de programa para simular en proteus
« Respuesta #2 en: 18 de Diciembre de 2007, 00:50:37 »
Primero, asegurate colocar una resistencia pull-up en RA4  d 250ohms ya que cuando se configura este pin como salida, actua en modo "open drain". Luego de ver el progama que pusistes te digo que nunca va encender el led conectado a RA4 ya que al hacer la instruccion BTFSC va a NOARMADO1 o ARMADO1 pero nunca va a pasar a  "btfsc   Encendido2". tu prograa lo modificaria asi:

Código: ASM
  1. clrf    portb
  2.  
  3. principal
  4.         btfsc   Encendido1
  5.         goto    NOARMADO1
  6.  
  7.         bsf     Led1
  8.  
  9. principal2
  10.         btfsc   Encendido2
  11.         goto    NoRAMADO2
  12.  
  13.         bsf     Led2
  14.         goto    principal
  15.  
  16. NOARMADO1
  17.         bcf      Led1
  18.         goto   principal2
  19.  
  20. NOARMADO2
  21.         bcf     Led2
  22.         goto    principal
  23.  
  24.         end

aca pongo como puedes hacerlo de otra manera

Código: ASM
  1. clrf    portb
  2.  
  3. principal
  4.         mowf    portb,w         ;leo el puerto b
  5.         andlw   b'00000011'     ;me quedo con los dos bits de la parte baja
  6.         call    tabla           ;cargo en w l offset para la tabla y retorno
  7.         movwf   porta           ;en W con el valor a mostra en los leds
  8.         goto    principal       ;vuelvo al inicio
  9.  
  10. tabla
  11.         addwf   pcl,f
  12.         retlw   b'00011000'     ;RB0=on/RB1=on
  13.         retlw   b'00010000'     ;RB0=on/RB1=off
  14.         retlw   b'00001000'     ;RB0=off/RB1=on
  15.         retlw   b'00000000'     ;RB0=off/RB1=off
  16.  
  17.         end

asi quedaria lo de la resistencia:

 
                        RA4
                          │
                          │
GND----[LED]-----+----[250 ohms]----vcc(5v)

Desconectado tiby_fside

  • PIC10
  • *
  • Mensajes: 18
Re: ayuda principiante: dudas de programa para simular en proteus
« Respuesta #3 en: 18 de Diciembre de 2007, 20:58:24 »
muchisimas gracias,no sabia eso de colocar la resistencia :)


Ahora me gustaria que me orientarais sobre como podria hacer lo siguiente de mi proyecto,el proyecto es una alarma de dos zonas con LCD:

esa parte anterior era la primera parte,que ya he finalizado,es decir:

el interruptor RB0 enciende el LED1 conectado al puerto RA3,y activa la primera zona.
el interruptor RB1 enciende el LED2 conectado al puerto RA4.y activa la segunda zona.


----

Hasta ahi todo correcto.Ahora necesito lo siguiente:

Cuando el LED1 esta encendido se debe empezar a leer un sensor conectado a RB2 y cuando el sensor se activa sonara un zumbador conectado a RA1 y sale un mensaje en la pantalla LCD de 16x2 caracteres

Cuando el LED2 esta encendido se debe empezar a leer un sensor conectado a RB3 y cuando el sensor se activa sonara un zumbador conectado a RA1 y sale un mensaje en la pantalla LCD de 16x2 caracteres

ejemplos:

Interruptor 1 encendido,Interruptor2 encendido// sensor 1 activado,sensor 2 no activado

--por tanto para esa combinacion deberia sonar el zumbador debido aq uno de los 2 sensores esta en alarma y el mensaje que debe salir por el LCD seria algo como:
"zonas activadas" en la primera linea (xq los 2 interruptores estan encendiendo los led)
" alarma zona 1 " en la segunda linea del LCD. (xq el sensor 1 esta en alerta)

y asi sucesivamente en cada una de las 16 combinaciones posibles de los 2 interruptores con los 2 sensores.

el circuito que tengo dibujado en proteus para simular es el siguiente:



cualkier aporte sera de ayuda seguramente,si alguien me puede hacer una pekeña guia para una combinacion,yo ya me podria encargar de hacer las demas.

mil gracias.este proyecto es muy importante para mi y si me sale bien seguramente me daran mi ansiado titulo de formacion profesional.

Desconectado poseidon20

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 762
Re: ayuda principiante: dudas de programa para simular en proteus
« Respuesta #4 en: 18 de Diciembre de 2007, 23:46:47 »
mira, lo que se me ocurre es que lo trabajarias de la segunda forma que te mande osea con tablas pero en ves de que pongas retlw   b'xxxxxxxx', pondrias un goto   configuracion1 y asi sucesivamente, entonces saltarias a etiquetas donde tratarias los sensores. Es una idea, por lo que veo imagino que ya sabes manejar el LCD. Suerte con esta alarma, yo estoy por hacer una  pero de 4 zonas con una llave electronica, animo

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: ayuda principiante: dudas de programa para simular en proteus
« Respuesta #5 en: 19 de Diciembre de 2007, 15:19:50 »
Hola tiby_fside

los switches los puedes sustituir por unos botones que tienen forma de una flecha, se encuentra en debbuging tools (donde buscas los componentes) son mejores porque simulan la mismas condiciones logicas y no sobrecargas tanto al isis.



La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado tiby_fside

  • PIC10
  • *
  • Mensajes: 18
Re: ayuda principiante: dudas de programa para simular en proteus
« Respuesta #6 en: 19 de Diciembre de 2007, 20:34:36 »
ey muchisimas gracias!!

he conseguido acabarlo y hacerlo funcionar practicamente todo,solo que nose xq ahora nunca se me encienden los 2 led a la vez pero la parte de LCD y zumbador me funciona ya.la alarma esta practicamente lista.

solo una pregunta,es normal que cuando me suena el zumbador en el programa emite un sonido grave y borroso?? en lugar del sonido limpio y agudo de otras veces.
tiene esto algo que ver con la sobrecarga de ISIS en la simulacion o es q tengo algo mal?

el zumbador me salta correctamente en las partes correspondientes,pero emite ese sonido mas distorsionado en lugar del normal.

Desconectado poseidon20

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 762
Re: ayuda principiante: dudas de programa para simular en proteus
« Respuesta #7 en: 19 de Diciembre de 2007, 20:49:43 »
Puede ser eso, en vez de poner un zumbador reemplazalo por un led que te simbolize el zumbador. Es decir las cosas que actives o desactives a travez de un pin del pic ponle leds para que asi no se cargue demasiado el simulador. Pero el zumbador manejalo a travez de un transistor, no se lo trates de manejar directamente con el pin del pic ya que lo puedes estropear. Bueno, es grato saber que tu proyecto ya casi esta y solo tienes que depurar tu programa. una cosa que puede hacer es que la simulacion la hagas paso a paso para esto ya no solo basta con cargar el hex en el pic sino cargar el asm en source y compilarlo con el mpasm que trae el proteus y listo,  le das click en el boton que esta al lado derecho de play y debe sali tu programa y vas corriendo paso a paso y asi podras darte cuenta por que es que no te encienden los led´s.

Desconectado tiby_fside

  • PIC10
  • *
  • Mensajes: 18
Re: ayuda principiante: dudas de programa para simular en proteus
« Respuesta #8 en: 20 de Diciembre de 2007, 11:03:33 »
Pues si conecto un led en lugar del zumbador no me pasa nada :? no se ilumina,y cuando esta el zumbador suena pero con sonido distorsionado.

os dejo aqui el esquema de proteus,el asm y el hex a ver si me podeis alguno encontrar el error,xq no se que pasa ahora.

el programa esta hecho con muchos gotos xq no se programarlo de otra forma,espero que puedan interpretarlo.

http://www.mediafire.com/?7dqomjuad3g

muchas gracias poseidon,me estas ayudando muchisimo :)

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: ayuda principiante: dudas de programa para simular en proteus
« Respuesta #9 en: 20 de Diciembre de 2007, 14:17:36 »
...
el zumbador me salta correctamente en las partes correspondientes,pero emite ese sonido mas distorsionado en lugar del normal.

prueba cambiarle la configuración al zumbador (el tiempo por defecto son 500 mS) eso es lo que hace que suene bien o mal.

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado poseidon20

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 762
Re: ayuda principiante: dudas de programa para simular en proteus
« Respuesta #10 en: 20 de Diciembre de 2007, 17:03:28 »
Mi querido pór ltiby_fside, por los archivos descargados y visto, esta usando rutinas del libro de Enrique palacios el de color guinda  :D yo tambien tengo ese y fue mi libro de incio en los PIcs. Ahora viendo en tu codigo te digo lo siguiente:

1° No es necesario que inicialices el LCD cada ves que desees colocar un mensaje, eso se ve en los ejemplos que trae el libro. El autor no Inicializa el LCD cada vez que va a escribir un mensaje. Por eso deberias inicializarlo aqui:

Código: ASM
  1. ; ZONA DE CÓDIGOS ********************************************************************
  2.  
  3.         ORG     0                                                       ; El programa comienza en la dirección 0.
  4. Inicio
  5.         bsf     STATUS,RP0                              ; Acceso al Banco 1.
  6.         movlw   b'00001111'                             ; configura puertos RB0-RB3 entradas
  7.         movwf   TRISB                                  
  8.         movlw   b'11100101'                             ; configura RA1,RA3,RA4 salidas
  9.         movwf   TRISA                          
  10.         bcf     STATUS,RP0                              ; Acceso al Banco 0.
  11.  
  12.  
  13.         call    LCD_Inicializa
  14.        
  15. principal      
  16.         btfsc   Encendido1                              ; ¿Interruptor de encendido1 activado?

2° Una vez hecho esto, en tus mensajes debes reemplazar el LCD_Inicializa por el LCD_Linea1, ya que en el libro esta los comandos que biene implementado en la subrutina del LCD, pero debes acomodar los mensajes para que no se solapen algunos, por ejemplo si escribes el mensaje1 de 10caracteres y luego mandas el mensaje2 de 15 caracteres y luego regresas al mensaje uno de 10 caracteres en la pantalla se veran los ultimos 5 caractertes de tu mensaje2, es solo cuestion de comodar el mensaje, lo puedes hacer estirandolo mas sin sobrepasar un largo de 16 caracteres.

3° el motivo por el cual escuchas un pitido en el zumbador, es por que tu estas utilizando el RA1 para el zumbador, pero en la subrutina del LCD este pin se utiliza para poner al LCD en modo escritura o lectura. lo que sucede es que la subrutina esta diseñada para trabajar con el pin R/W del LCD pero como la mayoria de los casos solo se escribe sobr el LCD este se pone a tierra, por eso en la subrutina del LCD se debe surpimir las siguientes lineas:

Código: ASM
  1. #DEFINE  LCD_PinRS      PORTA,0
  2. ;#DEFINE  LCD_PinRW     PORTA,1
  3. #DEFINE  LCD_PinEnable  PORTA,2
  4. #DEFINE  LCD_BusDatos   PORTB
  5.  
  6. LCD_Inicializa
  7.         bsf             STATUS,RP0                              ; Configura las líneas conectadas al pines RS,
  8.         bcf             LCD_PinRS                               ; R/W y E.
  9.         bcf             LCD_PinEnable
  10. ;       bcf             LCD_PinRW
  11.         bcf             STATUS,RP0
  12. ;       bcf             LCD_PinRW                               ; En caso de que esté conectado le indica
  13.                                                                         ; que se va a escribir en el LCD.

como veras lo hago poniendo ";" esto le indica al compilador que es un comentario y no lo toma en cuenta a la hora hacer el buill

4° reviza la parte del encendido del zumbador por que una vez que lo enciendes cuando se activa una zona, no vuelve a apagarse, revisa eso. El zonido que escuchavas era producto de la subrutina del LCD ya que ponia a 1 y 0 cada vez que que inicializabas el LCD en cada mensaje

5° Por ultimo veo que mandas varios mensajes creo que son 16, deberias usar la subrutina de mensajes ya que de esa manera se hace mas legible el programa y te recomiendo que en lo sucesivo para sensar estados en un(os) pin(es) del pic, trates de hacerlo por interrupciones o si vas a ahacer un barrido de los pines, que el tratamiento de los mismos sea por tablas ya que te facilitara mucho el trabajo y no te llenaras de muchos goto.

Bueno espero que estos comentarios y/o sugerencias no te hagan sentir mal, pero veo que ya vas entendiendo de como ma o menos es el funcionamiento interno del PIC, Otra cosa que te recomiendo es que leas con mas atencion el libro que tienes ya que ahi explica con detalles el funcionamiento de sus subrutinas y las consideraciones que deber tener con algunas de ellas. Yo me lei de cabo a rabo ese libro ya que es muy interesante para el inico en el mundo de los PIC´s. leer no hace daño  :mrgreen: :mrgreen:, por lo menos hasta ahora  :D

Desconectado tiby_fside

  • PIC10
  • *
  • Mensajes: 18
Re: ayuda principiante: dudas de programa para simular en proteus
« Respuesta #11 en: 20 de Diciembre de 2007, 18:30:57 »
hey muchas gracias por todo,ya se que tengo todo hecho de forma chapucera pero es que no se casi nada del pic y tengo que hacerlo con gotos a partir de un diagrama de flujo jeje

no pretendo ser un experto en esto,solo aprobar el proyecto de fin de curso jeje despues no creo que necesite usar demasiado pic.

he hecho lo que he mas dicho y te comento:

puse LCD_Inicializa y LCD_Linea1 donde me dijiste y acomode los mensajes,esa parte ya esta perfecta.

cambie el include suprimiendo las lineas del pin RW que me dijiste,pero ahora el zumbador no suena de ninguna manera,antes sonaba distorsionado pero ahora ni siquiera suena,aunque seguire probando.

y lo de que se me enciendan los 2 led no pude saber todavia por que razon es,supongo que algun goto,asi que seguire probando.

la parte de la LCD esta perfecta ya :) muchas gracias.

aver si podemos seguir acabando esto jeje

Desconectado poseidon20

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 762
Re: ayuda principiante: dudas de programa para simular en proteus
« Respuesta #12 en: 20 de Diciembre de 2007, 19:04:25 »
lo del zumbador es por lo siguiente, el dispositivo que usas como zumbador en el proteus no es tal, si no es un speaker digital, por eso este reacciona a los 1 o ceros que le mandes a una frecuencia determinada, peor en la "vida real" un zumbador cuando lo alimentas con 12vdc o 5VDC (dependiendo del cual vas a usar) suena, por eso te mencionaba que colocaras un led en vez del speaker y para que salgas de dudas comprate un zumbador que es muy barato y lo pruebas alimentandolo con la tension de trabajo de este y ahi veras la diferencia entre el simulador y lo real, sobre los leds debe ser uno de esos goto que dices por que como usas varios en uno de ellos te debes estar pasando algo. me alegro que lo del LCD este bien, sigue asi que muy pronto sin darte cuenta te comenzara agustar esto de la electronica y los pICs.  :D :D

P.D: No te olvides poner en la bibliografia de tu trabajo el nombre del foro,  :D :D :D :mrgreen: :mrgreen:

Desconectado tiby_fside

  • PIC10
  • *
  • Mensajes: 18
Re: ayuda principiante: dudas de programa para simular en proteus
« Respuesta #13 en: 20 de Diciembre de 2007, 19:27:32 »
ya arregle los LED,era problema de unos gotos jejejeje

pues ahora solo me falta meter el zumbador y que suene bien cuando le toque.

Desconectado tiby_fside

  • PIC10
  • *
  • Mensajes: 18
Re: ayuda principiante: dudas de programa para simular en proteus
« Respuesta #14 en: 20 de Diciembre de 2007, 19:29:26 »
poseidon muchisimas gracias en serio,muy amable con tus explicaciones,en la bibliografia te pondria a ti,pero mi profesor seguramente no me aprobaria :D