interrupt funksjonen til INT0 (PD2):

C Program interrupt funksjon av INT0 ( PD2 )


Solution:
  1. #include <avr/io.h>
  2. #include "LedOgBrytereIOKort.h"
  3. #include "BitManipulation.h"
  4. #define F_CPU 16000000L
  5. #include <util/delay.h>
  6. #include <avr/interrupt.h>
  7.  
  8. static int teller;
  9.  
  10.  
  11. // interrupt funksjonen til INT0 (PD2):
  12.  
  13. ISR(INT0_vect)
  14. {
  15.         teller++;
  16.         skrivTilLeds(~teller);
  17. }
  18.  
  19. ISR(INT1_vect)
  20. {
  21.         teller = 0;
  22.         skrivTilLeds(~teller);
  23. }
  24.  
  25. int main(void)
  26. {
  27.         init_LedBryterKort();
  28.         teller=0;
  29.         skrivTilLeds(~teller); //slukke lysa
  30.        
  31.         //Enable INT0 (PD2):
  32.         EICRA |= (1 << ISC01); // Set INT0 (PD2) to trigger on falling edge
  33.         EIMSK |= (1 << INT0) ; // Turns on INT1 (PD3)  
  34.  
  35.         EICRA |= (1 << ISC11); // Set INT0 (PD2) to trigger on falling edge
  36.         EIMSK |= (1 << INT1) ; // Turns on INT1 (PD3)
  37.         sei(); //Set Enable interrupts
  38.        
  39.     while(1)
  40.     {
  41.           _delay_ms(10);
  42.     }
  43. }


Learn More :