Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Először csak az angol ABC szerint írtam a cimkéket és a változókat biztos ami biztos. De aztán láttam Watt egyik programját és abban is voltak ékezetek, ezért úgy döntöttem mostantól én is írok ékezeteket. Szinte az összes cimke és változó tartalmaz mindenféle ékezetes karaktereket és nem sír miatta a fordító. Csak a minusz, plusz meg hasonló karaktereket nem szereti de olyanokat nem is írok.
Átírtam az RD-t WR-re, de így sem írja be az új értéket. :no:
Szia!
Nekem az volt a tapasztalatom, hogy "kényére-kedvére" hol jó a változó, cimke ékezetesen hol nem ( igaz, hogy általában jó!), ezért én is azt javaslom, hogy ne használj ilyet! Ugyanezen okból a könyvtárnevek se használjanak ékezetes karaktereket és vigyázz az elérési út hosszára is ( ha jól emlékszem 62 karakter a maximum!!) ! Steve
Szia!
- A GIE-t a WR beállítása után 1-re lehet állítani, nem kell megvárni vele az írás végét. - Ahogy már írták, az írás befejezését a WR bit 0-ba állása jelzi - esetleg a PIR2 regiszter EEIF bitje. - Mekkora adat eeprom van a kontrollerben? - Nem lehet, hogy másik lapjára írsz, mint ahonnan olvasol. Ha az EEPROM mérete nagyobb, mint 256 byte, az EEADRH regisztert is be kell állítani :EEADRH:EEADR adja ki a címet... Szia
Igen, én is használom, de vigyázz, csak az ASM fordító eszi meg, így ha nagyon hozzászoksz, mint én, utána majd a C-nél nehezebb lesz, mint nekem is! De nem vészes, át lehet rajta esni!
Icserny, Hp41C!
PIC18F2520-at programozok, annak csak 256 bájtos az EEPROM-ja. Szóval EEADRH-t nem kell állítani és ilyen regiszternév nem is szerepel az adatlapjában.
Hogy érted hogy mit mutat? Az MPLAB szerint nem változik az EEPROM tartalma és az áramkörben sem tapasztalom a változást. Vagy másra gondolsz?
Ez egy C kód, de könnyű átértelmezni ASM-ba. Persze a felső cím nálad nincs, de ezt megbeszéltétek.
.
Én sem engedélyezem a megszakítást az írás ellenőrzés bekövetkezte előtt, bevallom nem tudtam, hogy lehet, ezt akkor úgy old meg, ahogy a többiek ajánlották, majd én is áttérek erre a módszerre.
Na, a szimulátor szerint az EECON2 regiszterbe nem kerül be az 55h és a 0AAh. Az EECON2 regiszter mindig nulla.
Mondtam már, hogy az EECON2 nem fizikai regiszter. Az adatlap szerint mindig nullát ad olvasáskor.
Igen.
Jelenleg így néz ki a dolog:
Akkor végképp nem tudom mi lehet a baj. :no: Itt van a program:
Nekem ebben is működik. Jó helyen nézed te az értékeket?
De azt azért próbáld megtanulni, hogy a bal szélre csak a címkéket tesszük, azokat viszont kötelezően csak oda. Csomó ilyen üzenetet dob a fordító, hogy rossz helyen vannak dolgok.
Csak a még kérdéses programkód-részleteket teszem be baloldalra, innen tudom hogy ezen helyes részek működése még nem biztos. Amint megbizonyosodom róla hogy működik, beljebb rakom a tabulátorral.
Az értékeket az MPLAB View/EEPROM ablakában nézem, illetve élesben az LCD-kijelzőn.
Pedig nálam a kiolvasás is működik, bekerül a 93 a KÍVÁNT_HŐMÉRSÉKLET_laminálás változóba.
Az viszont érdekes, mert annak a programnak amit legutóbb feltöltöttem, a 408. soránál lévő goto$ ciklusban kellene maradnia és 147-et kellene írnia az EEPROM d'1'-es bájtba. A jelenlegi programot ugyanis lebutítottam ennyire, hogy ne a Hőfok_beállítás_menü szubrutinban bóklásszon. Tehát a kérdéses programrészlet a 390. sortól a 406. sorig van.
Igen, de előtte van egy olyan, hogy call EEPROMból_adatok_feltöltése. A szimulátor is olyan, hogy ha már egyszer beírta, akkor a reset utáni következő futtatáskor már ott van az EEPROM-ban az adat, és ki lehet olvasni. A kódod ki is olvassa, és csak ezután megy rá ismét az írásra majd a végtelen ciklusra.
sziasztok az lenne a kérdésem h mi a hiba akkor ha PICKIT2vel probálnék 877-est programozni és ezt irj ki "programming failed at program memory addres 0x000000" válaszotokat előre is köszönöm
Igen, de ott csak olvas az EEPROM-ból. Írni csak a 390. és a 406. sorok közt próbál.
Nálam ír is, azt a részt néztem. Majd utána Reset és az olvasás is működik.
Tényleg!
Mindvégig írta az EEPROM-ot, csak nem azt a bájtot amelyiket után kiolvastattam vele. Most már tök jó, a tápfeszt levéve is megjegyzi a beállított értéket. :yes:
Kicsit szétszórt vagy nem?
Én csak figyeltem, mert nem értettem mi a baj, mikor az eeprom írós rész jó...
Minél bonyolultabb a program, annál több dologra kell odafigyelni és ezért egyre nehezebb...
------------------------------------------------------- Egy LCD kijelzőn megjelenő menürendszert hogyan, milyen elven szokás megírni assembly-ben? Mert nekem van egy elképzelésem amit el is kezdtem megvalósítani de lehet hogy van ennél egyszerűbb megoldás is. A gombok pergésmentesítését megoldottam megszakításból, teljesen saját ötlet alapján. És szuperül működik, olyan büszke vagyok rá!
sziasztok az lenne a kérdésem h mi a hiba akkor ha PICKIT2vel probálnék 877-est programozni és ezt irj ki "programming failed at program memory addres 0x000000" válaszotokat előre is köszönöm
Másodszor is beírod ilyen trehány módon, chat-es stílusban, és csodálkozol, hogy nem áll szóba veled senki!?
Mond el mi az elképzelésed, és reagálunk rá.
Teljesen még én sem találtam ki, de eddig nagyjából a következőképp képzeltem el:
Például vegyük a 'főmenüt', ami három menüpontot tartalmaz, legyenek mondjuk: nyák, laminálás, beállítás. Kinevezek egy regisztert aminek adok egy kezdőértéket, mondjuk 1-et. Megvizsgálom, hogy a regiszter 1-e. Ha igen, akkor kiírom az első menüpont feliratát: "nyák". Ha kettő, akkor kiíratom ezt: "laminálás". Ha pedig három, akkor ezt: "beállítás". Ez után megvizsgálom hogy le van-e nyomva valamelyik gomb. Ha a LE gomb van megnyomva, akkor inkrementálom a regiszter értékét, ha pedig a FEL gomb van lenyomva, akkor dekrementálom. Ha egyik sincs lenyomva akkor újra lekérdezem a gombokat (végtelen ciklus). Ha valamelyik gombot lenyomva találom, akkor visszaugrom a regiszter vizsgálatához és a regiszter értékének megfelelő menüszöveget írom ki. A LE és FEL gombok vizsgálatakor az OK gombot is vizsgálom. Ha le van nyomva akkor beugrom egy szubrutinba, ami az almenüt íratja ki ugyan így de az már egy másik 'menüpont-számláló' regisztert használ, így az almenüből vissza lehet térni a főmenübe. Ez mély menürendszer esetén elég bonyolult és átláthatatlan lenne, de én éppen ezért csak egy almenüt gondoltam. |
Bejelentkezés
Hirdetés |