Здравствуйте! Задача симулировать в протеусе на attiny13 зажигание светодиода от нажатой кнопки через внешнее прерывание. Прерывание по любому изменению на пине. Кнопка подключена к PB4 (REED_SW), светодиод к PB0 (BUZZER). Код для attiny13 (написано в CodeVisionAvr):
#include <tiny13a.h>
#define BUZZER PINB.0
#define REED_SW PINB.4
// Declare your global variables here
// Pin change interrupt service routine
interrupt [PC_INT0] void pin_change_isr(void)
{
BUZZER = 1;
}
void main(void)
{
// Input/Output Ports initialization
// Port B initialization
// Function: Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=Out
DDRB=(0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (1<<DDB0);
// State: Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=0
PORTB=(0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: On
GIMSK=(0<<INT0) | (1<<PCIE);
MCUCR=(0<<ISC01) | (0<<ISC00);
PCMSK=(0<<PCINT5) | (1<<PCINT4) | (0<<PCINT3) | (0<<PCINT2) | (0<<PCINT1) | (0<<PCINT0);
GIFR=(0<<INTF0) | (1<<PCIF);
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
}
}
В протеусе собрана схема ниже. При нажатии на кнопку светодиод загорается, при отпускании - гаснет (ХОТЯ ДОЛЖЕН ГОРЕТЬ ПОСТОЯННО). Что не так?