Autor Tema: Interrupciones pic16f877  (Leído 4378 veces)

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

Desconectado lucasnvf

  • PIC10
  • *
  • Mensajes: 13
Interrupciones pic16f877
« en: 23 de Enero de 2009, 10:32:15 »
Hola, estoy haciendo un programa donde uso 2 interrupciones:
int_RB
int_timer0
Luego de habilitar las interrupciones y demas cosas(en el main), y sin q cambie ningun de los puertos RB4 - RB7 , me salta a la rutina de int_RB. Alguien me pude decir q estoy haciendo mal
Aca dejo el main y la rutina de int_RB

#INT_RB
void cruce(void)
{   
int aux=0;
#asm
   movwf   savew
   swapf   STATUS,0
   movwf   savestatus
   clrwdt         
   bcf      INTCON,0      
#endasm

aux = envio;
aux = aux & 2;
if (aux == 0)
   enviar();

#asm
   swapf   savestatus,0
   movwf   STATUS
   swapf   savew,1
   swapf   savew,0
#endasm
}

void main(void)

set_tris_a(0x00); 
set_tris_b(0x80); 
set_tris_c(0x00);
set_tris_d(0x00);
output_low(pin_D0);
output_low(pin_D1);
output_low(pin_D2);

output_a(0x00);
output_b(0x00);
output_c(0x00);
output_d(0x00);

enable_interrupts(GLOBAL);               // Habilito Interrupciones
enable_interrupts(INT_RB);
enable_interrupts(INT_RTCC);             // Habilito Interrupción RTCC
setup_counters(RTCC_INTERNAL,RTCC_DIV_256);// TIMER0: Clock Interno, Presescaler 256.
set_timer0(252);   //T = (256 - precarga) * Preescaler * 4 / Fosc --->>> precarga=252

setup_adc_ports(NO_ANALOGS);
setup_adc_ports(RA0_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);             // Reloj interno para el ADC
set_adc_channel(0);   //Canal 0.

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: Interrupciones pic16f877
« Respuesta #1 en: 23 de Enero de 2009, 14:30:41 »
Le has puesto una resistencia de 10k  A POSITIVO al Rb0? porque si la tienes al aire puede dispararse sola.
También examina la hoja de datos, si activas INT cuando cae Rb0 o cuando sube Rb0. Es que no entiendo C.
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado lucasnvf

  • PIC10
  • *
  • Mensajes: 13
Re: Interrupciones pic16f877
« Respuesta #2 en: 23 de Enero de 2009, 18:02:20 »
No hay problema con RB0 porque no uso esa interrupcion. Estoy usando int_RB que tiene en cuenta lo que pasa en las patas RB4 a RB7

Desconectado Chenao

  • PIC18
  • ****
  • Mensajes: 414
Re: Interrupciones pic16f877
« Respuesta #3 en: 27 de Enero de 2009, 14:01:45 »
Saludos

Donde termina el programa.
Un saludo desde Pereira - Colombia

Desconectado lucasnvf

  • PIC10
  • *
  • Mensajes: 13
Re: Interrupciones pic16f877
« Respuesta #4 en: 28 de Enero de 2009, 10:56:21 »
Ya lo solucione, era porq las funciones en C me modificaban el trisb, entonces hay q corregirlo manualmente luego q cambia. Muchas gracias por la disposicion.
Cualquier cosulta no duden en mandarme


 

anything