#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
ISR(PCINT1_vect) {
PORTB |= (1 << 7); // Set PB7 high
_delay_ms(1000); // Delay for 1 second
PORTB &= ~(1 << 7); // Set PB7 low
}
ISR(PCINT2_vect) {
PORTB |= (1 << 5); // Set PB5 high
_delay_ms(1000); // Delay for 1 second
PORTB &= ~(1 << 5); // Set PB5 low
}
int main(void) {
DDRA = 0xff; // Set PORTA as output
DDRB |= (1 << PB7); // Enable LED output on PB7
DDRB |= (1 << PB5); // Enable LED output on PB5
PORTB |= (1 << PB4); // Enable pull-up on pin PCINT4
PORTJ |= (1 << PJ1);
PCMSK1 |= (1 << PCINT10); // Enable interrupt for PCINT4
PCMSK2 |= (1 << PCINT16); // Enable interrupt for PCINT4
PCICR |= (1 << PCIE1) | (1 << PCIE2) ; //_BV(PCIE0); // Enable Pin Change Interrupt for PCINT0
sei(); // Enable global interrupts
while (1) {
PORTA = 0x00; // Turn off PORTA initially
for (unsigned char i = 0; i < 8; i++) {
PORTA |= (1 << i); // Display LED pattern on PORTA
_delay_ms(500); // Delay for 500 milliseconds
}
}
}