Autor Tema: nolvp  (Leído 5227 veces)

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

Desconectado safiro_pic

  • PIC10
  • *
  • Mensajes: 16
nolvp
« en: 20 de Abril de 2006, 20:05:36 »
Este programa lo he llamado arranque simple, el pin_b0 seria como el boton  de inicio
y el pin b1 como el boton de parada que ilumina el led en el pin a3.

              #INCLUDE <16F84A.H>
              #FUSES XT,NOWDT,PUT,NOPROTECT
              #USE DELAY(CLOCK=4000000 ,restart_WDT)
              #BYTE PORT_A=0X05
              #BYTE PORT_B=0X06

              void main()
                 {
                        port_a=0x00;
                        port_b=0x00;
                        set_tris_a(0x00);
                        set_tris_b(0xFF);

                     while (1)
                        {
                            IF(input(pin_B0))

                              {
                                output_high(pin_a3);  //ecendido de led  PINA3 se mantiene encendido mientras
                                                      // no se pulsa el "pin b1"
                              }

                            if(input(pin_B1))         
                              {
                                output_low(pin_a3);   //apagado de led PINA3 se mantiene apagado mientras
                                                      //no se pulsa el "pin b0" viceversa
                              }
                        }
                  }


tengo unas preguntas respecto al programa leyendo el minicursillo que esta muy bueno
pero hay algunas cosas que no los entiendo.

1.- en fuses el NOLVP lei que significa  "Impide que el micro pueda grabarse en modo de bajo voltage."
    yo coloque este instruccion despues de noprotect pero al compilarlo me da un error"unknown keyword in #fuses"
    que significa eso,o en que casos se debe colocar esta instrucciòn pero a pesar los ejemplos que vi en la  mayoria va con eso  ???

2.- en la parte de port_a=0x00;port_b=0x00 esto significa limpiar los puertos no es cierto si estoy equivocado   por favor diganmelo, cuando los quito o los elimino el programa me corre igual simulando en proteus, no veo   aqui la diferencia de colocar o no  alguien me podrian explicar donde notar esta diferencia???
saludos a todos

Desconectado kain589

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 324
Re: nolvp
« Respuesta #1 en: 20 de Abril de 2006, 20:28:32 »
Si no me equivoco el 16f84 no posee la posibilidad de programacion en bajo nivel de voltaje, asi que te daria problemas por eso
Saludos desde Córdoba, españa

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: nolvp
« Respuesta #2 en: 20 de Abril de 2006, 20:37:13 »
Las instrucciones:

port_a=0x00;
port_b=0x00;

lo que hacen es poner como salidas los dos puertos y poner esas salidas a cero. Como despues manejas los pines de forma individual y dado que no has declarado la directiva de compilación: #USE FAST_IO cada vez que pones un pin como salida el compilador le configura como salida (añade instrucciones redundantes) y cuando realizas una entrada lo pone como entrada. Por eso si eliminas las dos primeras instrucciones sigue funcionando el programa.
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: nolvp
« Respuesta #3 en: 21 de Abril de 2006, 05:04:43 »
Buenas!!!de todas formas, una forma ordenada d eprogramacion seria la siguiente
Código: [Seleccionar]
                        set_tris_a(0x00);
                        set_tris_b(0xFF);
                        port_a=0x00;
                        port_b=0x00;
Primero defines los pines de entrada y salida de los puertos del pic y despues lo usas.....aunque no te hace falta definir los puertos del pic, en ccs hay funciones que manejan el pueto completo correspondiente.


Suerte!!! :wink:
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado safiro_pic

  • PIC10
  • *
  • Mensajes: 16
Re: nolvp
« Respuesta #4 en: 22 de Abril de 2006, 11:47:36 »
hola la forma compacta segun JFH900  seria el siguiente?
 añadir la directiva use_fast_io y eliminar port_a,port_b
 

              #INCLUDE <16F84A.H>
              #FUSES XT,NOWDT,PUT,NOPROTECT
              #USE DELAY(CLOCK=4000000 ,restart_WDT)
              #BYTE PORT_A=0X05
              #BYTE PORT_B=0X06

             "#USE_FAST_IO"

              void main()
                 {
                        set_tris_a(0x00);
                        set_tris_b(0xFF);
              LO MISMO ABAJO

vszener no entendi la ultima parte donde mencionas que hay funciones
que manejan el puerto completo,es decir set_tris_a  y set_tris_b que configuran
el puerto como entrada o salida se lo puede reemplazar por otra funcion??

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: nolvp
« Respuesta #5 en: 22 de Abril de 2006, 11:59:27 »
Buenas!!! no no, haber para declarar que pines del puerto deben ser de entrada/salida esta las funciones set_tris_x, donde x indica la letra del puerto a,b, c,...

Ahora bien, para utilizar los pines del puerto no te hace falta declarar el puerto como tu realizas:
Código: [Seleccionar]
              #BYTE PORT_A=0X05
              #BYTE PORT_B=0X06
Para despues limpiar dichos puertos con estas instrucciones que tu usas:
Código: [Seleccionar]
                        port_a=0x00;
                        port_b=0x00;
Las cuales sirven para poner todos los pines a 0....CCS trae incorporado funciones de manejo de puertos, si te miras el manual, veras que esta esta funcion:
Código: [Seleccionar]
                        output_x(value);          value debe ser un entero de 8 bits y x indica la letra del puerto a, b, c ....
La cual permite no declarar ningun puerto como te he comentado anteriormente y a efectos practicos realiza la misma funcion, para poner todos los pines a 0 como tienes tu declarado:
Código: [Seleccionar]
                        output_a(0x00);          //port a 0
                        output_b(0x00);          //port b 0

Aqui te dejo el enlace para la descarga del manual:
http://www.ccsinfo.com/downloads.php


Suerte!!! :wink:
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: nolvp
« Respuesta #6 en: 22 de Abril de 2006, 12:02:16 »
Bueno e indicarte que la instruccion #use_fast_io tal como la pones esta mal declarada, tu programa puede quedar asi:
Código: [Seleccionar]
              #INCLUDE <16F84A.H>
              #FUSES XT,NOWDT,PUT,NOPROTECT
              #USE DELAY(CLOCK=4000000 ,restart_WDT)
              #use_fast_io(a)
              #use_fast_io(b)

              void main()
                 {
                        set_tris_a(0x00);
                        set_tris_b(0xFF);

                        output_a(0x00);          //port a 0
                        output_b(0x00);          //port b 0

                     while (1)
                        {
                            IF(input(pin_B0))

                              {
                                output_high(pin_a3);  //ecendido de led  PINA3 se mantiene encendido mientras
                                                      // no se pulsa el "pin b1"
                              }

                            if(input(pin_B1))         
                              {
                                output_low(pin_a3);   //apagado de led PINA3 se mantiene apagado mientras
                                                      //no se pulsa el "pin b0" viceversa
                              }
                        }
                  }


Suerte!!! :wink:
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado safiro_pic

  • PIC10
  • *
  • Mensajes: 16
Re: nolvp
« Respuesta #7 en: 22 de Abril de 2006, 19:10:10 »
 gracias  hermano ahora si me quedo claro un saludo a  los foristas de  todopic