|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 2:00 am
PIC 16F84 BSF С ПРОМЕНЛИВА ЗА БИТА
| Автор |
Съобщение |
|
eddiesoft
Ранг: Минаващ
Регистриран на: Нед Фев 04, 2007 5:44 pm Мнения: 90
|
Благодаря ти Dimitar, само че аз тъпия дето си нямам представа от асемлер успях да го направя това което Вие умните ме убеждавате , че е било невъзможно... Вярно , че се занимвам от 2 дена с асемблер, но за два дни май успях да постигна нещо което всеки ме убеждава че е невъзможно. На мен никога не ми се беше налагало да използвам регистрите по този начин до сега , и когато попитах за нещо конкретно я погледни дали има конкретен отговор или всичко е само обща теория за асемблер и пикове...  И всеки пише по какв друг начин мойе да стане ... Мисля , че няма някой който да се занимава с пикове и да не знае стандартните начини .
Аре стига толкова глупост. Няма ли някой който да изтрие цялата тема...
Обърнахме го на караница.
За последен пат се спирам на моята програма и тук мисля да не пиша повече. В общи линии имам няколко датчика които са 1-wire закачени на една линия. Всичко си работеше много добре докато реших да преместя единиа на друг пин на пика. И за да не преправям тотално около 400-500 реда код реших да пробвам нещо по-нестандартно. Е.. все пак стана с предефиниране на константите, а не с преправяне на толкова код, че и с една камара сметки колко операции са изваршени и колко нопа трябва да сложа или да викам директно подпрограма за закъснение и колко да бъде то.
EDDIESoft
|
| Чет Юни 28, 2007 4:39 pm |
|
 |
|
valioman
Ранг: Почетен член
Регистриран на: Съб Сеп 17, 2005 5:07 pm Мнения: 813 Местоположение: Сливен
|
Дано клиента ти е търпелив и непретенциозен че така както си я подкарал......... с писане във флаша повреме на работа на процесора ........ не ми се мисли след година работа на бъдещето ти устройство какви ще са резултатите
Ама какво да се прави жегата размътва мозъците на хора като нас  )) особенно на новобранците ..
|
| Чет Юни 28, 2007 5:21 pm |
|
 |
|
Dimitar
Ранг: Форумен бог
Регистриран на: Пет Ное 12, 2004 3:38 pm Мнения: 9103 Местоположение: Chicago, IL
|
Какво си постигнал, дето те убеждаваме, че е невъзможно - направи си програмата, като смени константата, а не като използваше променлива. Я се върни на първия си пост да видиш какво си питал и тогава ми разправяй какви невъзможни неща си постигнал. Баси - много обичам такива като теб, дето питат нещо и после почват да разправят на хората, дето им отговарят колко са се объркали. В крайна сметка пък всеки си е свободен да си мисли и прави каквото иска, така че успех от тук нататък в правенето на "невъзможни" неща  .
|
| Чет Юни 28, 2007 5:22 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
|
| Чет Юни 28, 2007 6:25 pm |
|
 |
|
i_dachev
Ранг: Новодошъл
Регистриран на: Вто Ное 16, 2004 3:29 pm Мнения: 108 Местоположение: София
|
 |  |  |  | eddiesoft написа: Благодаря ти Dimitar, само че аз тъпия дето си нямам представа от асемлер успях да го направя това което Вие умните ме убеждавате , че е било невъзможно... Вярно , че се занимвам от 2 дена с асемблер, но за два дни май успях да постигна нещо което всеки ме убеждава че е невъзможно. На мен никога не ми се беше налагало да използвам регистрите по този начин до сега , и когато попитах за нещо конкретно я погледни дали има конкретен отговор или всичко е само обща теория за асемблер и пикове...  И всеки пише по какв друг начин мойе да стане ... Мисля , че няма някой който да се занимава с пикове и да не знае стандартните начини . Аре стига толкова глупост. Няма ли някой който да изтрие цялата тема... Обърнахме го на караница. За последен пат се спирам на моята програма и тук мисля да не пиша повече. В общи линии имам няколко датчика които са 1-wire закачени на една линия. Всичко си работеше много добре докато реших да преместя единиа на друг пин на пика. И за да не преправям тотално около 400-500 реда код реших да пробвам нещо по-нестандартно. Е.. все пак стана с предефиниране на константите, а не с преправяне на толкова код, че и с една камара сметки колко операции са изваршени и колко нопа трябва да сложа или да викам директно подпрограма за закъснение и колко да бъде то. EDDIESoft |  |  |  |  |
