Fórum témák
» Több friss téma |
...elegánsabban, bár a lényegen nem változtat:
Így egyszerűbb, de nem ez volt a feladat! Ebben nincs benne az x, aminek az értéke fordításkor nem feltétlenül ismert.
Akkor nem kérdés, hogy Slave státuszban (v. ö. #define STATUS_Slave ...) csak te lehetsz.
A valóságban igen, de a modulok Slavek...
igaz, bár általában én előre tudom (szeretem tudni), hogy melyik biteket tervezem/akarom vizsgálni, ami nem zárja ki, hogy szükségem lesz valamikor dinamikusan vizsgálni egy-egy bit állapotát.
![]() az általad említtt k&r féle c könyv alapmű, mindenkinek javaslom aki c-vel ismerkedik. annó 25-26 éve én is abból tanultam, a mai napig a polcon mosolyog
Igen, ezt én is néztem és nekem is azt sugallta
, de mivel még nem használtam, ezért elolvastam a leírást, ott benne volt, hogy a header fájlban konfiguráljam ( lehet, hogy ezt is a headerben olvastam )!Milyen C-t ajánlanál akkor, hogy átláthatóbb, ingyenes ( oktatáshoz ) és jó könyvtárszerkezetes legyen ( nekem tetszett a mikroc, de itt a listán nem ajánlották, így nem választottam ( a példák pedig nagyon jók benne! )?! Köszönöm az eddigi segítségeteket! Steve
Én eddig csak a Microchip fordítóit használtam huzamosabban. A gyári könyvtárait nem muszáj használni.
Idézet: Újabb próbákat végeztem a "gyári" LCD rutinokkal, s úgy tűnik, hogy megy 4 és 8 bites módban is. (mellékelem a tesztprogramot)„De az inicializálás nem tökéletes, néha előfordul, hogy szemeteket ír ki!” Úgy tűnik, hogy a korábban említett inicializálási bizonytalanságokat érintkezési problémák okozzák (a kínai repülő zsinórok a precíziós header-ben is lötyögnek ).
Hello
Volna egy olyan problémám, hogy a diakjaimmal szeretnénk egy versenyen indulni PIC 16f877 es-el készített gömb-propeller óra,animásióval. Ők eddig tanultak Pascalt, most pedig ismerkednek a c-vel. Nekem van egy ChipCad demo panelom 1.2v és hozzá egy ősrégi Mplab ICD, ami sajna csak Mplab 5.5 ből működik. A kérdésem az volna hogy tud-e valaki olyan leírást ami pic c-re vagy Pic Pascalra, van, illetve ismere valaki olyan forditót, ami jól fordíja át asm-re a pascal, vagy c file-t, mert amikor a MikroPascal-al kigenerált asm filet áthúzom az Mplab-a az nem fogadja el, létezik egy oldal ami ezen akarna segiteni (http://www.micro-examples.com/public/microex-navig/doc/095-asm-translator.html) de nem jól dolgozik. Nekem Asemmbly-ben jól megy a programozás, de a gyerekeknek az kinai... valakinek van valamilyen ötlete? Hogyan tudnánk illetve mivel, irni programot, és utánna átküldeni az mplab-ba az azzal készült asm file-t? Kösz
PIC C COMPILLER
Nekem bevált. Sajnos nem tudom honnan lehet letölteni. Ha kell küldj egy e-mailt és zip ben elküldöm.
Miért nem tanítod a gyári fordítókat(C, ASM)? Lehet, hogy hosszú távon megéri, a gyerekek hálásak lesznek!
Ha van a kártyán soros port (vagy ahhoz hasonló), akkor a régi MPLAB+ICD-vel tegyél rá egy bootloadert AN1310 alapján, s utána áttérhetsz egy modernebb MPLAB-ra, amiben van HiTech C fordító. De kis ügyességgel talán a MikroPascal-lal is összebarátkoztatható.
Mellesleg Pascal ismeretekkel esetleg a JAL is számításba jöhet... :smoke: Bővebben: Link
Sziasztok!
A segítségeteket szeretném kérni abban, hogy hogyan lehet egy tömb adatmemóriabeli kezdőcímét megadni C-ben? A pic, amit programozgatok az egy 16F628A-s, a fordító a Hi-Tech C. Ami parancsot én tudok, az csak bájtos változó elhelyezésére jó (pl: volatile unsigned char chKarakter @ 0x70 , sajnos tömbre nem. Kerestem a fordító kézikönyvében is erre utasítást, de nem találtam semmit.
a tömb első elemének címe.
@cue: Nem kideriteni, hanem megadni szeretne Atieketro a tomb kezdo cimet.
Mehany gondolat ezzel kapcsolatban: 1. Tipikusan magas szintu nyelven az ember nem szeretne a valtozok ill tombok kezdo imet meghatarozni. Arra valo a fordito es a linker, hogy azokat szepen elhelyezze. Az egyetlen kivetel amikor a harver miatt van erre szukseg, pl a port vagy egyeb specialis regiszterek cimei, de azok mar tobbnyire ugyis definialva vannak 2. Hi-Tech-et nem ismerem annyira, de pl Microchip forditonal ezt linker scripttel szokas megadni. Tehat letre kell hozni egy speci szekciot csak es kizarolag a tomb reszere, es pragmaval megadni hogy a tombnek hova kell kerulnie. Ezt a Microchip fordito doksijaban a nagy meretu tombok definialasanal targyalja. Lehet Hi-Tech-ben is igy van valahogy... 3. A 'volatile' nak igen keves koze van a valtozo helyenek meghatarozasahoz, az csak amiatt szokott a specialis regiszterek deklaraciojanl ott lenni, hogy a fordito ne probalja meg a kodot kioptimalizalni. Nem lenne pl jo ha egy port iras helyett a fordito ugy gondolna gyorsabb a kod ha a WREG-ben tarolja az erteket el...
igazad van, túl sokszor magyaráztam már a pointerek és tömböket, rutinból válaszoltam sablonnal
Igazad van. Túl nagy értelem nem lett volna, ha én mondom meg a tömb kezdőcímét, csak asm-ben megszoktam, hogy a változóimat a minden Bank-ból elérhető memóriaterületre rakom.
A volatile-t nem is a címmel kapcsolatban írtam, de az tény, hogy 100%-ban nem voltam képben annak használatával. Köszi a példát rá, ez jól jött. Meg amúgy is köszi a segítséget! Azért cua-nak is köszönöm, még ha nem is arra válaszolt amire én gondoltam. Értékelem a szándékot is
Ah, ertem mit szeretnel. Mint mondtam nem ismerem a Hi-Tech-et, de a leirasaban ezt talaltam:
Magyaran 'near' kulcsszoval lehet a tombodet az access ram teruletere kenyszeriteni - de meg akkor is ha a tomb tul nagy lehet a fordito (ill. a linker) megis ugy dont, hogy azt a bigdata-ra helyezi...
Kezdek összebarátkozni ezzel a C-vel, már megy portról is a megszakítás.
Elszóltam magam. Case elágazásba lehet if-et ágyazni?
Konkrétan így...:
Mert úgy látszódik, hogy nem akar működni, de ha ez így jó, akkor máshol van a hiba.
Miért ne lehetne? Maximum sikerült összehoznod egy olyan feltételt, ami sohasem teljesül...
![]() Tegyél a végére egy default ágat is, hátha azt hiányolja.
Itt valami más baj van. Egyébként szoftveres pergésmentesítő lenne az RD1-en lévő nyomógombnak.
Aztán így lenne felhasználva:
Ha megnyomjuk a gombot az RD1-n, akkor növeli egyel a "kapcsolo" változót. Nekem az a cél hogy ha megnyomom a kapcsolót, akkor a ToSendDataBuffer[0] függvény értéke 12 legyen, ha nem akkor 13. De ha folyamatosan nyomom akkor is csak egyszer legyen 12 a függvény értéke, erre szolgál ez a pergésmentesítő. Viszont a "kapcsolo" változó értéke 1, akármit csinálok vele. Már mindent átnéztem, jól működik a port beolvasása is, mert akkor 1-et kapok ha le van nyomva a kapcsoló. ![]() Szerk.: lehet nem voltam valami érthető, de úgy tűnik hogy ez a nyavalyás switch nem akar működni, pedig máshol meg megy. Ez durva.E fene egye meg az apróbetűs részt, furcsa is volt nekem, de nem adott hibajelzést az MPLAB, írja is az egyik oldal, ahonnan "tanulgatok" : Idézet: „ Még egy figyelmeztető megjegyzés: a kezdő C programozók gyakran írnak = jelet ott, ahol == kellene. Amint ezt a 2. fejezetben látni fogjuk, az eredmény általában egy érvényes (de az adott helyen értelmetlen) kifejezés, így a fordítóprogram nem ad hibajelzést. ” Mégegyszer köszönöm szépen! :yes:
Eppen emiatt latni gyakorlott C programozoktol, hogy a feltetelt megcserelik, azaz:
if ( 1 == kapcsolo ) { ... } Tehat ha veletlen 1 db egyenlosegjel sikeredne oda, akkor a fordito hibaval leall... Ez termeszetesen csak akkor mukodik ha literalissal (szammal pl jelen esetben az 1) vagy konstanssal (aminek tartalmat nem tudod altoztatni) hasonlitod ossze a valtozod.
Ezt lehet én is így fogom csinálni.
Köszi neked is!
Sziasztok azt szeretném megkérdezni, hogy C-ben, hogyan kell az LCD-t vezérelni és deklarálni BASIC-ben már egész jól otthon vagyok de most szeretnék áttérni egy komolyabb nyelvre.
Szia!
Ajánlom neked a mikroc pro for pic-et. Bővebben: Link Teljen jól használható, a help-je tele mintapéldákkal és kapcsolási rajzal is, többekközt az LCD vezérléssel is. A fordító 2k- ig ingyenes! |
Bejelentkezés
Hirdetés |




, de mivel még nem használtam, ezért elolvastam a leírást, ott benne volt, hogy a header fájlban konfiguráljam ( lehet, hogy ezt is a headerben olvastam
).

Ez durva.