Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
26.07.2010, 15:00
|
|
Частый гость
Регистрация: 07.10.2006
Сообщений: 10
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Помогите с avr
использовать int для флага это очень жирно в плане нерационального использования памяти. Достаточно использовать тип переменной char , еще лучше bit , если среда поддерживает. CodeVision AVR поддерживает тип bit.
Глобальные переменные это переменные объявленные до main () их видит любая функция программы.
Статические переменные видимы только в функции в которой они объявлены.
Статические переменные сохраняют свои значения на новом такте. Попросту на новом такте значение статической переменной будет иметь значение которое мы записали туда раньше.
Объявляются статические переменные так.
static chat Flag; // статическая переменная типа чар с именем флаг
|
|
|
|
26.07.2010, 15:06
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Помогите с avr
Сообщение от igonzo
|
ЧЕТО НЕ ПОЛУЧАЕТСЯ
|
И не получится.
Код:
|
static unsigned char Flags;
if( PIND.0)
{
if(Flag == 0)
{
Flag = 1;
PORTC.4 = ~PORTC.4;
}
}
else Flag = 0; |
Это все правда будет работать плохо из за дребезга контактов в кнопке. Но в симуляторе нормально. Или там не кнопка на PORTD.0?
|
|
|
|
26.07.2010, 15:10
|
|
Частый гость
Регистрация: 07.10.2006
Сообщений: 10
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Помогите с avr
В моем коде с использованием флага,
if ( PIND.0 == 1 && Flag == 0 ) { PORTC.4 = 1; Flag = 1;}
if ( PIND.0 == 0 && Flag == 1 ) { Flag = 0;}
проблем с дребезгом контактов не может быть никогда , категорически, и в принципе.
Какую среду используешь, может будет проще этот кусочек готовый для тебя сделать.
Последний раз редактировалось Sk700S; 26.07.2010 в 15:14.
|
|
|
|
26.07.2010, 15:15
|
|
Частый гость
Регистрация: 03.03.2009
Сообщений: 34
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Помогите с avr
CodeVisionAVR
ВРОДЕ ЭТО РАБОТАЕТ
static unsigned char Flag(((s)));
if( PIND.0)
{
if(Flag == 0)
{
Flag = 1;
PORTC.4 = ~PORTC.4;
}
}
else Flag = 0;
НО ПРИ ЗАПУСКЕ PORTC.4 ВКЛЮЧИЛСЯ И ПОГАС
КАК ОСТАВИТЬ ЕГО ВКЛЮЧЕННЫМ (((PORTC.4=1; )))
ИЛИ НЕ ТАК?
__________________
да я такой
Последний раз редактировалось igonzo; 26.07.2010 в 15:24.
|
|
|
|
26.07.2010, 15:15
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Помогите с avr
Сообщение от Sk700S
|
В коде с использованием флага проблем с дребезгом контактов не может быть никогда , категорически, и в принципе.
|
Люблю я такие категоричные заявления. Попробуйте хоть в симуляторе это проверить. Узнаете много нового. Но не на своем коде, он неработоспособен в принципе. Там отрабатывается только первое нажатие, дальше что нажимай, что отпускай кнопку - уже без разницы.
|
|
|
|
26.07.2010, 15:17
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Помогите с avr
Сообщение от igonzo
|
А ТО СИЛЬНО КОМПИЛЯТОР РУГАЛСЯ,
|
Там опечатка - объявлена Flag s, а в тексте Flag. Лишняя буква всего лишь.
|
|
|
|
26.07.2010, 15:23
|
|
Частый гость
Регистрация: 03.03.2009
Сообщений: 34
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Помогите с avr
kison,
СПАСИБО ИСПРАВИЛ СПЕШИТЬ С ВЫВОДАМИ БОЛЬШЕ НЕ БУДУ
__________________
да я такой
|
|
|
|
26.07.2010, 15:30
|
|
Частый гость
Регистрация: 03.03.2009
Сообщений: 34
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Помогите с avr
if( PIND.0) // ЕСЛЕ ( PIND.0)
{
if(Flag == 0) // ЕСЛЕ FLAG = 0 А 0=FLAG ???
{
Flag = 1; /// А ЭТО ШО ЗНАЧИТ ???
PORTC.4 = ~PORTC.4;///
}
}
else Flag = 0;
__________________
да я такой
|
|
|
|
26.07.2010, 15:37
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Помогите с avr
Сообщение от igonzo
|
Flag = 1; /// А ЭТО ШО ЗНАЧИТ ???
|
Ровно то что написано. Присваиваем переменной Flag значение 1.
|
|
|
|
26.07.2010, 15:41
|
|
Частый гость
Регистрация: 03.03.2009
Сообщений: 34
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Помогите с avr
НО ПРИ ЗАПУСКЕ PORTC.4 ВКЛЮЧИЛСЯ И ПОГАС
КАК ОСТАВИТЬ ЕГО ВКЛЮЧЕННЫМ
__________________
да я такой
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:25.
|
|