Страница 1 из 1

Attiny13. Проблема с кнопкой.

Добавлено: Пт июн 01, 2012 07:45:17
within
Драсьте! Помогите плиз. Не получается сделать так, чтоб с помощью одной кнопки зажигать\гасить светодиод. Нажал - горит, нажал ещё - погас. Кнопка - PINB.3, светодиод PORTB.4. Пробовал так:
if ((PINB.3==0)&&(PORTB.4=1))
{PORTB.4=0;
delay_ms(200);}
if ((PINB.3==0)&&(PORTB.4=0))
{PORTB.4=1;}

Включает, но не выключает)

Re: Attiny13. Проблема с кнопкой.

Добавлено: Пт июн 01, 2012 08:11:37
a_skr
или так ("==" вместо "="):

Код: Выделить всё

if ((PINB.3==0)&&(PORTB.4==1))
{PORTB.4=0; delay_ms(200);}
else if ((PINB.3==0)&&(PORTB.4==0))
{PORTB.4=1; delay_ms(200);}
или так:

Код: Выделить всё

if(PINB.3==0){PORTB.4 ^= 1; delay_ms(200);}

Re: Attiny13. Проблема с кнопкой.

Добавлено: Пт июн 01, 2012 08:41:39
Akphantom
if(PINB.3==0) {
PORTB.4 = ~PINB.4;
delay_ms(200);
}

Re: Attiny13. Проблема с кнопкой.

Добавлено: Пт июн 01, 2012 08:45:06
Engineer_Keen
А если даташит очень внимательно почитать...

Код: Выделить всё

if(PINB.3==0) {
PINB.4 = 1;
delay_ms(200);
}

Re: Attiny13. Проблема с кнопкой.

Добавлено: Пт июн 01, 2012 08:45:35
a_skr
PORTB.4 = ~PORTB.4; правильнее :)

Re: Attiny13. Проблема с кнопкой.

Добавлено: Пт июн 01, 2012 08:51:31
a_skr
Engineer_Keen писал(а):А если даташит очень внимательно почитать...

Код: Выделить всё

if(PINB.3==0) {
PINB.4 = 1;
delay_ms(200);
}
спасибо, не знал :-) , по крайне мере в меге8 этого нововведения нет.

Re: Attiny13. Проблема с кнопкой.

Добавлено: Пт июн 01, 2012 08:54:30
Engineer_Keen
Это в основном фишка тинек, хотя в 48-88 мегах тоже встречается.

Re: Attiny13. Проблема с кнопкой.

Добавлено: Пт июн 01, 2012 08:56:02
ploop
Эта фишка новых серий. В классической восьмой нет, в 8А уже есть, если память не изменяет. В 48-88-168 есть во всех.

Re: Attiny13. Проблема с кнопкой.

Добавлено: Пт июн 01, 2012 08:57:23
a_skr
так что в плане переносимости не стоит так делать :)

Re: Attiny13. Проблема с кнопкой.

Добавлено: Пт июн 01, 2012 09:12:09
within
Спасибо за оперативность) Бум пробовать)

Re: Attiny13. Проблема с кнопкой.

Добавлено: Пт июн 01, 2012 18:01:13
radiokot__

Код: Выделить всё

#include <tiny13.h>
#include <delay.h>

#define kn_sel PINB.0
#define led PORTB.1

char mod;

void selekt()
  {   
      if (!kn_sel)
      { mod ^=1;
       do { } while(!kn_sel); 
       if (mod==1)
              led=1;
         else led=0;
      }     
  } 

void main(void)
{
{
// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
 
PORTB=0x01;
DDRB=0x06;
}
 //mod=0; 

while (1)
  {
    selekt();
  }
}

Re: Attiny13. Проблема с кнопкой.

Добавлено: Пт июн 01, 2012 19:55:24
allplayer
Даже лень читать всё, что написали. Загляни в датащий по этой микросхеме. В частности на I/O Ports.
Из личного опыта помню, что на порте Б нету аналогового сингала. На него можно вешать кнопки. А вот диоды надо на портА и то, не на все! :dont_know:

Re: Attiny13. Проблема с кнопкой.

Добавлено: Сб июн 02, 2012 21:53:39
within
Во–первых. Если не ошибаюсь, на любой порт можно и кнопки кидать и диоды подключать. Главное, правильно сконфигурировать)
Во–вторых, чувак, открой даташит. В Tiny13 нет порта А) Если лень читать, то не советуй. Тут не 40 страниц.