Autor Tema: Interrupcion por puerto B  (Leído 1313 veces)

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

Desconectado Juan_PIC

  • PIC12
  • **
  • Mensajes: 84
Interrupcion por puerto B
« en: 20 de Enero de 2008, 12:43:50 »
Hola, estoy queriendo hacer un programa que simplemente active el PIN_A0, cuando se produzca una interrupcion del puertoB. Estoy utilizando el puertoB con su respectivo pull up.
El problema, es que aunque no cambien de estado los pines RB7-RB4, apenas comienza el programa en proteus, se activa la interrupcion! Ya no se que puede ser.
Apenas le doy a play, luego de tres segundos se activa el PIN_A0 sin que se alteren los estados de RB7-RB4. Ayuda por favor!

#include <16f876.h>   //pic a utilizar
#fuses XT,NOCPD,NOWDT,NOPUT,NOLVP,NOBROWNOUT  //ordenes programador 
#use delay (clock=4000000)   //Fosc=4Mhz
#use fast_io(b)
#use fast_io(c)
#include <LCD.c>
#define portb 0x06

int c=0;

#int_rb

void cambiob(){
                delay_ms(3000);           //Estos delays los utilizo para darme cuenta de que apenas comienza el programa, se activa la interrupcion.
                output_high(PIN_A0);
                delay_ms(1000);
                }

void main()
{
        set_tris_a(0b00000000);
        set_tris_b(0b11110000);
        *portb = 0b00000000;
        PORT_B_PULLUPS(TRUE);
        lcd_init();
        enable_interrupts(GLOBAL);
        enable_interrupts(INT_RB);

        while(true){
                        if(c!=0){                               //Aqui el programa principal tendria que poner el valor de c en el lcd si es que es distinto de 0. (pero esto no creo
                        printf(lcd_putc,"%u",c) ;         //que cause problemas)
                        }
                        //delay_ms(1000);
        }
}
Cuando se ponen límites, la mente humana comienza a buscar maneras de romperlos.

Desconectado Advent

  • PIC10
  • *
  • Mensajes: 15
Re: Interrupcion por puerto B
« Respuesta #1 en: 20 de Enero de 2008, 13:39:39 »
hola amigo no soy muy ducho en esto todavia, pero prueba en tu programa principal al principio a negar el pin que quieres usar.
Otra sugerencia aunque no te puedo explicar muy bien como hacerlo es que en tu bucle while le des la condicion de que entre cuando se niegue el pin algo asi como
while(!input(pin_b0)



espero haberte ayudado o por lo menos no haberte liado jeje
no hay mala pregunta sino respuesta equivocada....Aunque sea lento el camino debe acerse siempre hacia arriba nunca abajo

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Interrupcion por puerto B
« Respuesta #2 en: 20 de Enero de 2008, 18:17:21 »
Hola JOSE, veo con sorpresa que andas cambiando de piel.
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Advent

  • PIC10
  • *
  • Mensajes: 15
Re: Interrupcion por puerto B
« Respuesta #3 en: 20 de Enero de 2008, 18:46:06 »
si estaba rallado con el programa y enrede un poco en el perfil
no hay mala pregunta sino respuesta equivocada....Aunque sea lento el camino debe acerse siempre hacia arriba nunca abajo