Можели да ни покажеш какво си написал на ASM и на друг език, който ползваш, защото това което казва Dimitar е вярно и спор няма.  |  |  |  | Dimitar написа: eddiesoft - от всякъде се видя, че си нямаш понятие от асемблера на пиковете, нито какво е това опкод и как стават нещата там. Така, че раздавай го малко по-леко с поученията, защото на следващия ти тъп въпрос никой няма да отговори. Факт е, че всички бяха много внимателни и се опитаха да ти обяснят защо неможеш да променяш ПРОГРАМНАТА ПАМЕТ в хода на изпълнение на програмата, ама ти си знаеш твоето. bsf f,b - и трите неща са константи в тая памет и неможеш да ги променяш посмъртно. Има си инструкции в тоя асемблер дето работят с регистри и клетки в рам-а, има си и такива дето работят с константи. В случая bsf e такава, дето работи с константа и въпреки твоите мераци, тя няма как да почне да работи с променлива. Та вземи да четеш книжките дето ги купуваш, вместо да ги снимаш и да ни ги показваш на нас, от които искаш съвети  . |  |  |  |  |
Но мисля че има огромни разногласия, интересно ми е това за което говори Dimitar как си го направил runtime да се променя.
Ако видим работещия код ще ни стане на всички ясно какво си искал да постигнеш и как си го постигнал щом ти върши работа.
Последна промяна i_dachev на Чет Юни 28, 2007 7:06 pm, променена общо 1 път
|
| Чет Юни 28, 2007 6:34 pm |
|
 |
|
i_dachev
Ранг: Новодошъл
Регистриран на: Вто Ное 16, 2004 3:29 pm Мнения: 108 Местоположение: София
|
 Re: PIC 16F84 BSF С ПРОМЕНЛИВА ЗА БИТА
Искам да видя какво си направил, защото от това което си написал
аз разбирам, че искаш да направиш това:
CHANGE(X) {
...
bsf PORTA, X
...
}
И викаш някъде из кода ти следното нещо:
...
call CHANGE(5);
...
call CHANGE(6);
...
|
| Чет Юни 28, 2007 7:01 pm |
|
 |
|
eddiesoft
Ранг: Минаващ
Регистриран на: Нед Фев 04, 2007 5:44 pm Мнения: 90
|
Иаааа учудващо. Някой е разбрал какво питам ... И то кой ме рабра?!!! Човек който не е с титлата "Форумен бог". Да i_dachev, това ми беше идеята дали може да стане. Писал съм го на асемблер който не разбирам и там нещата изглеждаха горе-долу така
movlw 1
movwf X
call change
movlw 0
movwf X
call change
...
change
...
bsf PORTA,X
....
bcf PORTA,x
....
return
А цялата дандания стана по простата причина, че бяха закачени два датчика (един температурен и един RTC) на PORTA,0 и всичко си работеше перфектно (като изключим че си играх с времената с по някоя и друга микросекунда за да тръгнат и дяата стабилно). В един момент понеже ми остана един свободен крак на процесора реших да преместя там единия датчик за да намаля кода на програмата ( пропускам четенето на серийните номера в този случай) и уви се сблъсках с този проблем. До сега за толкова време не ми се беше налагало да използвам някой регистър по този начин. Използвам си традиционните начини с маски ротации, и т.н. които в по-горните постове накои подробно обясняват. Да , с тях става, но трябва да се променя доста код в моя слуай, а аз реших да го избягна това. В интерес на истината устройството вече е предадено на клиента и си работи с двата датчика на една линия още по средата на спора ни тук. платките така или иначе бяха направени така че да са и двата датчика на една линия .
С увайение към "Форумните богове"
EDDIESoft
|
| Пет Юни 29, 2007 12:51 pm |
|
 |
