Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 09.08.2011, 17:20  
heady69
Прописка
 
Регистрация: 25.09.2009
Адрес: Ivanovo
Сообщений: 156
Сказал спасибо: 3
Сказали Спасибо 67 раз(а) в 60 сообщении(ях)
heady69 на пути к лучшему
По умолчанию Re: как реализовать меню в Термодатчике

Сообщение от Nixon83 Посмотреть сообщение
как-то так! И хоть кол чеши не могу организовать меню!
По коду выше вроде в меню должно входить.Проверь(при входе на индикаторы выдай чего-нибудь для проверки).
Реклама:
heady69 вне форума  
Непрочитано 09.08.2011, 17:27  
Nixon83
Частый гость
 
Регистрация: 07.08.2009
Сообщений: 10
Сказал спасибо: 1
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
Nixon83 на пути к лучшему
По умолчанию Re: Как реализовать меню в термодатчике

Где по коду выше, в опросе семисегментника?
Nixon83 вне форума  
Непрочитано 09.08.2011, 22:05  
heady69
Прописка
 
Регистрация: 25.09.2009
Адрес: Ivanovo
Сообщений: 156
Сказал спасибо: 3
Сказали Спасибо 67 раз(а) в 60 сообщении(ях)
heady69 на пути к лучшему
По умолчанию Re: Как реализовать меню в термодатчике

Сообщение от Nixon83 Посмотреть сообщение
Где по коду выше, в опросе семисегментника?
Например здесь:

Код:
void main() {
PORTB=0;
DDRB=0x0f;
PORTD=0;
DDRD=0xff;
PORTC=0;
DDRC=0x10;
TCCR0=0;
TCNT0=0xfd;
TIMSK=1;
#asm("sei");
led_buff[0]=dig_table[11];
led_buff[1]=dig_table[11];
led_buff[2]=dig_table[11];
led_buff[3]=dig_table[11];
delay_ms(200);
TCCR0=2;
ds_init();
while (ds_ok==0);
epp_read();
while (1) {
if (menu_tmr==0) ds_calc();
if (menu_tmr==15) {
ds_read();
temp_test();
}
if (BTN_PLUS==0&&btn0==0&&btn1==0) {
btn0=1;
temp_inc();
btn_timeout=30;
}
if (BTN_PLUS==0&&btn0!=0&&btn_timeout‹20) {
btn_timeout=20;
temp_inc();
}
if (BTN_PLUS!=0&&btn0!=0) {
btn0=0;
btn_timeout=20;
}
if (BTN_MINUS==0&&btn0==0&&btn1==0) {
btn1=1;
temp_dec();
btn_timeout=30;
}
if (BTN_MINUS==0&&btn1!=0&&btn_timeout‹20) {
btn_timeout=20;
temp_dec();
}
if (BTN_MINUS!=0&&btn1!=0) {
btn1=0;
btn_timeout=20;
}

if (BTN_SET==0&&btn2!=0&&btn_timeout‹20) {
btn_timeout=20;
set_params(); //переход на установку параметров
}
if (BTN_SET!=0&&btn2!=0) {
btn2=0;
btn_timeout=20;
}

if (btn_timeout›0) {
led_temp(alarm_temp);
btn_timeout--;
if (btn_timeout==0) epp_write();
}else{
led_temp(temp);
}
delay_ms(50);
menu_tmr++;
if (menu_tmr›19) menu_tmr=0;
}
}

Последний раз редактировалось heady69; 09.08.2011 в 22:09.
heady69 вне форума  
Непрочитано 09.08.2011, 22:47  
heady69
Прописка
 
Регистрация: 25.09.2009
Адрес: Ivanovo
Сообщений: 156
Сказал спасибо: 3
Сказали Спасибо 67 раз(а) в 60 сообщении(ях)
heady69 на пути к лучшему
По умолчанию Re: Как реализовать меню в термодатчике

Опрос кнопок лучше все-таки в прер.сделать. Можно сделать например так:

#define sc_del 100 //кол-во прер.
uchar8 scan_delay; //счетчик прер.для скан.кноп.
uchar8 key_code; //код клавиши==0,нет нажатия

interrupt [TIM0_OVF] void tmr0_ovf() {
if(! --scan_delay){ //пора сканировать?
scan_delay=sc_del;
if (BTN_PLUS==0 && btn0!=0 && key_code==0) key_code=1; //нажат +
сохраняем код клавиши "1" (если обработан предыдущий)
btn0=BTN_PLUS;
......дальше по аналогии для других кнопок..................
}

#ifdef LED_CATODE
PORTB=0x0f;
PORTD=~led_buff[led_dig];
PORTB=(~(1‹‹led_dig))&0x0f;
#else
PORTB=0;
PORTD=led_buff[led_dig];
PORTB=1‹‹led_dig;
#endif
led_dig++;
if (led_dig›3) led_dig=0;
}

В оcновной программе получаем код клавиши и сбрасываем в 0 для разрешения дальнейшей обработки.И в программе set не придется опять огород городить с опросом кнопок.

Последний раз редактировалось heady69; 10.08.2011 в 00:47.
heady69 вне форума  
Непрочитано 10.08.2011, 11:31  
Nixon83
Частый гость
 
Регистрация: 07.08.2009
Сообщений: 10
Сказал спасибо: 1
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
Nixon83 на пути к лучшему
По умолчанию Re: Как реализовать меню в термодатчике

heady69! спасибо, буду пробовать!!!
Nixon83 вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Альтернативная энергия kum1953 Поиск схем. Делимся схемами 1218 01.10.2012 16:30
Водка и как с ней бороться SerjT Отвлекитесь, эмбеддеры! 108 29.09.2009 21:25
Как реализовать точное время в сети из AVR? Don_Ambrosio Микроконтроллеры, АЦП, память и т.д 44 15.08.2008 14:02
Как реализовать на ATmeg8 или ATtiny датчик случайных чисел Don_Ambrosio Микроконтроллеры, АЦП, память и т.д 20 03.05.2008 21:06
Как можно реализовать управление 8-сегментным индикатором? greafuger Микроконтроллеры, АЦП, память и т.д 22 17.03.2008 23:16


Часовой пояс GMT +4, время: 22:27.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot