Fórum témák
» Több friss téma |
Idézet: Ez nem csak egyszer programozható véletlenül? „Van egy 12C508A-m”
Jó kérdés. Átnéztem az adatlapját, nem teljesen egyértelmű.
EPROM-ban tárolja a programot. Szerintem az is törölhető. Beszél az adatlap OTP PIC-ekről, de nem írja le, egyértelműen, melyik az.
Úgy néz ki, tényleg az (http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010103)
Mindegy, ha sikerül jól megírnom a progit, attól még használható. Van kettő - két próbálkozás. A kérdés ettől függetlenül fenn áll. Köszi a figyelmeztetést. Sample volt, tehát nem nagy kár érte.
Kettőből nekem se menne...
Az IO-kat a TRIS-el lehet beállítani.
Próbáltam. Ezt írja ki:
"15.1 undefined identifier "TRIS"" Nincs a header file-ban deklarálva. Valami hasonlót bele tehetnék: "TRIS equ 00xxh" A címet viszont nem találtam meg az adatlapban.
Nem tudom sajnos milyen portjai vannak a 12c508a-nak de például ha jol tudom akkor úgy kell, hogy
TRISA = 0x00; Nem tudom, hogy itt lehet-e külön de ha igen akkor úgy is megadhatod, hogy TRISA.0=0; ez csak az A port 0. bitjét állítja kimenetnek.
Én nem értek csak a 16f690-hez nameg a 18f2321-hez de ha modjuk a RA0 ás I/O portot szeretnéd kimenetre állítani akkor a TRISA 0. bitjét kell nullára állítanod.
Simán TRIS nincs szerintem 12C508A-nál sem. Még ha csak TRISA-ja van is. ![]()
Igen szerintem is magában azt, hogy TRIS nem tudja fordítani meg kell mondani, hogy melyik portot állítod I/O-ra.
12C508-ban szerintem másként van a TRIS beállítása. Be kell tölteni a W regiszterbe, hogy milyen ki-bemeneteket akarsz, majd végrehajtani egy
utasítást.
Igazad van. Az adatlapja szerint a W regisztert tölti be a TRIS-be.
Csak a TRIS címét nem adja meg.
Hogyan tudok megadni egy header file-ban (xyz.h) olyan változót melynek értéke a programban össze vissza változhat?
Hogy kell xorolni, vagy ez nekem kell megírnom?
Van xor operátor a C nyelvben is, ez pedig a ^ kalap jel.
Az első kérdésed kicsit homályos. Ha több forrásfájlt akarsz használni és egy másik forrásban akarod felhasználni azt a globális változót, amelyet az egyik .c forrásban deklaráltál, akkor az extern kulcsszóval kell ellátni a globális változót. Erre a neten biztosan találsz példákat. Bár véleményem szerint, Te nem erre vagy kíváncsi. Ha olyan változót szeretnél létrehozni, amelyet a forrásfájlon belül minden függvény lát (globális változó), akkor azt a forrás elején kell létrehozni, minden függvényen kívül (ehhez nincs szükség a header fájlok módosítgatására). Erre is találhatsz példát. Véleményem szerint először egy C könyvet kellene tanulmányoznod, tanulni a szintaxist, meg egyebeket és csak utána programot írni a kontrollerre.
Itt van előttem a C könyv meg az algoritmus könyv.
Az a helyzet, hogy már kétszer megtanultam a c nyelvet de mivel nem használtam ezért alig dereng valami. Azt hiszem kénytelen leszek még egyszer megtanulni. A header file-ra azért lenne szükség mert több forrásfájlom van. Szóval hogy is van ez?
Ha előtted a C könyv, akkor miért nem nézed meg az extern kulcsszó tárgyalásánál (egyébként melyik C könyv van meg)?
A megoldás a következő: Tegyük fel, hogy létrehozol egy globális változót a main.c forrásfájlban:
A definíciót egy header fájlban is meg kell adni, pl. main.h- ban:
Ezt a header fájlt pedig include-olni kell azokban a forrásfájlokban, amelyekben használni szeretnéd a global_var változót.
Header file-ban csak a deklaraciojat adod meg -- a definicio egy C file-ban kell legyen. Magyaran a C file-odban az a valtozo globalis (azaz nem fuggvenyen belul van, hanem kivul), mindenellett nem szabad 'static' kulcsszot hasznalni (azaz a lathatosaga a teljes projectre kiterjed, nemcsak a forras file-ra). Ilyenkor a hozza tartozo header file-ban extern-kent deklaralt valtozo alapjan hozza tudsz majd ferni mas C forras fileokbol.
Köszi kipróbálom
A könyv; Programozzunk C nyelven! Kiadó: Computer Books 1995 Téma: ansi c, turbo c, grafika, numerikus módszerek.
Nekem is megvan az a könyv, javaslom a 239. oldalon kezdődő extern tárolási osztályról szóló rész tanulmányozását. Elméletileg a hozzá járó CD mellékleten van példa is.
A CD már nincs meg, de kösz.
Függvény visszatérési értéke lehet egy tömb is, ugye?
hogyan tudok, úgy deklarálni egy változót egy függvényben, hogy a függvény után is éljen.
hogyan tudok, úgy deklarálni egy változót egy függvényben, hogy a függvény után is éljen.
Sehogy. Globális változót kell használnod.
Szia!
Sehogy. A lokális változó addíg él, ameddig a függvény vissza nem tér. Használj globális változót! Ha csak abban a c fájlodban használod, akkor static kulcsszóval. Ha a hardver is változtathatja a változó értékét (megszakítás pl.), akkor volatile legyen! üdv, Tam
Tudtommal nem, csak pointer lehet, ami mutathat tömbre. De a tömbnek magának globális változónak/konstansnak kell lennie.
Bár azt nem tudom, mivan, ha egy függvényen belül levő static tömb címét adja vissza a függvény? De akárhogyis van, ez nem szép megoldás.
Adj át a függvényednek egy pointert a tömbre!
A függvény ezután beleírhat a tömbbe. Nincs visszatérési érték. Figyelj, nehogy túlindexelj!
Az a gond, hogy nekem igazából listára lenne szükségem ami nincs c-ben (a lista egy végtelen tömb).
Hogy ne lehetne ?!
Egyszerűen static -ként kell deklarálni. Szolgáljon erre egy példa:
Ez a függvény pl. visszatér azzal az értékkel, hogy hányszor lett eddig meghívva. A benne lévő i változó a függvény lefutása után is megőrzi értékét, vagyis él utána is. Természetesen a függvényen kívül nem lesz elérhető.
Ez rendben van.
De nem tudtuk, mire kellhet neki a homályos fogalmazása miatt. Tippeltük, hogy nem csak ez a függvény akarja majd használni.
Igen erre gondoltam én is de ez lassabb. Azért köszi.
egyébként prímfelbontást akarok csinálni amiből legnagyobb közös osztót csinálok amiből pedig az lesz, hogy megadom egy tizedestört normál alakját. ![]()
Azért a spanyolviaszt nem kell újra feltalálni! Az Euklideszi algoritmus éppen a két szám legnagyobb közös osztóját adja meg.
|
Bejelentkezés
Hirdetés |