|
Predator_MF
Ранг: Форумен бог
Регистриран на: Чет Окт 07, 2004 1:22 pm Мнения: 1949 Местоположение: София
|
Явно всичките mikroPascal-ци са такива инати
Човек като ти чете мненията да се чуди наистина ли си на 38...или на 15, само 15 годишен би се издразнил или впечатлил от лейбъла под броя мнения, аз лично видях отговор на въпроса ти още в първото мнение, видях го и още много пъти след това.
Последна промяна Predator_MF на Пет Юни 29, 2007 6:09 pm, променена общо 1 път
|
| Пет Юни 29, 2007 1:32 pm |
|
 |
|
i_dachev
Ранг: Новодошъл
Регистриран на: Вто Ное 16, 2004 3:29 pm Мнения: 108 Местоположение: София
|
Еddiesoft но как си го направил наистина  ако не е тайна?
Мисля че разбра, че няма как да накараш по-време на изпълнението
да се смени програмната памет за това не става толкова лесно.
(то има как ама не е целесъобразно и не на всички PIC-ове става)
Според мен става така ако не искаш да го правиш с маски и други отделни променливи:
if (X == 0) {
bsf PORTA, 0;
} else if (X == 1) {
bsf PORTA, 1
}
(естествено if-овете са на ASM аз ги написах така за по прегледно)
|
| Пет Юни 29, 2007 2:06 pm |
|
 |
|
darkyp
Ранг: Ориентиран
Регистриран на: Пон Дек 12, 2005 6:03 pm Мнения: 263 Местоположение: София
|
гледам, гледам темата и не се сдържах да не пиша  не мога да се начудя на eddiesoft, ама в един момент ми щракна как го е направил - сигурно е хванал някой неизвестен бъг на PIC-овете превърнал се във feature
А може би PIC-а е изпаднал в някаква недетерминираност, която незнайно защо, работи точно както го искаш да работи и точно както си го представяш.
Сериозно eddiesoft, виж там, прочети нещо за PIC-овете, особено глава instruction set. Не те знам на какво си писал друго освен на асемблер-а от два дни, но има някой фундаменти, които трябва да си припомниш.
|
| Пет Юни 29, 2007 2:15 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
До колкото разбрах - пита: дали PIC имат индексно(променлива) адресиране на битовe.... за съжаление НЯМАТ(много малко контролери подържат такава далавера)
bsf PORTх, BIT ( BIT винаги е константа )
|
| Пет Юни 29, 2007 2:17 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Абе казвам ви аз да му се поклоните а не да се пробвате акъл да му давате ама никой не слуша  :)
Човека програмно промени хардуера на пика. Къде сте тръгнали вие
И не му се сърдете че е раздразнителен,гениите са ексцентрични. Така пише по книгите  :)
|
| Пет Юни 29, 2007 2:27 pm |
|
 |
|
valioman
Ранг: Почетен член
Регистриран на: Съб Сеп 17, 2005 5:07 pm Мнения: 813 Местоположение: Сливен
|
|
| Пет Юни 29, 2007 3:54 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
Хи-хи, тази сутрин се развеселих от тази тема
Като идея да може да се променя бита в операнда по време на работа е готина идея. Ще трябва да се предложи на МайкроЧеп 
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Пет Юни 29, 2007 4:34 pm |
|
 |
|
mountaineer
Ранг: Популярен
Регистриран на: Съб Дек 10, 2005 11:44 am Мнения: 326 Местоположение: Lake Geneva Shoreline
|
Хм, това ако наистина е проработило е голям парадокс. Откога F84 може да си пише по флаша? И откога асемблера разбира такива "променливи"?
_________________ Manners maketh man.
|
| Пет Юни 29, 2007 6:40 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 1 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|