TODOPIC

Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: lunago13 en 14 de Diciembre de 2018, 00:22:38

Título: PIC se activa solo
Publicado por: lunago13 en 14 de Diciembre de 2018, 00:22:38
Hola, programe en mi pic para que mande con un ciclo for una cierta cantidad de pulsos pero esto lo tiene que hacer si pulso un boton. La cosa es que manda esos pulsos todo el tiempo y si aprieto o no el boton es lo mismo, lo sigue haciendo. Me fije si los botones tal vez no hacian buena aislacion o algo pero no es eso. Al parecer pasa algo en el pic que activa la condición del if pero no se que es. Si alguien puede ayudarme seria buenisimo. Gracias! Mando el codigo por si acaso.

#include <16F887.h>
#use delay(clock=4000000)
#fuses XT,NOWDT

#BYTE TRISA = 0x85
#BYTE PORTA = 0x05
#BYTE TRISB = 0x86
#BYTE PORTB = 0x06
#BYTE TRISC = 0x87
#BYTE PORTC = 0x07
#BYTE TRISD = 0x88
#BYTE PORTD = 0x08
#BYTE TRISE = 0x89
#BYTE PORTE = 0x09



int main (void)
 {
   SET_TRIS_A(0);
   SET_TRIS_B(0);
   SET_TRIS_C(0);
   SET_TRIS_D(0x06);
   SET_TRIS_E(0);
   PORTA=0;
   PORTB=0;
   PORTC=0;
   PORTD=0;
   PORTE=0;
   
   
   for(;;){
   
   if(input(pin_D2)==1){
   for(int i=0;i<50;i++){
   output_high(pin_D2);
   delay_ms(1);
   output_low(pin_D2);
   delay_ms(19);
   }
   if(input(pin_D1)==1){
   for(int i=0;i<50;i++){
   output_high(pin_D2);
   delay_ms(2);
   output_low(pin_D2);
   delay_ms(18);
   }
   }
   
   }
 }
 }
Título: Re:PIC se activa solo
Publicado por: Robert76 en 14 de Diciembre de 2018, 07:23:23
Hola para darte una opinión, hay que ver el esquema eléctrico, sobretodo en la conexión de los pulsadores al micro.
Título: Re:PIC se activa solo
Publicado por: KILLERJC en 14 de Diciembre de 2018, 11:24:57
Parece ser un problema de circuito como te dijo Robert76.

Lo que si deberias acostumbrarte en CCS que no se usan los registros directamente, casi siempre hay una funcion para eso.
Tambien deberias acostumbrarte a identar tu codigo.
Y finalmente en caso de pines analogicos, deberias pasarlos a digitales si queres usarlos como estos.

Tu mismo codigo usando las funciones que provee CCS:

Código: C
  1. #include <16F887.h>
  2. #use delay(clock=4000000)
  3. #fuses XT,NOWDT
  4.  
  5. int main (void){
  6.  
  7.    SET_TRIS_A(0);
  8.    SET_TRIS_B(0);
  9.    SET_TRIS_C(0);
  10.    SET_TRIS_D(0x06);
  11.    SET_TRIS_E(0);
  12.    output_a(0);
  13.    output_b(0);
  14.    output_c(0);
  15.    output_d(0);
  16.    output_e(0);
  17.    
  18.    
  19.         for(;;){
  20.    
  21.                 if(input(pin_D2)==1){
  22.                         for(int i=0;i<50;i++){
  23.                                 output_high(pin_D2);
  24.                                 delay_ms(1);
  25.                                 output_low(pin_D2);
  26.                                 delay_ms(19);
  27.                         }
  28.                         if(input(pin_D1)==1){
  29.                                 for(int i=0;i<50;i++){
  30.                                         output_high(pin_D2);
  31.                                         delay_ms(2);
  32.                                         output_low(pin_D2);
  33.                                         delay_ms(18);
  34.                                         }
  35.                         }
  36.          
  37.                 }
  38.         }
  39. }
Título: Re:PIC se activa solo
Publicado por: lunago13 en 15 de Diciembre de 2018, 16:56:06
Hola, gracias por su respuestas, igual despues me di cuenta que en el codigo se me salteo un "}" y por eso se activaba todo el tiempo y ademas me confundi de pin de salida.