Easyelectronics.ru

Электроника для всех
Текущее время: 18 янв 2020, 16:12

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Attiny13 кнопка
СообщениеДобавлено: 05 ноя 2019, 12:00 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6421
Напишите процедуру ввода и обработки кнопки КАК ФУНКЦИЮ delay и используйте ее.
Т.е. вместо delay(75) будет key(75), которая разворачивается в:
void key(uint8_t delay)
{
for (i=0; i<(delay<<3);i++)
{
delay(125ms);
прочитать и обработать состояние кнопки. При необходимости прервать ожидание - выдать break;
}
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Attiny13 кнопка
СообщениеДобавлено: 05 ноя 2019, 12:01 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 2499
Можно в общем-то и без прерывания. Если не больше 655 сек работы надо. Кнопка нажата должна быть 10-20мс, человек быстрее не нажмет всё-равно.
Код:
#include <tiny13.h>
#include <delay.h>
#include <stdint.h>



void delay_s(uint16_t s, uint8_t r_flag) {
  if (r_flag == 0)
    while(s--)
      delay_ms(1000);
  else if (r_flag == 1) {
    uint8_t b_flag;
    if (s <= 655)
      s *= 100;
    else return;
    while(s--) {
      if (!PINB.1)
        b_flag = 1;
      delay_ms(10);
      if (!PINB.1 && b_flag)
        return;
    }
  }
}

void main(void)
{
DDRB=(0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (1<<DDB2) | (0<<DDB1) | (1<<DDB0);
PORTB=(0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (1<<PORTB1) | (1<<PORTB0);


ACSR=0x80;



while (1)
{
while (PINB.1);
delay_us(200);
if (PINB.0==1)
PORTB.0=0;
PORTB.2=1;
delay_s(75, 1);
PORTB.0=1;
PORTB.2=0;
delay_s(16, 0);
while (!PINB.1);
delay_us(200);
}
}


PS: Сейчас если кто захочет высказаться, что так неэффективно, так делать не стоит и т.д. - я в курсе )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Attiny13 кнопка
СообщениеДобавлено: 12 ноя 2019, 17:18 
Только пришел

Зарегистрирован: 23 окт 2019, 15:34
Сообщения: 7
Попытался запустить в протэусе ..... Ничего не происходит...
За эти дни пытался сам постичь великий и всемогущий Си. В голове полная билеберда... похоже на то что проще сделать на 555.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу Пред.  1, 2


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB