| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Въпрос за CCS команда http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=14783 |
Страница 1 от 1 |
| Автор: | E1 [ Съб Сеп 17, 2016 2:03 pm ] |
| Заглавие: | Въпрос за CCS команда |
Какво вършат следните CCS команди: bit_set(data[2-j],7-i); bit_clear(data[2-j],7-i); Командите са в тялото на цикъл, но в случая мисля, че това няма особено значение. Някой може ли да даде заместващ код? Адаптирам CCS програма към моя компилатор и само тази част ми остана като бяло петно. |
|
| Автор: | Цецо [ Съб Сеп 17, 2016 2:07 pm ] |
| Заглавие: | Re: Въпрос за CCS команда |
data[2-j] |= 1 << (7-i); data[2-j] &= ~(1 << (7-i)); примерно. Но ако си фен, ще си напишеш макрос и ще оставиш старите редове |
|
| Автор: | E1 [ Съб Сеп 17, 2016 2:10 pm ] |
| Заглавие: | Re: Въпрос за CCS команда |
Благодаря! Е, вика се един-единствен път в програмата. Ще спестя няколко реда с директно внасяне. Значи, едната сетва, а другата нулира съответния бит на data[]? |
|
| Автор: | E1 [ Съб Сеп 17, 2016 2:26 pm ] |
| Заглавие: | Re: Въпрос за CCS команда |
A loadvalue има ли някакво специално значение? Използва се в програмата без да е дефинирано никъде и при мен дава грешка по тази причина. |
|
| Автор: | slav4o.com [ Съб Сеп 17, 2016 4:50 pm ] |
| Заглавие: | Re: Въпрос за CCS команда |
и аз съм правил програма по този начин. Сам си ги дефинирах тогава тези двете bit_set и bit_clear, даже и bit_check бях сложил. Просто тия стрелкички ветропоказателните ме побъркват. Се едно перфокарта чета после, не програма.... А това loadvalue какво е ? По принцип така както са написани data[2-j] е байт от някакъв масив с индекс 2 - нещоси(j), a бита който се манипулира е седми минус i т.е. не е седми а някой по-малък, примерно ако 5ти ако i = 2 |
|
| Автор: | syscop [ Съб Сеп 17, 2016 7:17 pm ] | |||||||||
| Заглавие: | Re: Въпрос за CCS команда | |||||||||
Нарисувай си го. На Цецо първият ред - местиш наляво 1 7-i пъти, след това правиш ИЛИ със стойонстта, т.е. установяваш в 1 битчето намиращо се на позиция 7-i. На Цецо вторият ред - местенето наляво по-горе, след това инвертиране, т.е. битчето на позиция 7-i става 0, след това И -> нулира се бит 7-i. Отделяш няколко минути за мислене и voila |
||||||||||
| Автор: | E1 [ Съб Сеп 17, 2016 9:05 pm ] | |||||||||
| Заглавие: | Re: Въпрос за CCS команда | |||||||||
Смях се от сърце за "ветропоказателните стрелкички". По програмата всичко е ясно. Контролерът подава тактови импулси и за всеки тактов импулс чете какъв бит връща подчиненото устройство(слейвът). Отговорът е три байта(0-2) и затова се налага местене и на байтовете с данни. bit_set и bit_clear са в телата на if-else и проверяват какво е състоянието на линията за данни, като създават масив от трите байта data[3]. Аз лично ще направя четене на 24 последователни бита. Не виждам защо трябва да се създават байтове, а после да се "опаковат" заедно... ако не ме домързи да си играя, разбира се. |
||||||||||
| Автор: | slav4o.com [ Нед Сеп 18, 2016 2:16 am ] |
| Заглавие: | Re: Въпрос за CCS команда |
Мене лично за някои работи ми е удобно направо на асемблер да работя. Например имам PLL синтезатор TSA5511 и за да го запусна в определен режим трябва да се сетнат еди си кои си битове. По принцип "C" е измислено за писане на програми на компютри, донякъде математици, а не за "щракачи на битове". На асеблер обаче е трудно да направиш пресмятането за деленето на честотата върху опорната честота и така да се пресметне делителя. При тебе може да се направи цикъл 24 пъти да прочете входния пин на процесора. Думата "байт" даже да не я знаеш какво значи. Не случайно на PICовете има структури един си кой регистрър, примерно ТMR1CONbits.нещоси (нещо си е номер на бит в регистъра) и трябва да се щракне, за да тръгне таймера. Чисто и просто някакъв бит, групиран с други седем, защото паметта е 8 битова, не че образуват някакво смислено число. |
|
| Автор: | E1 [ Нед Сеп 18, 2016 12:27 pm ] |
| Заглавие: | Re: Въпрос за CCS команда |
Така де. Точно това имам предвид. |
|
| Автор: | stoyanoff [ Нед Сеп 18, 2016 1:27 pm ] |
| Заглавие: | Re: Въпрос за CCS команда |
Ами за такива случаи има структури от данни! Правиш си една структура от променливи с необходимия брой битове всяка и готово! Сетваш си ги, както се решиш! Ако не прекалявате с размера на самата структура работи прилично бързо! Конкретно за CCS има 3-4 начина да се работи с битове освен структури. Въпрос на предпочитание! Аз лично не съм поглеждал асемблер от години! Просто не си заслужава главоболията. Поздрави! |
|
| Автор: | MYXATA [ Пон Сеп 26, 2016 11:31 pm ] | |||||||||
| Заглавие: | Re: Въпрос за CCS команда | |||||||||
Мъка мъка. Какво сложно нещо е това байтът рабираш ли.... |
||||||||||
| Автор: | Цецо [ Вто Сеп 27, 2016 8:58 am ] |
| Заглавие: | Re: Въпрос за CCS команда |
Детската градина. И ние сме били такива, айде.... |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|