Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

въпрос за port b
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=261
Страница 1 от 2

Автор:  elektronchika [ Чет Дек 30, 2004 10:01 pm ]
Заглавие:  въпрос за port b

мъча се да пиша програми на CCS и искам да направя бягаща всетлиина с 16ф84а, но не знам как да дадинирам port b, в смисъм, искам да завъртя съдържанието му например надясно с функцията rotate_roght(?, ?) - та въпросът ми е какво трябва да се напише на "?, ?". написах го така rotate_right(port_b, 8), но ми изкарва undefined identifier port_b. това ме води на мисълта, че трябва да до дефинирам преди това. ето го целия ми код

#include<16f84a.h>
#use delay(clock=4000000)
main() {
set_tris_b(0x00);
output_high(PIN_B0);
while(TRUE) {
rotate_right(port_b, 8);
}
}

може би имам грешка някъде. може ли да ми помогнете?

Автор:  Dimitar [ Чет Дек 30, 2004 10:05 pm ]
Заглавие: 

Виж как е дефиниран в 16f84a.h. И сложи някъкво закъснение след това rotate, щото трудно ще видиш как бягат светлините.

Автор:  elektronchika [ Чет Дек 30, 2004 11:10 pm ]
Заглавие: 

гледах, пак гледах, не виждам да е написано някъде. пробвах с portb, port_b, port b, ама никое не става. ти как би го направил. сигурен съм че го знаеш, но се правиш на разсеян.

Автор:  Dimitar [ Чет Дек 30, 2004 11:30 pm ]
Заглавие: 

Не се правя на разсеян, предполагам (не съм ползвал тоя компилатор), че трябва да е дефиниран в h файла. Ако не е - си го дифенирай, или пък във функцията му напиши адреса направо (ако не се лъжа 0x06).

Автор:  Predator_MF [ Пет Дек 31, 2004 1:14 pm ]
Заглавие: 

Във дефинициите на програмата добави следното:
Код:
#byte port_b = 0x06;
.
Оттук нататък всяка стойност която даваш на port_b ще се записва директно във регистър 0x06 (това е физическия адрес на port B)... Примерно:
Код:
port_b = 0b00000001; //RB7..1 = 0, RB0 = 1


Инструкциите rotate_left/rotate_right имат следния синтаксис:

Цитат:
rotate_left (address, bytes)
rotate_right (address, bytes)
.
Така де, 'address is a pointer to memory' го пише в хелпа на CCS-а...това значи че там трябва да поставиш показател към адрес (т.е 0x06, или както вече е дефинирано "port_b")... Това е начина....А ако искаш по-лесно и бързо да научиш CCS-а ти препоръчвам да си изтеглиш plug-in-а за MPLAB, за да можеш да симулираш работата на контролера докато си пишеш...Аз така почнах, щото имах проблеми.....той CCS-а понякога не прави това което трябва....

Автор:  elektronchika [ Пет Дек 31, 2004 2:30 pm ]
Заглавие: 

rotate_left(address, bytes) - на мястото на bytes какво трабва да напиша, защото ми искарва някаква грешка. пробвах с 0, 1 ,8, ама не става. можеш ли да ми обясниш малко по-подробно. то се видяло че от мен програмист няма да стане, но поне искам да имам обща представа. от къде може да си изтегля plug-in-а за MPLAB. аз MPLAB я имам. версията и е 6.20, нали ще ми свърши работа? ако може дай линк към plug-in-а. а как да дефинирам portA. какъв му е адресът?

Автор:  Dimitar [ Пет Дек 31, 2004 2:39 pm ]
Заглавие: 

elektronchika написа:
rotate_left(address, bytes) - на мястото на bytes какво трабва да напиша, защото ми искарва някаква грешка. пробвах с 0, 1 ,8, ама не става...

Трябва да е колко пъти искаш да въртиш в съответната посока, т.е. при 1 - RB0 отива на RB1 или RB7 в зависимост от посоката, при 2 - на RB2 или RB6 и т.н.

Автор:  Predator_MF [ Пет Дек 31, 2004 2:44 pm ]
Заглавие: 

Простичко: rotate_left(port_b,x) - завърта port_b 1-път на ляво в рамките на x байта.....Трудно ми е точно в момента да го обясня (31 декември е :lol: )...Напиши 1 там, пък догодина ще ти обясним...просто е повервай...Ако питаш мене - остави тая работа и заминавай да празнуваш...

Автор:  elektronchika [ Пет Дек 31, 2004 3:36 pm ]
Заглавие: 

а може ли да ми дадеш само едно линк-че към plug-in-а за MPLAB 6.20, дето стана на дума по-горе, че имам доста свободен трафик, а днес е последният ден от месеца, а съм си платил вече интернета и не искам да си губя байтовете. и какъв е адреса на porbA? само това искам. мерси!

Автор:  Dimitar [ Пет Дек 31, 2004 3:41 pm ]
Заглавие: 

elektronchika написа:
...и какъв е адреса на porbA?...

0x05. Ти Acrobat Reader знаеш ли случайно какво е 8) ?

Автор:  elektronchika [ Пет Дек 31, 2004 4:02 pm ]
Заглавие: 

в смисъл? знам какво е. защо?

Автор:  ToHu [ Пет Дек 31, 2004 4:24 pm ]
Заглавие: 

Ами изтегли и прочети pdf-а за съответниа процесор, ам си пие всичко относно адреси ..... и разни други неща които е задължително да знаеш за да работиш с микроконтролера

Автор:  elektronchika [ Пет Дек 31, 2004 4:52 pm ]
Заглавие: 

аз го имам datasheet-а, но се чудех какви са тези адреси. е, вече знам. информацията ви ми беше много полезна. благодаря!

Автор:  elektronchika [ Съб Яну 01, 2005 8:15 pm ]
Заглавие: 

аз вече plug-in си изтеглих, но след като го инсталирах и направих отметката на mlpab-а за ccs какво трабва да направя, за да мога да го ползвам. малко не мога да се оправям с тези програми, така че ако някой може да ми помогне, няма да е зле. благодаря!

Автор:  Mozfet [ Нед Яну 02, 2005 9:47 pm ]
Заглавие: 

Електрончика, ще ти кажа, че CCS не е кой знае колко, удобен за работа компилатор. Ок мощен е, но повечето му екстри просто не се ползват. В някои отношения ми се вижда недодялан.
Много по-удобен за работа е mikroPascal. Безплатната версия компилира до 2 KB HEX, което ще ти е достатъчно според мен. Там няма да ти се налага да пишеш излишни редове като:
#byte PortB = 0x06;
защото компилатора много добре си знае какво е PortB.

Страница 1 от 2 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/