CVAVR
CVAVR
не могу понять как осуществить:
нажал на кнопу-помигал 4 раза свд потом горит постоянно. А при отпускании кнопки в любой момент выполнения программы свд должен выключится
Диод-PORTB.0
кнопка-PORTC.4
нажал на кнопу-помигал 4 раза свд потом горит постоянно. А при отпускании кнопки в любой момент выполнения программы свд должен выключится
Диод-PORTB.0
кнопка-PORTC.4
- Реклама
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: CVAVR
Код: Выделить всё
void wait(void)
{
for(k= 0; k<100; k++)
{
if(PINC.1) #asm("RJMP 0");
}
}
.
.
.
.
while(PINC.4);
for(i= 0; i<4; i++)
{
PORTB.0= 1;
wait();
PORTB.0= 0;
wait();
}
PORTB.0= 1;
while(!PINC.4);
#asm("RJMP 0");Docendo discimus
Re: CVAVR
1. Переименуй тему, а то ее закроют.
2. Ты даже не удосужился привести структуру программы.
3. в цикле :
Опрашивать кнопку.
Нажата и флаг нажатости сброшен? - да- пауза 10 мс- нажата еще? - поехали : включить светодиод. пауза, выключить. пауза. включить светодиод. пауза, выключить. пауза. включить светодиод. пауза, выключить. пауза. включить светодиод пауза, выключить. пауза включить светодиод. выставить флаг нажатости.
Отжата и флаг нажатости выставлен? - да- пауза 10 мс- отжата еще? - поехали : выключить светодиод, сбросить флаг нажатости.
2. Ты даже не удосужился привести структуру программы.
3. в цикле :
Опрашивать кнопку.
Нажата и флаг нажатости сброшен? - да- пауза 10 мс- нажата еще? - поехали : включить светодиод. пауза, выключить. пауза. включить светодиод. пауза, выключить. пауза. включить светодиод. пауза, выключить. пауза. включить светодиод пауза, выключить. пауза включить светодиод. выставить флаг нажатости.
Отжата и флаг нажатости выставлен? - да- пауза 10 мс- отжата еще? - поехали : выключить светодиод, сбросить флаг нажатости.
Re: CVAVR
void wait(void)
{
for(k= 0; k<100; k++)
{
if(PINC.1) #asm("RJMP 0");
}
}
.
.
.
.
while(PINC.4);
for(i= 0; i<4; i++)
{
PORTB.0= 1;
wait();
PORTB.0= 0;
wait();
}
PORTB.0= 1;
while(!PINC.4);
#asm("RJMP 0");
а при чём тут PINC.1
{
for(k= 0; k<100; k++)
{
if(PINC.1) #asm("RJMP 0");
}
}
.
.
.
.
while(PINC.4);
for(i= 0; i<4; i++)
{
PORTB.0= 1;
wait();
PORTB.0= 0;
wait();
}
PORTB.0= 1;
while(!PINC.4);
#asm("RJMP 0");
а при чём тут PINC.1
- Реклама
Re: CVAVR
pyzhman, вчитывался несколько раз в псевдокод. Думаете оно будет работать?
Re: CVAVR
не работает этот код.
Flasher, как должно быть?
Flasher, как должно быть?
Re: CVAVR
Кнопка подключена к PINC.4 и к GND
Код: Выделить всё
#define KEY PINC.4
#define LED PORTB.0
#define ON 1
#define OFF 0
void main(void)
{
unsigned char FlagKey=0;
DDRB|=(1<<0);
PORTB&=~(1<<0);
DDRC&=~(1<<4);
PORTC|=(1<<4);
if((!FlagKey)&&(!KEY))
{
delay_ms(10);
if (!KEY)
{
for (unsigned char i=0; i<3; i++)
{
LED=ON;
delay_ms(300U);
LED=OFF;
delay_ms(300U);
}
LED=ON;
FlagKey=1;
}
}
if((FlagKey)&&(KEY))
{
delay_ms(10);
if (KEY)
{
LED=OFF;
FlagKey=0;
}
|
}
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: CVAVR
Код: Выделить всё
delay_ms(300U);?при отпускании кнопки в любой момент выполнения программы свд должен выключится
Docendo discimus
Re: CVAVR
Мне еще вытесняющую RTOS написать?
Пусть автор сам заводит прерывания (на неизвестном чипе с неизвестной тактовой) и играется с системными таймерами и обработкой событий.
Явно, что это только фрагмент программы, и надо встраивать в другой код. Без знания структуры ничего не напишешь.
Да и не оговорены приоритеты миганий и выключения.
Пусть автор сам заводит прерывания (на неизвестном чипе с неизвестной тактовой) и играется с системными таймерами и обработкой событий.
Явно, что это только фрагмент программы, и надо встраивать в другой код. Без знания структуры ничего не напишешь.
Да и не оговорены приоритеты миганий и выключения.
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: CVAVR
Код: Выделить всё
{
for(k= 0; k<100; k++)
{
if(PINC.1) #asm("RJMP 0");
}
}
.
.
.
.
while(PINC.4);
for(i= 0; i<4; i++)
{Явно, что это только фрагмент программы, и надо встраивать в другой код. Без знания структуры ничего не напишешь.
Docendo discimus


