Está en la página 1de 6

// configuración timer1

T1CON=0; //lo dejo en cero

//configuro preescaldor en 2

T1CKPS1_bit=0;

T1CKPS0_bit=1;

TMR1H=60;

TMR1L=175;

TMR1ON_bit=1; //prende el timer

TMR1IF_bit=0; //limpia la bandera

TMR1IE_bit=1; //habilita la interrpcion

GIE_bit=1; // pluma blanca autoriza todas la interrpciones

while (1)

{
led1=!led1; // led1 es igual al negado del led 1 es decir se enceincde por 3s

Delay_ms(3000);

//si yo no hago con interrupciones seria

if(sw==1){led2=!led2;}

aquí cuando presiono el botón no se enciende directamente el lec xq debe cumplir sus 3 seg xq lee
elprograma de esa forma

Código final

sbit sw1 at RB0_bit; // el pulsador 1 esta conectado a rb0_bit

//lat porq es salida

sbit led1 at LATD0_bit;

sbit led2 at LATD1_bit;

sbit led3 at LATD2_bit;

char cuenta=0;
void interrpcion() iv 0x0008 ics ICS_AUTO// se vuelve co las lecits roja de asistente de interrupcopn

// analiza las banderas

if (INT0IF_bit==1)

led2=!led2;

INT0IF_bit=0; // limpia la bandera

if (INT1IF_bit==1)

led3=!led3;

INT1IF_bit=0; // limpia la bandera

if (TMR1IF_bit==1) // si hay interrpcion timer conadores( 100ms)

TMR1H=11; //timer hihg

TMR1L=220; //timer low

cuenta++;

if (cuenta>=10)

LATD3_bit=!LATD3_bit;

cuenta=0;

}
TMR1IF_bit=0;

void main()

ADCON1=0b1111; // habilita todo como digital

trisd=0;// todo como salida

TRISB0_bit=1; // bit especifico como entrada pulsador

TRISB1_bit=1; // bit especifico como entrada pulsador

led1=0;

led2=0;

led3=0;

// configuracion ineterrpciones

INTCON=0b01000000; // bit 6=1 mandos medios habilitado

INT0IF_bit=0; // limnpia la bandera d ela interrpcion deseada

INT0IE_bit=1; //habilito interrpcion deseada interripcion externa


// configuracion asociada a la int

INTEDG0_bit=0; // configura flanco de bajada

// configuracion int1

INT1IF_bit=0; // limnpia la bandera d ela interrpcion deseada

INT1IE_bit=1; //habilito interrpcion deseada

// configuracion asociada a la int

INTEDG1_bit=0; // configura flanco de bajada

// configuración timer1

T1CON=0; //lo dejo en cero

//configuro preescaldor en 8

T1CKPS1_bit=1;

T1CKPS0_bit=1;

TMR1H=11;

TMR1L=220;

TMR1ON_bit=1; //prende el timer

TMR1IF_bit=0; //limpia la bandera

TMR1IE_bit=1; //habilita la interrpcion


GIE_bit=1; // autoriza todas la interrpciones

while (1)

led1=!led1; // led1 es igual al negado del led 1 es decir se enceincde por 3s

Delay_ms(3000);

También podría gustarte