Autor Tema: PIC se activa solo  (Leído 1376 veces)

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

Desconectado lunago13

  • PIC10
  • *
  • Mensajes: 14
PIC se activa solo
« 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);
   }
   }
   
   }
 }
 }

Desconectado Robert76

  • PIC24F
  • *****
  • Mensajes: 561
Re:PIC se activa solo
« Respuesta #1 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.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:PIC se activa solo
« Respuesta #2 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. }

Desconectado lunago13

  • PIC10
  • *
  • Mensajes: 14
Re:PIC se activa solo
« Respuesta #3 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.