hola gente necesito ayuda .
// Medidor de distancia //
// LCD module connections
sbit LCD_RS at RC4_bit;
sbit LCD_EN at RC5_bit;
sbit LCD_D4 at RC0_bit;
sbit LCD_D5 at RC1_bit;
sbit LCD_D6 at RC2_bit;
sbit LCD_D7 at RC3_bit;
sbit LCD_RS_Direction at TRISC4_bit;
sbit LCD_EN_Direction at TRISC5_bit;
sbit LCD_D4_Direction at TRISC0_bit;
sbit LCD_D5_Direction at TRISC1_bit;
sbit LCD_D6_Direction at TRISC2_bit;
sbit LCD_D7_Direction at TRISC3_bit;
// End LCD module connectionsbi
int duracion,distancia1;
int distancia2;
char distancia[4];
void interrupt ()
{
if (INTCON.INT0IF==1){
TMR1L=0xB7; //VALOR INICIAL DEL TIMER
TMR1H=0x8E; // VALOR INICIAL DEL TIMER
TMR1ON_bit=1; //ACTIVAR EL TIMER
}
if (INTCON3.INT1IF==0)
TMR1ON_bit=0; //PARAR LA CUENTA
}
void main() {
ADCON1=0X07; //Conf. digital
TRISA.F0=0X00; //Conf. salida
PORTA.F0=0; //Conf. reset
TRISB=0XFF; //Conf. entrada
PORTB=0; //Conf. reset
TRISC=0X00; //Conf. salida para la LCD
PORTC=0; //Conf. reset
INTCON.GIE=1; //
T1CON=0X80; //Habilitar el timer1
TMR1L=0XB7; //Valor inicial 0
TMR1H=0X8E; //Valor inicial 0
IPR1.TMR1IP=0; //Prioridad BAJA del timer1
INTCON.IPEN=1; // Prioridad alta de las interrupciones
INTCON.INT0IE=1; // habilitar int0 como externa
INTCON2.INTEDG0=1; // int0 con flanco de subida
INTCON3.INT1IE=1; // HABILITAR INT1 COMO EXTERNA
INTCON2.INTEDG1=0; // int1 con flanco de bajada
Lcd_init(); //Iniciar LCD
Lcd_Cmd(_LCD_CURSOR_OFF); //Apagar el cursor
Lcd_Cmd(_LCD_CLEAR); //Reset
Lcd_Out(1,1,"Distancia en cm "); // MENSAJE
duracion=0; //Reset de variables
distancia1=0; //Reset de variables
distancia2=0; //Reset de variables
while (1){
PORTA.F0=1; //
delay_us(25); //Onda de 40Khz para el sensor
PORTA.F0=0; //
duracion= TMR1L<<8 + TMR1H;
distancia1= (duracion*0.034)/2;
distancia2=distancia1-10;
IntToStr(distancia2,distancia);
Lcd_Out(2,1," ");
Lcd_Out(2,3,distancia);
Lcd_Out(2,7,"cm");
Lcd_Out(2,9," ");
}}
porque no ejecuta la interrupción externa (int0)