Fórum témák
» Több friss téma |
Hirtelen ezt a kodot vadasztam le a netrol:
Tudom, szebb lenne, ha C18 tamogatna a float-okat, de szegeny ember vizzel foz ![]()
Írsz egy függvényt, és máris csak egy utasítás.
![]()
Aaa, az fuggveny hivas, az nem jo
![]() ![]() Bocs, csak vicc akart lenni, semmi offenziva! Idézet: „MOVFF USART, "Hello World!"” Ez jópofa! Bár ha a függvényt így nevezem el, akkor talám még hasonlót is lehet csinálni! ![]()
Köszönöm!
Néhány hete kezdtem ismerkedni a C nyelvvel egyszerű kiváncsiságból, így elég alapvető dolgokkal nem vagyok még tisztában. És persze vannak túl egyszerű kérdéseim. Például:
Hogyan lesz itt b értéke 'A'?
Igen, kb. eddig a felimerésig jutottam, de azt hiszem jó úton járok...
![]()
Itt sehogyan sem, maximum az inicializálás hiánya miatt lesz b értéke 'A'
Nem volt pontos a kérdés. Mit kell tennem, hogy b karakter tipusú változó értéke egyenlő legyen abc[] rom tömb első elemével?
Hm... lehet, hogy a pointernek is rom tipusnak kell lennie....
És miként sikerült megoldani?
Ha char b; -t így magába hagyod a végén, az szerintem még mindig nem az igazi megoldás. Ugyanis a 739273 hozzászólásodban ott a char b; vonatkozásában a deklaráción kívül mást nem csináltál, tehát inicializálás, értékadás művelet nem látszik. Javítsanak ki engem a téma nagyobb tudorjai, ha nem jól gondolom. ![]()
Sziasztok!
Lenne egy amatőr kérésem. Most kezdek el PIC-el foglalkozni, a Kónya fél könyv alapján. Telepítettem az Mplab 8.20a-t és a C18 fordítót, 18F4550-el szeretnék bűvészkedni, létrehoztam a projektem, de nem találom a linkert... mondjuk a könyv azt írja, hogy az újabb verziókban már nem kell hozzáadni a *.gld fájlt. Ha a bulid all-ra kattintok a következőt dobja ki: ... MPLINK 4.30.01, Linker Copyright (c) 2009 Microchip Technology Inc. Error - could not find file 'c018i.o'. Errors : 1 ...
Első körben a friss telepítő használatát ajánlom. Jelenleg 8.53-nál tart a verziószám. :yes:
Egyébként ha jól emlékszek, akkor telepítéskor kell kiválasztani a C18 települését, bár lehetséges, hogy ez fixen integrálva van. Egyébként magát a C18 meglétét a Project menün belül a Set Language Tool Locations-ön belül ellenőrizheted, mégpedig a Microchip C18 Toolsuite / Executables lehetőségen belül. Ha ott mind a 4 fájlhoz van rendelve 1-1 elérési út /Location/, akkor működnie kéne szerintem a fordítónak. ![]()
Telepítés után az MPLAB még nem szokta tudni az elérési útvonalak egy részét, ezért gondosan be kell állítani a Projects/Set Language Toolset Location menüben (Include, Library és Linker script útvonalakat is!). Utána pedig minden új projektet a Project Wizard-dal hozz létre (amíg rá nem jössz, hogy a Notepad editorral gyorsabban megy egy meglevő projekt átszerkesztése
![]() Ha PIC18F4550-nel akarsz foglalkozni, akkor a Kónya könyv helyett/mellett inkább a PICCOLO projektet nézegesd! Tudtommal .gld fájl a C30-nál van. C18-nál .lkr a nyerő!
Most hozzáadtam a 18f4550.lkr-t, megnéztem az elérési utakat, azok jók voltak, de még mindig hiba van. Egyelőre a könyv alapján mennék, amíg egyszerűen átírhatók a könyv programjai 18f-re. Amit próbáltam fordítani az a könyvben mindjárt első program a hello world... de nem
A Project/Build Options, Directories fülön a legördülő menüben nincs beállítva helyesen a Library Search Path. Ez legyen: a telepítés helye\MCC18\lib. (Nálam: C:\MCC18\lib) Egyébként nem célszerű a projektet ékezeteket tartalamazó mappákba rakosgatni, volt már akinél ez gond volt.
Meg túl hosszú útvonalra sem. Egyébként sem értem ezt a Microsoft baromságot, hogy a dokumentumok mappát miért oda rakja alapból, ahová. Én egyszerűen D:\pic\projektek alatt tárolom a projekteket.
Igen, a hosszú útvonal sem célszerű, bár ebben az esetben még nem volt kritikus. Én is a C:\PIC mappába rakosgatom a projekteket, meg a fordítót is az alapértelmezett C:\MCC18 helyre telepítettem, biztos ami biztos alapon.
![]() Idézet: Már át vannak írva PIC18-ra! Bővebben: Link„Egyelőre a könyv alapján mennék, amíg egyszerűen átírhatók a könyv programjai 18f-re.” Letöltés: PicKit3_kieg.zip
En mikor meg csupasz windows-on dolgoztam a SUBST paranccsal rendeltem egy meghajto betujehez a project konyvtarat, es meghagytam az eredeti file-okat a My Documents-ben -- igy nem kellett figyelnem arra, hogy backupkor mas konyvtarakat is le kell mentenem, megis kicsi maradt az MPLAB szamara a projectek eleresi utvonala.
Mar par eve Linux a host gep es a VirtualBox-nal a shared folderrel jatszom hasonlo trukkoket, igy minenki boldog ![]()
Én meg nem tartok a C-n olyan cuccokat, amit le kellene menteni, Dokumentumok mappa is át van rakva a D-re és csókolom
![]() Amúgy régebben volt olyan, hogy subst-al létrehozott meghajtóról akartam telepíteni az MPLAB-ot, és valamilyen hibaüzenettel leállt a telepítő. Aztán áttettem a telepítőfájlokat sima meghajtóra, onnan már hajlandó volt települni. Máig nem értem, hogy mi köze volt hozzá, de tény, hogy nem ment.
A pointerekkel ismerkedem, de nem működtek úgy, ahogyan elképzeltem. Ezért az értékadás lett volna a kérdés.
Konkrétan rom karaktertömb tartalmát Morse jelekké alakítom. Tudom nem elég tömör, mert a szokásos szintaktika valamiért hibásan működik:
hát ha tudnánk mit kéne csinálni, és mi a hibajelenség...
elég tisztességtelen a két char változóra int-ként hivatkozni, szerintem nem garantálható, hogy egymás után helyezkednek el, definiálj int változót, és hivatkozz rá karakteres módon. szerintem a morse_rom(&abc); sem jó, ez az abc pointer címe lesz, csak morse_rom(abc); kellene. pointer átadásra inkább unsigned int-et használnék
Norberto kérdése volt, hogyan sikerült megoldanom a felvetett problémát azt részleteztem.
A főprogramból a rom tömb címét adom át egyszerű egészként, amiből a morse_rom -ban lesz pointer. Lehet hogy szokatlan, de ez így működik. Valóban unsigned a korrekt.
Ez tobb sebbol verzik. Nem ertem miert probalod a 8 bites unsigned chart 8 bittel leshiftelni? Valahogy igy kellene kineznie a kodnk:
![]()
Azért kellett shiftelni, mert adott pointer értékhez int tipusú eredmény tartozott. Így minden második karakter kimaradt volna. Előbb az alsó, majd a felső byte-ot küldtem ki.
Amit írtál nagyon szép és jól működik, köszönöm! Megpróbálom helyretenni magamban: Tehát a main-ból az abc globális változót (objektumot, pointert?) adjuk át a morse_rom függvénynek. Ott karakter tipusú rom pointerként értelmezzük, ami más modulból nem látszik (static). Az overlay char c pedig azt jeleni, hogy felülíródik a korábbi érték. Az overlay nélkül ez nem így lenne? Ez a két utóbbi elsősorban takarékosság miatt kell? Mivel a pointer char tipusú, akkor ez csak max 256 karakterig használható? (NEM. Azt hiszem akkor ez inkább romban elhelyezett karakterre mutató int pointer...)
Helló!
lehúztam a CCS C fordítót de sajnos nem kompatibilis a PICkit2-es programozóval. Nincsen véletlenül valamilyen kiegészítő vagy valamilyen más C fordító amely kezeli a PICkit2-es programozót? A választ köszönöm.
Hali
Le kell tolteni a CCS-tol egy programot ami a CCS C-t beilleszti a MPLAB-ba. Utana a MPLAB alol tudod hasznalni a forditot, es onnan tudod hasznalni a PK2-t is. Udv Vili
Aha erről tudtam csak a CCS C fejlesztőkörnyezetben ami egy külön program nem volt PICkit2 csak ICD.
Na mindegy akkor használom majd az MPLAB alól. |
Bejelentkezés
Hirdetés |