| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Прекъсване на цикъл http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=9452 |
Страница 1 от 2 |
| Автор: | SteEely [ Нед Окт 23, 2011 7:28 pm ] | |||||||||
| Заглавие: | Прекъсване на цикъл | |||||||||
Здравейте опитвам се при натискането на бутон да светват 4 светодиода като при всяко натискане да светва следващия и като стигне 4-тия при следващо натискане да светне пак първия (да се опише кръг). Ползвам HI-Tech C компилатора. Светодиоди RB1,RB2,RB3, RB4 Как е най- оптимално да се реализира.
|
||||||||||
| Автор: | ToHu [ Нед Окт 23, 2011 9:36 pm ] |
| Заглавие: | Re: Проблем с бутон |
Най-лесният вариант е да имаш променлива която шифтваш с 1 когато достигне стойност 16 вместо да я шифтваш я правиш 2. Тази променлива директно я подаваш напорта. |
|
| Автор: | itso.t [ Нед Окт 23, 2011 9:46 pm ] |
| Заглавие: | Re: Проблем с бутон |
Със "switch" и "case" ми се струва, че ще е по-елегантен кода. Хубаво е състоянието на пина да го прехвърляш в променлива и да обработваш нея. Липсва софтуерно премахване на трептенията на контакта - debounce. Вместо побитово описване на четирите бита на изходите, може да го реализираш като "PORTB = 1, PORTB = 2, PORTB = 4, PORTB = 8" или както е описан съответния порт в хедър файла на компилатора. Някъде в кода трябва да си сетнал в "TRIS" кои пинове ще са вход и кои изход. |
|
| Автор: | michev [ Нед Окт 23, 2011 9:55 pm ] | |||||||||
| Заглавие: | Re: Проблем с бутон | |||||||||
Ето ти просто решение. Считай кода за ПСЕВДО КОД.. т.е не очаквай че ще тръгне с копи - пейст. Пиковете не са ми от силната страна
|
||||||||||
| Автор: | SteEely [ Нед Окт 23, 2011 10:27 pm ] | |||||||||
| Заглавие: | Re: Проблем с бутон | |||||||||
@ToHu не ми стана ясно какво имаш предвид @itso.t ето как ми изглежда кода за момента @michev RB0 ми е бутончето, но не успявам да схвана идеята ти
|
||||||||||
| Автор: | michev [ Нед Окт 23, 2011 10:49 pm ] | |||||||||
| Заглавие: | Re: Проблем с бутон | |||||||||
След като ти погледнах целия код, мисля че няма никакъв смисъл да обяснявам моя Да поговорим за твоя - Не ти виждам основния цикъл.. В момента програмата ти тръгва от началото на мейн функцията и приключва след точно 1 изпълнение. В мейн функцията трябва да имаш безкраен цикъл - например с "while (1) { .... твоя код тук ... }". Фор-а който си написал не мога дори да го осмисля за какво е. Не му виждам къдравите скоби дори. Изобщо не ти трябва. Суич конструкцията ти е тотално грешна.. Ако трябва да преработим твоя код с твойта идея, то той би изглеждал поне малко по работещ в следния вид:
Сега един приятелски съвет - почети за езика С. |
||||||||||
| Автор: | syscop [ Пон Окт 24, 2011 3:09 pm ] |
| Заглавие: | Re: Проблем с бутон |
Що не си направиш една табличка ? |
|
| Автор: | itso.t [ Пон Окт 24, 2011 5:44 pm ] | |||||||||
| Заглавие: | Re: Проблем с бутон | |||||||||
Как го скастрихте човека... Явно чете, но сега започва. Темата май е за академията... |
||||||||||
| Автор: | michev [ Пон Окт 24, 2011 5:55 pm ] | |||||||||
| Заглавие: | Re: Проблем с бутон | |||||||||
Това не е скастряне а приятелски съвет. С какъв по "мек" тон може да се напише?! А и все някой трябва да му каже че не става хептен без четене.
За това си напълно прав. |
||||||||||
| Автор: | SteEely [ Вто Окт 25, 2011 1:29 am ] | |||||||||
| Заглавие: | Re: Проблем с бутон | |||||||||
Няма проблеми съгласен съм за четенето. Човек цял живот се учи, но кода който бях дал не беше такъв който съм пробвал, а такъв който драснах просто като пример( а колкото и да си учил преди С като не се ползва си отива). Ако модернаторите преценят нека да преместят темата в Академия. Ето го все пак кода реализиран според моето мислене
|
||||||||||
| Автор: | SteEely [ Сря Окт 26, 2011 11:41 pm ] | |||||||||
| Заглавие: | Прекъсване на цикъл | |||||||||
Моля ви дайте някаква идея как да го направя
|
||||||||||
| Автор: | bobyk [ Чет Окт 27, 2011 9:17 am ] |
| Заглавие: | Re: Прекъсване на цикъл |
Не знам дали критиката ще е градивна но, 1.Ти самия като си четеш кода осмисляш ли какво прави(ш) 2.По добре почни от начало, нарисувай си блок-схемичка, алгоритъм, такива неща и после го реализирай на какъвто ти кеф език. В момента ти не осмисляш какво правиш просто правих каквото и да е с надеждата да се получи някак си, ама погледнато отстрани се вижда че, пишеш без да имаш идея. На никой няма да му е проблем да ти напише кода, но смятам, че ще е по-полезно за теб сам да стигнеш до решението, оправи си начина на мислене, не е в езика проблема. П.П. По-горе ти дадоха достатъчно идеи. |
|
| Автор: | SteEely [ Чет Окт 27, 2011 11:17 am ] |
| Заглавие: | Re: Прекъсване на цикъл |
Аз не знам дали го осмисля ама ти май определено - НЕ. Кое те кара да мислиш, че кода е лишен от логика и е драснат просто ей така. От написаното от тебе пък аз стигам до извода че ти изобщо не си си направил труда да прочетеш какво съм написал, защото темата не е първоначалният първоначалният въпрос просто не исках да пускам нова тема. Проблема с четирите диода си го реших , но когато добавя времевите пакети out=1;DelayS(200);out=0;DelayS(50); тогава става проблем и просто исках някой да ми даде идея как да стане (а не да ме нападате и критикувате ) ама явно в този форум не стават нещата. И държа да отбележа, че НЕ търся copy-paste код. Просто искам идея (много ли е). |
|
| Автор: | itso.t [ Чет Окт 27, 2011 12:07 pm ] |
| Заглавие: | Re: Прекъсване на цикъл |
Обясни малко по-подробно какво искаш да направиш. |
|
| Автор: | bobyk [ Чет Окт 27, 2011 3:09 pm ] |
| Заглавие: | Re: Прекъсване на цикъл |
Добре да не спорим, да разбирам че искаш докато тече DelayS(100) например да не ти блокира бутона така ли? И не се засягай толкова ама кода ти е малко спагети-код, а и логиката също. |
|
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|