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

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

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

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

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

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

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 15.12.2013, 01:44  
harry7777
Частый гость
 
Регистрация: 10.04.2009
Адрес: Санкт-Петербург
Сообщений: 43
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
harry7777 на пути к лучшему
По умолчанию таймер+пауза

Вот собственно сам код таймера :

#include ‹io.h›
#include ‹delay.h›

static flash unsigned char digit[] =
{
(0b11000000), //0
(0b11111001), //1
(0b10100100), //2
(0b10110000), //3
(0b10011001), //4
(0b10010010), //5
(0b10000010), //6
(0b11111000), //7
(0b10000000), //8
(0b10010000) //9
};

static flash unsigned char razryad[] =
{
(1), //0
(2), //1
(4), //2
(, //3
};


void main(void)
{
int i,j,k,m;
PORTD=0x00;
DDRD=0b11111111;
PORTC=0xFF;
DDRC=0b11111111;

while (1)
{
for(i=0;i‹10;i++)
{
for(k=0;k‹10;k++)
{
m=k;
for(j=0;j‹50;j++)
{
PORTD=digit[i];
PORTC=razryad[2];
delay_ms(10);
PORTD=digit[m];
PORTC=razryad[3];
delay_ms(10);
}
}
}
}
}

подскажите пожалуста как можно сделать паузу в этом таймере

лучше бы так- чтобы нажал на кнопку и отсчет остановился на последней секунде и больше не шел не сброс а именно последняя секунда (delay_ms не помогло- вместо 11 показывает 1 или вместо 113 - 3 ,тоесть последнее число когда была нажата кнопка пауза полностью не показывает) пооомогите плиииз

может как то с помощью внешнего прерывания подскажите пожалуста?
Реклама:

Последний раз редактировалось harry7777; 15.12.2013 в 10:59.
harry7777 вне форума  
Непрочитано 16.12.2013, 01:34  
Prime
Прописка
 
Регистрация: 11.06.2005
Сообщений: 266
Сказал спасибо: 9
Сказали Спасибо 13 раз(а) в 12 сообщении(ях)
Prime на пути к лучшему
По умолчанию Re: таймер+пауза

Сообщение от harry7777 Посмотреть сообщение
Вот собственно сам код таймера :

#include ‹io.h›
#include ‹delay.h›

static flash unsigned char digit[] =
{
(0b11000000), //0
(0b11111001), //1
(0b10100100), //2
(0b10110000), //3
(0b10011001), //4
(0b10010010), //5
(0b10000010), //6
(0b11111000), //7
(0b10000000), //8
(0b10010000) //9
};

static flash unsigned char razryad[] =
{
(1), //0
(2), //1
(4), //2
(, //3
};


void main(void)
{
int i,j,k,m;
PORTD=0x00;
DDRD=0b11111111;
PORTC=0xFF;
DDRC=0b11111111;

while (1)
{
for(i=0;i‹10;i++)
{
for(k=0;k‹10;k++)
{
m=k;
for(j=0;j‹50;j++)
{
PORTD=digit[i];
PORTC=razryad[2];
delay_ms(10);
PORTD=digit[m];
PORTC=razryad[3];
delay_ms(10);
}
}
}
}
}

подскажите пожалуста как можно сделать паузу в этом таймере

лучше бы так- чтобы нажал на кнопку и отсчет остановился на последней секунде и больше не шел не сброс а именно последняя секунда (delay_ms не помогло- вместо 11 показывает 1 или вместо 113 - 3 ,тоесть последнее число когда была нажата кнопка пауза полностью не показывает) пооомогите плиииз

может как то с помощью внешнего прерывания подскажите пожалуста?
По-моему в соседних ветках вам уже давали ОБЩИЙ СОВЕТ по вашей задаче - применять динамическую индикацию. Как вариант - заведите аппаратный таймер, настройте его на нужный период, в его прерывании переключайте индикаторы и высвечивайте цифры, которые лежат в отдельном массиве. Заведите второй таймер (тоже аппаратный) с периодом в 1 секунду. В прерывании этого таймера меняйте данные, хранящиеся в том массиве, с которого идёт отображение. Для запуска/остановки отсчёта используйте какой нибудь флаг (переменную типа bool). Если она true - идёт отсчёт, если false - отсчёт не идёт, данные не меняются. При этом динамическая индикация будет продолжать индицировать без привязки к вашим циклам.
__________________
Канал в Telegram об МК AVR @EasyAVR
Prime вне форума  
Непрочитано 23.03.2014, 17:09  
SaNeTaR
Прохожий
 
Регистрация: 23.03.2014
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
SaNeTaR на пути к лучшему
По умолчанию Re: таймер+пауза

Цитата:
Вот собственно сам код таймера :

#include ‹io.h›
#include ‹delay.h›

static flash unsigned char digit[] =
{
(0b11000000), //0
(0b11111001), //1
(0b10100100), //
Мне кажется вам будет полезно узнать про таймеры счетчики в авр:
(вся соль в видио) http://www.doneathome.ru/#/archives/517
Также есть статья где на матрицу 8x8 выводится всякое)))(динамическая индикация)
http://www.doneathome.ru/#/archives/364
SaNeTaR вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
"Шахматный" таймер на ATmega 8515 Bahmut_aiirsoft Песочница (вопросы новичков) 14 17.11.2013 14:14
Сторожевой таймер в ATtiny25/45/85 mike124 Proteus 11 30.10.2012 11:19
Таймер на ATmega16... опять idmg Микроконтроллеры, АЦП, память и т.д 28 05.04.2008 22:17
таймер и симуляция в MPLAB Sim lisergin Микроконтроллеры, АЦП, память и т.д 0 16.01.2006 15:35
Задача - таймер. и прерывание! chipic128 Микроконтроллеры, АЦП, память и т.д 11 22.02.2005 18:11


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


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