Advertisement
Guest User

Untitled

a guest
Apr 21st, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.10 KB | None | 0 0
  1. #include <avr/io.h>
  2. #include <util/delay.h>
  3. #include <avr/interrupt.h>
  4.  
  5. unsigned volatile char inc;
  6.  
  7. #define F_CPU 1000000UL
  8. #define DELAY_MAX 2900
  9. #define DELAY_MIN 400
  10.  
  11. ISR (INT0_vect){
  12.     inc = 0;//decrease delay
  13. }
  14.  
  15. ISR (INT1_vect){
  16.     inc = 1;//increase delay
  17. }
  18.  
  19. int main(void)
  20. {
  21.     /* Replace with your application code */
  22.    
  23.     unsigned char led_on = 0b00100000;
  24.     unsigned char led_off = 0b00000000;
  25.     unsigned int delay = DELAY_MIN;
  26.    
  27.     DDRB = 0xFF;
  28.     PORTB = ~led_on;
  29.     DDRD = 0x00;
  30.     PORTD = 0xFF;
  31.    
  32.     EIMSK=0b00000011;
  33.     EICRA=0b00001010;
  34.    
  35.     sei();
  36.    
  37.     while (1)
  38.     {
  39.         PORTB = ~led_off;
  40.         switch(delay){
  41.             case 400:
  42.               _delay_ms(400);
  43.             case 900:
  44.               _delay_ms(900);
  45.             case 1400:
  46.               _delay_ms(1400);
  47.             case 1900:
  48.               _delay_ms(1900);
  49.             case 2400:
  50.               _delay_ms(2400);
  51.             case 2900:
  52.               _delay_ms(2900);
  53.             default:
  54.             _delay_ms(400);
  55.         }
  56.         PORTB = ~led_on;
  57.        
  58.         if(inc == 1) {
  59.             if(delay >= DELAY_MIN && delay < DELAY_MAX) {
  60.                 delay += 500;
  61.             }
  62.         }
  63.         else{
  64.             if(delay > DELAY_MIN && delay <= DELAY_MAX) {
  65.                 delay -= 500;
  66.             }
  67.         }
  68.     }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement