AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
15.12.2013, 01:44
|
|
Частый гость
Регистрация: 10.04.2009
Адрес: Санкт-Петербург
Сообщений: 43
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
таймер+пауза
Вот собственно сам код таймера :
#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.
|
|
|
|
16.12.2013, 01:34
|
|
Прописка
Регистрация: 11.06.2005
Сообщений: 266
Сказал спасибо: 9
Сказали Спасибо 13 раз(а) в 12 сообщении(ях)
|
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
|
|
|
|
23.03.2014, 17:09
|
|
Прохожий
Регистрация: 23.03.2014
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
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
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:55.
|
|