Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <avr/io.h>
- #include <util/delay.h>
- #include <avr/interrupt.h>
- unsigned volatile char inc;
- #define F_CPU 1000000UL
- #define DELAY_MAX 2900
- #define DELAY_MIN 400
- ISR (INT0_vect){
- inc = 0;//decrease delay
- }
- ISR (INT1_vect){
- inc = 1;//increase delay
- }
- int main(void)
- {
- /* Replace with your application code */
- unsigned char led_on = 0b00100000;
- unsigned char led_off = 0b00000000;
- unsigned int delay = DELAY_MIN;
- DDRB = 0xFF;
- PORTB = ~led_on;
- DDRD = 0x00;
- PORTD = 0xFF;
- EIMSK=0b00000011;
- EICRA=0b00001010;
- sei();
- while (1)
- {
- PORTB = ~led_off;
- switch(delay){
- case 400:
- _delay_ms(400);
- case 900:
- _delay_ms(900);
- case 1400:
- _delay_ms(1400);
- case 1900:
- _delay_ms(1900);
- case 2400:
- _delay_ms(2400);
- case 2900:
- _delay_ms(2900);
- default:
- _delay_ms(400);
- }
- PORTB = ~led_on;
- if(inc == 1) {
- if(delay >= DELAY_MIN && delay < DELAY_MAX) {
- delay += 500;
- }
- }
- else{
- if(delay > DELAY_MIN && delay <= DELAY_MAX) {
- delay -= 500;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement