0 голосов

Здравствуйте! Задача симулировать в протеусе на 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

      }
}

В протеусе собрана схема ниже. При нажатии на кнопку светодиод загорается, при отпускании - гаснет (ХОТЯ ДОЛЖЕН ГОРЕТЬ ПОСТОЯННО). Что не так?

(18 баллов) 1 5 8
исправил
ой-ёй...  я перепутал PINB с PORTB ) Вопрос снимается

Пожалуйста, войдите или зарегистрируйтесь чтобы ответить на этот вопрос.

Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.

    За этот месяц ещё никого.

    ...