Страница 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.
Из личного опыта помню, что на порте Б нету аналогового сингала. На него можно вешать кнопки. А вот диоды надо на портА и то, не на все!

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