Documente Academic
Documente Profesional
Documente Cultură
Configurarea intreruperilor
int i = 0, sens = 0;
void interrupt ()
{
if(INTCON.INT0IF == 1)
{
sens = 1;
INTCON.INT0IF = 0; // resetare
Flag de la INT0
}
if(INTCON3.INT1IF == 1)
{
sens = -1;
INTCON3.INT1IF = 0; // resetare
Flag de la INT1
}
}
void main()
{
TRISD = 0x00; // initializare port D ca iesire
LATD = 0x00; // setare 0 pe iesirile portului D
ADCON0.ADON = 0; // dezactivare modul ADC
ADCON1 = 0x0F; // setare pini de intrare pe mod digital
TRISB0_bit = 1; // setare pin B0 (INT0) ca intrare
TRISB1_bit = 1; // setare pin B1 (INT1) ca intrare
RCON.IPEN = 0; // dezactivare nivele de prioritate pentru intreruperi
INTCON.GIE = 1; // activarea intreruperilor globale
INTCON.INT0IE = 1; // activarea intreruperii externe INT0
INTCON.INT0IF = 0; // setarea bit-ului Flag de la intreruperea INT0
INTCON3.INT1IE = 1; // activarea intreruperii externe INT1
INTCON3.INT1IF = 0; // setarea bit-ului Flag de la intreruperea
INT1
while (1) {
if (sens == 1)
{
for (i = 0; i <= 7; i ++)
{
LATD = ceil(pow(2,i));
delay_ms(50);
}
}
if (sens == -1)
{
for (i = 7; i >= 0; i --)
{
LATD = ceil(pow(2,i));
delay_ms(50);
}
}
}
}