TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Hansot en 12 de Mayo de 2014, 17:04:40

Título: Ayuda con el PIC 16F84A por favor!
Publicado por: Hansot en 12 de Mayo de 2014, 17:04:40
Necesito programar el pic para que pase lo siguiente:
tengo 5 interruptores (RA0, RA1, RA2, RA3 Y RA4) y 8 leds (RB0, RB1, RB2 ,RB3, RB4, RB5, RB6 Y RB7)
Como podría hacer para crear una tabla de verdad, por ejemplo;
RA0 RA1 RA2 RA3 RA4             RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7
  0     0     0     0     1                 0     0     1     0     0     0     0     1
  0     1     0     0     1                 0     1     1     0     0     0     1     0
  1     0     1     0     1                 1     0     1     0     0     1     0     1

Etc... eso es solo un ejemplo, no necesito hacer esa tabla de verdad pero me gustaría saber como puedo hacer algo parecido, estaba probando lo siguiente pero al parecer no es asi.

#include <16F84A.h>
#FUSES NOWDT, XT, NOPUT, NOPROTECT                 
#use delay (clock=4000000)

void main(){
set_tris_a(0x11111);
set_tris_b(0x00000000);
output_b(0x00000000);


if(input_a(0b00001)){
       output_b(0b11111111);
     
}
   else{
       output_b(0b00000000);
   }   
}

Disculpen por las molestias pero soy nuevo en esto y estoy muy confundido :s

Gracias!!
Título: Re: Ayuda con el PIC 16F84A por favor!
Publicado por: rivale en 12 de Mayo de 2014, 17:16:24
sería algo de esta forma:

Código: C
  1. ....
  2. if(input_a()==0b00010000){
  3.        output_b(0b10000100);
  4.      
  5. }
  6. else if(input_a()==0b00010010){
  7.        output_b(0b01000110);
  8.      
  9. }
  10.  
  11. ....
Título: Re: Ayuda con el PIC 16F84A por favor!
Publicado por: Hansot en 12 de Mayo de 2014, 17:41:34
El pic c compiler me da error y no entiendo  :(
El punto es que yo no quiero que me hagan el código, me gustaría mas que me dijeran porque se hace eso, es que en practicas anteriores de secuencia de leds había echo lo siguiente:
                         while (true)
                         {
                         output_high(pin_b0);
                         delay_ms(100);
                         output_high(pin_b1);
                         delay_ms(100);
                         output_high(pin_b2);
                         delay_ms(100);
                         output_low(pin_b0);
                         delay_ms(50);
                         output_low(pin_b1);
                         delay_ms(50);
                         output_low(pin_b2);
                         delay_ms(50);
                         }

Como se darán cuenta ahí controlaba pin por pin, pero ahora es con todos los pines, es lo que me revolvió bastante... espero que no sea mucha molestia que me puedan explicar un poco :s gracias!
Título: Re: Ayuda con el PIC 16F84A por favor!
Publicado por: rivale en 12 de Mayo de 2014, 17:52:35
disculpa, habia puesto mal las instrucciones de input, ya las corregí

con input_a() lees el valor de todo el puerto, esto lo comparas contra el valor que desees
Título: Re: Ayuda con el PIC 16F84A por favor!
Publicado por: rivale en 12 de Mayo de 2014, 17:55:51

sería algo de esta forma:
despues del 0b los pines se escriben del mas al menos significativo, entonces en 0b10000000 el pin 7 es el que esta activo

Código: C
  1. ....
  2. if(input_a()==0b00010000){
  3.        output_b(0b10000100);
  4.      
  5. }
  6. else if(input_a()==0b00010010){
  7.        output_b(0b01000110);
  8.      
  9. }
  10.  
  11. ....
Título: Re: Ayuda con el PIC 16F84A por favor!
Publicado por: Hansot en 12 de Mayo de 2014, 19:02:23
¡¡Muchas gracias!!
Termine bien mi proyecto, lo simule en proteus y funciona bien, pero en el mismo proteus salen unos mensajes de error, a pesar de eso la simulación de la programación funciona bien...

(http://i.gyazo.com/52d915eda9e708a1d13e2cca6363954d.png)

Tienes idea de que significa? Gracias!
Título: Re: Ayuda con el PIC 16F84A por favor!
Publicado por: rivale en 13 de Mayo de 2014, 11:43:41
aca esta la respuesta a tu pregunta
http://www.todopic.com.ar/foros/index.php?;topic=32099.0 (http://www.todopic.com.ar/foros/index.php?;topic=32099.0)