| Автор |
Съобщение |
|
E1
Ранг: Почетен член
Регистриран на: Нед Юли 22, 2007 8:57 pm Мнения: 607 Местоположение: Белград
|
 Въпрос за CCS команда
Какво вършат следните CCS команди: bit_set(data[2-j],7-i); bit_clear(data[2-j],7-i);
Командите са в тялото на цикъл, но в случая мисля, че това няма особено значение.
Някой може ли да даде заместващ код? Адаптирам CCS програма към моя компилатор и само тази част ми остана като бяло петно.
|
| Съб Сеп 17, 2016 2:03 pm |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
 Re: Въпрос за CCS команда
data[2-j] |= 1 << (7-i); data[2-j] &= ~(1 << (7-i)); примерно. Но ако си фен, ще си напишеш макрос и ще оставиш старите редове 
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Съб Сеп 17, 2016 2:07 pm |
|
 |
|
E1
Ранг: Почетен член
Регистриран на: Нед Юли 22, 2007 8:57 pm Мнения: 607 Местоположение: Белград
|
 Re: Въпрос за CCS команда
Благодаря! Е, вика се един-единствен път в програмата. Ще спестя няколко реда с директно внасяне. Значи, едната сетва, а другата нулира съответния бит на data[]?
Последна промяна E1 на Съб Сеп 17, 2016 2:33 pm, променена общо 1 път
|
| Съб Сеп 17, 2016 2:10 pm |
|
 |
|
E1
Ранг: Почетен член
Регистриран на: Нед Юли 22, 2007 8:57 pm Мнения: 607 Местоположение: Белград
|
 Re: Въпрос за CCS команда
A loadvalue има ли някакво специално значение? Използва се в програмата без да е дефинирано никъде и при мен дава грешка по тази причина.
|
| Съб Сеп 17, 2016 2:26 pm |
|
 |
|
slav4o.com
Ранг: Форумен бог
Регистриран на: Нед Яну 01, 2012 8:04 pm Мнения: 2663 Местоположение: София / Велико Търново
|
 Re: Въпрос за CCS команда
и аз съм правил програма по този начин. Сам си ги дефинирах тогава тези двете bit_set и bit_clear, даже и bit_check бях сложил. Просто тия стрелкички ветропоказателните ме побъркват. Се едно перфокарта чета после, не програма.... А това loadvalue какво е ? По принцип така както са написани data[2-j] е байт от някакъв масив с индекс 2 - нещоси(j), a бита който се манипулира е седми минус i т.е. не е седми а някой по-малък, примерно ако 5ти ако i = 2
|
| Съб Сеп 17, 2016 4:50 pm |
|
 |
|
syscop
Ранг: Форумен бог
Регистриран на: Пет Юни 03, 2005 9:39 pm Мнения: 2277
|
 Re: Въпрос за CCS команда
Нарисувай си го. На Цецо първият ред - местиш наляво 1 7-i пъти, след това правиш ИЛИ със стойонстта, т.е. установяваш в 1 битчето намиращо се на позиция 7-i. На Цецо вторият ред - местенето наляво по-горе, след това инвертиране, т.е. битчето на позиция 7-i става 0, след това И -> нулира се бит 7-i. Отделяш няколко минути за мислене и voila 
_________________ Определянето стойността на дадена величина се нарича ИЗМЕРВАНЕ! Опонентът се оборва с ФАКТИ, а не с ЕПИТЕТИ!
|
| Съб Сеп 17, 2016 7:17 pm |
|
 |
|
E1
Ранг: Почетен член
Регистриран на: Нед Юли 22, 2007 8:57 pm Мнения: 607 Местоположение: Белград
|
 Re: Въпрос за CCS команда
Смях се от сърце за "ветропоказателните стрелкички".  Наистина, ако подпрограмата се извиква поне два пъти, по-добре е да се отдели. В случая е безсмислено - само излишно писане. По програмата всичко е ясно. Контролерът подава тактови импулси и за всеки тактов импулс чете какъв бит връща подчиненото устройство(слейвът). Отговорът е три байта(0-2) и затова се налага местене и на байтовете с данни. bit_set и bit_clear са в телата на if-else и проверяват какво е състоянието на линията за данни, като създават масив от трите байта data[3]. Аз лично ще направя четене на 24 последователни бита. Не виждам защо трябва да се създават байтове, а после да се "опаковат" заедно... ако не ме домързи да си играя, разбира се.
|
| Съб Сеп 17, 2016 9:05 pm |
|
 |
|
slav4o.com
Ранг: Форумен бог
Регистриран на: Нед Яну 01, 2012 8:04 pm Мнения: 2663 Местоположение: София / Велико Търново
|
 Re: Въпрос за CCS команда
Мене лично за някои работи ми е удобно направо на асемблер да работя. Например имам PLL синтезатор TSA5511 и за да го запусна в определен режим трябва да се сетнат еди си кои си битове. По принцип "C" е измислено за писане на програми на компютри, донякъде математици, а не за "щракачи на битове". На асеблер обаче е трудно да направиш пресмятането за деленето на честотата върху опорната честота и така да се пресметне делителя. При тебе може да се направи цикъл 24 пъти да прочете входния пин на процесора. Думата "байт" даже да не я знаеш какво значи. Не случайно на PICовете има структури един си кой регистрър, примерно ТMR1CONbits.нещоси (нещо си е номер на бит в регистъра) и трябва да се щракне, за да тръгне таймера. Чисто и просто някакъв бит, групиран с други седем, защото паметта е 8 битова, не че образуват някакво смислено число.
|
| Нед Сеп 18, 2016 2:16 am |
|
 |
|
E1
Ранг: Почетен член
Регистриран на: Нед Юли 22, 2007 8:57 pm Мнения: 607 Местоположение: Белград
|
 Re: Въпрос за CCS команда
Така де. Точно това имам предвид. 
|
| Нед Сеп 18, 2016 12:27 pm |
|
 |
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 1:01 pm Мнения: 2251
|
 Re: Въпрос за CCS команда
Ами за такива случаи има структури от данни! Правиш си една структура от променливи с необходимия брой битове всяка и готово! Сетваш си ги, както се решиш! Ако не прекалявате с размера на самата структура работи прилично бързо! Конкретно за CCS има 3-4 начина да се работи с битове освен структури. Въпрос на предпочитание! Аз лично не съм поглеждал асемблер от години! Просто не си заслужава главоболията. Поздрави!
_________________www.elkran.com
|
| Нед Сеп 18, 2016 1:27 pm |
|
 |
|
MYXATA
Ранг: Форумен бог
Регистриран на: Пон Юни 05, 2006 1:48 pm Мнения: 4906 Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
|
 Re: Въпрос за CCS команда
Мъка мъка. Какво сложно нещо е това байтът рабираш ли....
_________________ ... ако трети ден не ти се работи... това означава, че е сряда !
|
| Пон Сеп 26, 2016 11:31 pm |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
 Re: Въпрос за CCS команда
Детската градина. И ние сме били такива, айде....
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Вто Сеп 27, 2016 8:58 am |
|
|