Proteus, KiCAD и другие ECAD Разработчик так или иначе сталкивается с системами автоматизированного проектирования. Данный раздел - по САПР. |
19.03.2007, 21:28
|
#31
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
Сообщение от kison
|
Спасибо за ветку, много посмеялся.
Для начала максимальное 32-х битное целое = 4294967295 , а вовсе не " 4 000 000 с чем то (2^32)."
Дальше больше - вычитать беззнаковые целые числа любой разрядности не просто просто , а очень просто.
|
Спасибо за код, оказалось действительно очень просто!
|
|
|
|
20.03.2007, 17:15
|
#32
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
два месяца занимаюсь в плотную програмированием чур не судить строго
|
|
|
|
20.03.2007, 23:14
|
#33
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Я и не сужу
Смех вызвало это:
Сообщение от dimonbest
|
Я тоже много писал на ассемблере, но сейчас например надо вывести 4 байтное число на LCD экранчик. На Си это делается не сложно, а вот как на ассемблере я еще не придумал...
|
Все когда-то с 0 начинали. Просто вместо того, что-бы вариться в собственном соку, можно задать конкретный вопрос и получить конкретный ответ.
|
|
|
|
21.03.2007, 12:39
|
#34
|
Прохожий
Регистрация: 05.07.2006
Сообщений: 5
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Есть часть кода:
while(1)
{
if (waitkn3on())
{
if (date==1)date=31; else date--;
gotoxy(0,2);
show(date);
}
if (waitkn1on())
{
if (date==31)date=1; else date++;
gotoxy(0,2);
show(date);
}
}
Как из него видно, переменная date может выводить значения на экран только от 1 до 31. А у меня когда долго клацать на кнопки может принять значение и 255! ![Обижен](images/smilies/icon_beee.gif) Может подскажете в чем может быть проблема?
[/quote]
Вот в этом месте:
if (date==1)date=31; else date--;
Посмотри как инициализируется переменная date если
по умолчанию то её значение ==0, тогда декрементация else date--; даёт с каждым циклом значения 255,254, 253 и т.д. это если она unsigned а если знаковая то 127,126,125 ит.д.
|
|
|
|
21.03.2007, 13:02
|
#35
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
Сообщение от slawalog
|
Вот в этом месте:
if (date==1)date=31; else date--;
Посмотри как инициализируется переменная date если
по умолчанию то её значение ==0, тогда декрементация else date--; даёт с каждым циклом значения 255,254, 253 и т.д. это если она unsigned а если знаковая то 127,126,125 ит.д.
|
У меня перед этим она инициализируется, иногда значения скачут в процессе, когда я нажимаю эти кнопки. Такое впечатление что программа сама скачет из одного участка в другой. Может дело в железе? Или контроллер глючный?
|
|
|
|
21.03.2007, 14:26
|
#36
|
Прохожий
Регистрация: 05.07.2006
Сообщений: 5
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от dimonbest
|
У меня перед этим она инициализируется, иногда значения скачут в процессе, когда я нажимаю эти кнопки. Такое впечатление что программа сама скачет из одного участка в другой. Может дело в железе? Или контроллер глючный?
|
Я не понял date инициализируется каким значением?
Я думаю что нужно вот так
unsigned char date=1;
А сжелезом может быть если нажатие кнопки - установка "1" то посмотри какой конденсатор у тебя стоит перед входом в порт.(может держать 1,5в несколько циклов) а так не могу сказать - поставь програмно задержку в 100-150мС после нажатия кнопки в твоей функции waitkn3on()
что то типа
if(bit_is_set(PIND, 5))
delay_ms(150);
|
|
|
|
21.03.2007, 14:30
|
#37
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
Сообщение от slawalog
|
Я не понял date инициализируется каким значением?
|
Значением от 1 до 31...
|
|
|
|
23.03.2007, 17:03
|
#38
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
0
|
|
|
|
25.03.2007, 00:47
|
#39
|
Прохожий
Регистрация: 05.07.2006
Сообщений: 5
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
0
|
|
|
|
25.03.2007, 02:17
|
#40
|
Частый гость
Регистрация: 16.03.2007
Сообщений: 13
Сказал спасибо: 1
Сказали Спасибо 10 раз(а) в 2 сообщении(ях)
|
Здравствуйте.
Выражу свое мнение по-поводу "опроса" кнопок. (хотя это и оффтоп для темы)
1. Механические контакты СИГНАЛЬНЫЕ (не путать с СИЛОВЫМИ) "дребезжат" 10...15 милисекунд. Это касается как контактов кнопок, нажимаемых человеком, так и контактов электромагнитных реле... бОльшая задержка для устанения дребезга бессмысленна.
2. Лучшим "устранителем" дебезга является триггер-защелка... НО такое решение требует дополнительных затрат на "железо".
3. Внутреннего "подтягивающего" резистора AVR контроллера (около 100 кОм) не достаточно для устойчивой работы кнопки - ток слишком мал.. от чего велика помехозависимость. Наличие внешнего "подтягивающего" резистора 2...10 кОм - обязательно. (общепринятым считается номинал в 4,7кОм, но если токопотребление всей схемы не является принципиальным, то я бы посоветовал ставить 2,7...3,9 кОм).
4. Для правильной работы программы опроса кнопок необходимо вводить "индикатор" (флаг, если хотите) факта нажатия (или отпускания) кнопки. А в программе оТработки нажатия проводить "анализ" этого флага, и если нажание не обработано, то отрататывать его, и "сбрасывать" флаг нажатия. Такой алгоритм поможет избежать повторной (многократной) отработки одного нажания.
теперь вопрос по теме..
1.Как к CVAVR "подключить" симулятор.
2.Как "ускорить" работу встроенного программатора CVAVR? (видимо, в программе отсутствует режим страничной записи)
мысли про различные компиляторы...
IAR считается "стандартом"..., на мой взгляд, его основной плюс в том, что среди "продуктов" IAR есть компиляторы Си и для 51-х, и для AVR и DSP.. и т.д... а интерфейсная оболочка (IDE) одинакова для любых компиляторов IAR, что обеспечит скорейший "переход" (перенос программы) при "смене" элементной базы.
WinAVR - "дитя" LINUX'a (отсюда его "бесплатность"), в основе GCC компилятор. Его можно "собирать" (самостоятельно добавить новые кристаллы, например) как угодно, но для этого нужны ЗНАНИЯ ...
CVAVR - самый "дружественный", но и самый неуважаемый (на мой взгляд, не заслуженно) проффессиональными (пишушими программы за деньги) программистами. (я "пишу" на нём, хотя "знакомился" со всеми перечисленными). Мой совет начать именно с CVAVR. Если он вас по каким-либо причинам "не устроит" - "пойдете" дальше, но скорее всего "вернетесь" назад..
Есть еще альтернатива - AB (АлгоритмБилдер).. Хоть автор и позиционирует его как ассемблер - это достаточно удобная и понятная графическая система разработки программ. В ней есть возможность работать и с массивами, и с указателями (косвенной адресацией), и даже создавать структуры. Единственное "НО" - это "своеобразная" графика.. (требует "привыкания")..
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
вопрос по отладчику IAR AVR to kison
|
picavr |
Микроконтроллеры, АЦП, память и т.д |
36 |
28.04.2009 18:01 |
Вопрос по ШИМ на нулевом таймере AVR.
|
chapa |
Микроконтроллеры, АЦП, память и т.д |
10 |
09.02.2009 18:31 |
Обработка нескольких прерываний AVR (вопрос)
|
festoon |
Микроконтроллеры, АЦП, память и т.д |
27 |
17.11.2008 18:02 |
GNU GCC AVR вопрос по переменным..
|
Mozart |
Микроконтроллеры, АЦП, память и т.д |
3 |
09.02.2007 20:00 |
Вопрос по асемблеру к AVR
|
Гость |
Микроконтроллеры, АЦП, память и т.д |
2 |
12.09.2005 00:47 |
Часовой пояс GMT +4, время: 02:23.
|
|