Отговори на тема  [ 12 мнения ] 
Въпрос за CCS команда 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Нед Юли 22, 2007 8:57 pm
Мнения: 607
Местоположение: Белград
Мнение Въпрос за CCS команда
Какво вършат следните CCS команди:
bit_set(data[2-j],7-i);
bit_clear(data[2-j],7-i);

Командите са в тялото на цикъл, но в случая мисля, че това няма особено значение.

Някой може ли да даде заместващ код?
Адаптирам CCS програма към моя компилатор и само тази част ми остана като бяло петно.

_________________
http://www.szrefekt.com


Съб Сеп 17, 2016 2:03 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 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
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Нед Юли 22, 2007 8:57 pm
Мнения: 607
Местоположение: Белград
Мнение Re: Въпрос за CCS команда
Благодаря!
Е, вика се един-единствен път в програмата. Ще спестя няколко реда с директно внасяне.
Значи, едната сетва, а другата нулира съответния бит на data[]?

_________________
http://www.szrefekt.com


Последна промяна E1 на Съб Сеп 17, 2016 2:33 pm, променена общо 1 път



Съб Сеп 17, 2016 2:10 pm
Профил WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Нед Юли 22, 2007 8:57 pm
Мнения: 607
Местоположение: Белград
Мнение Re: Въпрос за CCS команда
A loadvalue има ли някакво специално значение? Използва се в програмата без да е дефинирано никъде и при мен дава грешка по тази причина.

_________________
http://www.szrefekt.com


Съб Сеп 17, 2016 2:26 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 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

_________________
https://github.com/slav4ocom/


Съб Сеп 17, 2016 4:50 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Юни 03, 2005 9:39 pm
Мнения: 2277
Мнение Re: Въпрос за CCS команда
slav4o.com написа:
... Просто тия стрелкички ветропоказателните ме побъркват. Се едно перфокарта чета после, не програма...

Нарисувай си го.
На Цецо първият ред - местиш наляво 1 7-i пъти, след това правиш ИЛИ със стойонстта, т.е. установяваш в 1 битчето намиращо се на позиция 7-i.
На Цецо вторият ред - местенето наляво по-горе, след това инвертиране, т.е. битчето на позиция 7-i става 0, след това И -> нулира се бит 7-i.
Отделяш няколко минути за мислене и voila ;)

_________________
Определянето стойността на дадена величина се нарича ИЗМЕРВАНЕ! Опонентът се оборва с ФАКТИ, а не с ЕПИТЕТИ!


Съб Сеп 17, 2016 7:17 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Нед Юли 22, 2007 8:57 pm
Мнения: 607
Местоположение: Белград
Мнение Re: Въпрос за CCS команда
slav4o.com написа:
и аз съм правил програма по този начин...


Смях се от сърце за "ветропоказателните стрелкички". :D Наистина, ако подпрограмата се извиква поне два пъти, по-добре е да се отдели. В случая е безсмислено - само излишно писане.
По програмата всичко е ясно. Контролерът подава тактови импулси и за всеки тактов импулс чете какъв бит връща подчиненото устройство(слейвът). Отговорът е три байта(0-2) и затова се налага местене и на байтовете с данни. bit_set и bit_clear са в телата на if-else и проверяват какво е състоянието на линията за данни, като създават масив от трите байта data[3]. Аз лично ще направя четене на 24 последователни бита. Не виждам защо трябва да се създават байтове, а после да се "опаковат" заедно... ако не ме домързи да си играя, разбира се.

_________________
http://www.szrefekt.com


Съб Сеп 17, 2016 9:05 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 8:04 pm
Мнения: 2663
Местоположение: София / Велико Търново
Мнение Re: Въпрос за CCS команда
Мене лично за някои работи ми е удобно направо на асемблер да работя. Например имам PLL синтезатор TSA5511 и за да го запусна в определен режим трябва да се сетнат еди си кои си битове. По принцип "C" е измислено за писане на програми на компютри, донякъде математици, а не за "щракачи на битове". На асеблер обаче е трудно да направиш пресмятането за деленето на честотата върху опорната честота и така да се пресметне делителя. При тебе може да се направи цикъл 24 пъти да прочете входния пин на процесора. Думата "байт" даже да не я знаеш какво значи. Не случайно на PICовете има структури един си кой регистрър, примерно ТMR1CONbits.нещоси (нещо си е номер на бит в регистъра) и трябва да се щракне, за да тръгне таймера. Чисто и просто някакъв бит, групиран с други седем, защото паметта е 8 битова, не че образуват някакво смислено число.

_________________
https://github.com/slav4ocom/


Нед Сеп 18, 2016 2:16 am
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Нед Юли 22, 2007 8:57 pm
Мнения: 607
Местоположение: Белград
Мнение Re: Въпрос за CCS команда
Така де. Точно това имам предвид. ;)

_________________
http://www.szrefekt.com


Нед Сеп 18, 2016 12:27 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 1:01 pm
Мнения: 2251
Мнение Re: Въпрос за CCS команда
Ами за такива случаи има структури от данни! Правиш си една структура от променливи с необходимия брой битове всяка и готово! Сетваш си ги, както се решиш! Ако не прекалявате с размера на самата структура работи прилично бързо! Конкретно за CCS има 3-4 начина да се работи с битове освен структури. Въпрос на предпочитание! Аз лично не съм поглеждал асемблер от години! Просто не си заслужава главоболията.
Поздрави!

_________________
www.elkran.com


Нед Сеп 18, 2016 1:27 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 1:48 pm
Мнения: 4906
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение Re: Въпрос за CCS команда
slav4o.com написа:
.... По принцип "C" е измислено за писане на програми на компютри, донякъде математици, а не за "щракачи на битове". На асеблер обаче е трудно да направиш пресмятането за деленето на честотата върху опорната честота и така да се пресметне делителя. .....
. Думата "байт" даже да не я знаеш какво значи........
Чисто и просто някакъв бит, групиран с други седем, защото паметта е 8 битова, не че образуват някакво смислено число.

Мъка мъка.
Какво сложно нещо е това байтът рабираш ли....

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Пон Сеп 26, 2016 11:31 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение Re: Въпрос за CCS команда
Детската градина. И ние сме били такива, айде....

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Вто Сеп 27, 2016 8:58 am
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 12 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 10 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни