Fórum témák
» Több friss téma |
#include
#include #include #include #pragma config LVP = OFF #pragma config WDT = OFF #pragma config XINST = OFF #pragma config OSC = XT void DelayFor18TCY( void ) { Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); } void DelayPORXLCD( void ) { Delay1KTCYx(15); //Delay of 15ms return; } void DelayXLCD( void ) { Delay1KTCYx(5); //Delay of 5ms return; } void main( void ) { char data='a'; // configure external LCD OpenXLCD( FOUR_BIT & LINES_5X7 ); putsXLCD(data); putrsXLCD("test"); } Erre meg ezt hibaüzenetet kapom: Error - could not find definition of symbol 'putrsXLCD' in file './lcdproba.o'. Nem egyszerű az élet...
Az sem segít, hogy nem árultad el, hogy milyen PIC milyen LCD-vel és hogyan van/lesz összekötve!
Idézet: „A szimulátort megnéztem. Assemblyhez valóban nagyon jó” Ha az LCD szimulátorról van szó, akkor annak mindegy, hogy assembly vagy egyéb nyelven programozod. (Ahogy az Igazi Programozó is képes bármilyen programnyelven FORTRAN programot írni...). Az XLCD könyvtári függvényeket csak ötletadónak ajánlottam, egyáltalán nem muszáj használni. Ha C nyelven ki tudsz köldeni egy bájtot egy portra, be tudsz állítani egy portlábat alacsony vagy magas szintre, s egy másik portlábat fel tudsz emelni magasz szintre,majd vissza (Az E láb pulzálása), akkor már csak az LCD modulnak kiküdendő parancsokra és adatokra kell koncentrálni. Ha van elég láb, akkor érdemes a 8 bites üzemmóddal kezdeni! Megjegyzés: beküldésnél hazsnáld a "Kód" gombot,mert most nemlátszik, hogy mi szerepelt az include-k után! (mellesleg a csúcsos zárójel helyett használhatsz idézőjelet...
Nem látni milyen fájlokat includoltál(a fórummotor leszedte), de ha fenn van az LCDhez tartozó, akkor valószínű nem találja a fordító. Állítsd be a project beállításoknál az elérési utakat!
Nekem ezekkel lefordult:
A Rroject/Build Options.../Project menüben a Directories fült kell kiválasztani. A legördülő listában meg kell nézni, hogy az Include Search Path-ban van-e ilyen bejegyzés? C:\Program Files\Microchip\MCC18\h Ha nincs akkor, pótold! (New gomb és tallózás a "..." gombbal) Ugyanott a Library Search Path is ellenőrizendő. C:\Program Files\Microchip\MCC18\lib (vagy ahová telepítetted)
Köszönöm az eddigi hozzászólásokat!
PIC18F4321 + HD44780 comp. 2*16 LCD E - RD1 RW - RD2 RS - RD3 DB4 - RD4 DB5 - RD5 DB6 - RD6 DB7 - RD7 Az #include fájlok ugyan azok voltak. Az elérési utak nem voltak beállítva. Megtettem, de a hiba megmaradt.
Van elég lába szerencsétlennek, úgyhogy lehet, hogy megpróbálom inkább nyolc biten xlcd nélkül.
Akkor valami még mindig nincs rendben a beállításokkal!
1. MPLAB IDE-ben a Project menü Set Language Tools Locations pontjában érdemes alapértelmezettnek beállítani az előzőleg említett útvonalakat (már ha oda van telepítve nálad is, ahol nálam...). A Microchip C18 Toolsuite alatt a Deafault Search Paths & Directories alatt találod meg a korábban már említett Library search Path és Incluse Search Path bejegyzéseket. Fontos tudni, hogy ez csak az új projekteknél lép érvénybe automatikusan, a korábbi vagy az aktuális projektre nincs hatással az alapértelmezett útvonalak megváltoztatása. Ha az aktív projektre is érvényesíteni akarod a változtatást, akkor a Korábban említett Projek/Build Options/Project menüpontban a Directories fül kiválasztása után rákell bökni a Suite Defaults gombra! 2. Új projektek létrehozásakor a Projekt Wizard-ot használd! 3. Ha a hiba megmaradt, akkor a Library Search path beállítása nem jó! Ahová mutat, abban a könyvtárban lennie kell egy p18f4321.lib nevű állománynak, abba van beépítve az eljárás, amit most a linker hiányol. Ugyanitt kell lennie a c018.o vagy c018i.o állománynak is, ami nélkül nem fog tudni egyetlen C18 programot sem lefordítás után összelinkelni.
Azt hiszem ma minden hibaüzenetet leszimulálok.
Minden igyekezetem ellenére most itt tartok: Error - section '_entry_scn' type is non-overlay and absolute but occurs in more than one input file.
Az _entry_scn a C18 "startup" kódjában van (c018i.0 vagy c018.o), nem tudom elképzelni, hogy hogyan tudtad kétszeresen belinkelni.
Mellékelten küldök egy összecsomagolt projektet. Ezt le tudod fordítani?
Sziasztok! Nincs valakinek olyan szubrutinja assamblyben, hogy 16bitből (2regiszterből) csinál BCD-t? Kerestem neten de valahogy csak a 8bitesek meg a 32 bitesek jöttek ki nekem.
Helo
"Visszagósztoltam" egy frissen telepített rendszert, mert már kezdett fagyogatni a gépem. Most telepítem az Mplabot, ha végeztem, kipróbálom. Köszönöm előre is.
Helo
Elvileg mindent beállítottam. Ez maradt: Error - could not find definition of symbol 'putrsXLCD' in file './lcd_test.o'. Nem akarok az agyadra menni.
Beállítottad a fordítási opcióknál a megfelelő elérési utakat a szerint, hogy neked hová van telepítve az mcc18? (sárga fogaskerék ikon!) Nekem csont nélkül fordul.
Igen.
És amíg a Project-Display ablakban nem adom hozzá a 18f4321.lkr -t addig "linker command file required" a hibaüzenet.
Mondom, nem jól állítasz be valamit! Készíts képeket a beállításokról(2 kép, include, library)! És írd meg, hol van az mcc18 könyvtár!
Nem értem mi lehet.
[/OFF]Találtam [OFF]
Köszi a képeket! 4.0-s MPLINK-ert használsz, ami 2005-ös. Lehet érdemes lenne frissítened, nem de?
Töltsd le a legújabb MPLAB-ot és az MCC18-at!
S lőn világosság!
Az új MPLAB/C18 párosítással végre működik a fordítás! Hálásan köszönöm a segítségeteket!!! Végre tovább tudok "szenvedni". Üdv.
Örülök, sok sikert, ha van kérdés, csak tedd fel, reméljük tudunk válaszolni!
Idézet: Valami nagyon összekebeóveredhetett! (Viszonylag új MPLAB és a viszonylag ócska MCC18...)„Köszi a képeket! 4.0-s MPLINK-ert használsz” Nálam ugyanis valamivel régebbi MPLAB van (8.15), de abban az MPLINK 4.22-es verziójú. A különböző kiadási dátumú komponensek összekeverése azért életveszélyes (és talán ez lehet a probléma végső tanulsága), mert a Microchip időnként megváltoztatja a belső könyvtárstuktúrát. Ha "nem tudja a jobb kéz, mit csinál a bal", akkor nem jön össze a fordítás/linkelés. A C30-as fordítóval is volt ilyen kalandom, mert valamelyik kiadásnál eggyel mélyebb alkönyvtárszintre kerültek át az include és egyéb állományok, s a régebbi projektek sehogy sem akartak emiatt lefordulni.
Igen, én is pont így jártam pénteken, a C18-at kellett upgradelnem.
Sziasztok !
Lehet, hogy nagyon naiv, vagy buta a kérdésem, főleg így kezdőként.... Szóval: nagyon nehéz dolog átírni az ITT található univerzális töltő programját 2 X 16-ról 2 X 24 karakteres kijelzőre ? Köszi !
Mit, vagy miért kellene módosítani rajta?
...igen, azt hiszem gondolkodnom kellett volna először ! Tehát akkor a 24-es esetében is új sorban lesznek a karakterek kiírva és nem ott folytatódik ahol elfogy a 16 hely ?
De azért KÖSZÖNÖM !
Nem tudom pontosan, hogy mit csinál a program, ezért zártam kérdőjellel az előző beírásomat is. Mindenesetre a memóriaszervezés azonos, tehát valójában a 2x16 soros kijelző is 2x40 soros, de egyidejűleg egy sorból csak 16 karakter látszik. De lehet scrollozni, s akkor látszik, hogy ott vannak a korábban nem látszó beírt karakterek is...
Éppen ezért a második sorba úgy írhatunk, ha a 2. sor elejének megfelelő pozícióba ugratunk. Az viszont tudomásom szerint ugyanazt az adatmemória-címet jelenti 16, 20, 24, vagy 40 soros kijelzőnél is.
Ha azt akarod, hogy kitöltse a rendelkezésre álló karaktereket, akkor nehéz, egyébként meg valóban nincs értelme.
Szia
Honan tudnám letölteni a proteust , esetleg magyar verzióban is létezik. Ez a progi jol müködik? Elöre is köszönöm
Sziasztok.
Van nekem egy 16F676 picem. Van egy sima mezei programom ami azt csinálja, hogy ha a 2db kapcsolot 0-ra húzom akkor világit egy led. Ezt csak ugy gyakorolgatás képpen csiáltam, hogy mekkora az áram fogyasztás. Itt jönnek a gondok. Ha egyik kapcsolo sincs a földre kötve, simán el muzsikál 25uA-ral. De ha az egyiket lekötöm testre egyböl 500uA lesz belöle. Hogy lehet ezt kiküszöbölni? Ami lessz majd belöle abba van két végállás kapcsolo és ott én ugy gondoltam amelyik oldalt van ott nulla lesz. De sajna elemröl menne és ez igy nagyon sok. Azt se értem, hogy ha sleepbe rakom a picet és kapcsolom a kapcsolot akkor is ezt csinálja.De a pic nem ébred fel mert nem történik semmi. A másik kérdésem a Timer1-el kapcsolatba lenne. Mert már elvesztettem a fonalat. Van ugyan ez a pic és szeretném Timer1-el ébreszteni.Olvastam már sok helyen hogy 32kHz órakvarccal tulcsordul és ébreszt. Lehet hogy most hülyeséget kérdezek. De az órakvarc az ugyan az a kvarc amit az OSC1 és a OSC2-re teszek? És oda kell raknom és beállitani a programba? Elöre is köszönök minden segitséget Idézet: Mi a felhúzás? Ha 10 kOhm, akkor ne csodálkozz, pont ekkora áramnak kell folynia, ha lehúzod a végét földre. Próbálkozhatsz belső felhúzással, vagy külső 100 kOhm-os felhúzással. „De ha az egyiket lekötöm testre egyböl 500uA lesz belöle.” |
Bejelentkezés
Hirdetés |