Fórum témák
» Több friss téma |
Én is így gondoltam. Akkor egy konkrét példán keresztül:
12-ből kivontam 5-öt, és a C 1-be váltott. Amikor 2-ből vontam ki 5-öt, akkor pedig 0-ba. Ezt nem értem miért? Nem fordítva kéne?
Igazából az adatlap szépen bemutatja, ezek szerint a kivonásnál ez a mi logikánk szerint fordított működésű.
Na sikerült. Megcsináltam, most már működik a kijelző.
Pár dolgot át kellett azért írni a programban. Csak hatásos ez a próbálgatásos módszer.
Ezért kell megismerned az utasításokat.
A kapcsolásodban az van, hogy a gomb megnyomására 1-be húzod a lábat. A BTFSS pedig úgy működik, hogy ha vizsgált bit 1, akkor átugorja a következő utasítást. Jelen esetben a CALL ...-t. tehát ha megnyomod nenm csinál semmit, ha nem, akkor meg írkál mint a marha. Idézet: „Csak hatásos ez a próbálgatásos módszer.” Igen hatásos, egy csomó fölösleges beírás, és csak fél napod ment el egy 10 perces munkára.
Ez így igaz.
De ha egyszer nincs más választás? Pont ezért, írtam ide, hogy ne szórakozzak vele fél napon át, de hát ugye senki nem írta volna le mit kellene kijavítanom.
A carry a kilencedik bit tulajdonkeppen.
Ezert osszeadasnal, ha tulleped a bytehatart, akkor logikus, hogy egybe valt. Kivonaskor automatikusan 1-be all, es ha a kivonando meghaladja a kivonasra itelt szamot, akkor logikus, hogy a kilencedik bit 0 lesz...
Igen, ez a legérthetőbb magyarázat. Kivonásnál ugye valahonnan kell szerezni +1 1-est, ha netán hiányzana. így már világos a logika is.
Van más választás. Az, hogy tanulsz. Bár gondolom, neked az iskolában is a tanár adta meg a választ a dolgozat kérdéseire. Nem kellett könyvet olvasnod.
Inkább figyeltem órán és az alapján írtam meg a dogát. Sosem tanultam, mivel utálok olvasni, főleg ha sokat kell.
Na ez ebben az esetben csak kinlodassal tanulhato meg. Venni kell a faradsagot es megtanulni a PIC csalad mukodeset, felepiteset (szukseges hozza nem alapfoku elektronikai ismeret). Ez egy elektronikai eszkoz, eleg bonyolult belsovel. Majd ha mar eleget tudsz a kezeleserol, akkor a mintapeldakat tanulmanyozva, megertve, probalsz elorehaladni. Ennel a rossz peldanal, amivel kezdtel peldaul hianyzanak az alapveto programirasi dolgok, mint pl: Config, Device Header, .... Jobb lenne ha hallgatnal a tapasztaltabbakra, mert igy soha nem fogod megerteni a PIC es a programiras lenyeget. Elso es legfontosabb az adatlapok tanulmanyozasa. Utana megerteni az ASM programozas rejtelmeit. Persze ha nalad az a programozas, hogy talaltunk a neten egy LCD progit ami kiirja a kepernyore hogy "George", es ezt atirod, hogy "Pista", akkor legyen. Viszont ezzel csak a hozzaszolasok szamat noveled, mert nem erted mitol mukodik a PIC es a LCD.
Idézet: „Viszont ezzel csak a hozzaszolasok szamat noveled” Nem növeltem volna túlzottan, ha nem jött volna vagy 20 felesleges HSZ. Csak annyit szerettem volna, hogy valaki megírja a megoldást, hogy mit kell javítani a programban, oszt kész. Semmi több. Kár azzal foglalkozni, hogy ki honnan mit kezdjen el tanulni. Ha egyszer nem arra irányult a kérdés. Ennyi.
#define geometria programozás
"I. Ptolemaiosz király megkérdezte tőle, hogyan lehetne a geometriát könnyen elsajátítani, Eukleidész ezt felelte: "A geometriához nem vezet királyi út."
Ja, de ha ismered a PIC es a LCD lelkivilagat nem kellett volna feltenni a kerdest.
Tény és való, de nyilván egy "PIC kezdőknek" topikba nem fog olyan írni, aki ismeri ezeket, nyilván azért szól kezdőknek ez a topik.
Urak!
Hagyjátok abba a veszekedést, kérlek! Ha Zserigta fejen állva akar szájharmonikázni, akkor úgy fog és punktum!
Sziasztok skacok!
Az ígért képek a fejlesztő nyákról ! Bővebben: Link
Assembly-ben tömböket hogyan kell létrehozni?
Pl, ez Assemblyben, hogy nézne ki? neve("alma", "körte", "dinnye", "szilva"); binary("00110000", "00001100", "11000000", "00000011"); Válaszokat előre is köszönöm.
Ha azonos hosszusaguak, akkor egyszeruen a tomb elejenek cimehez hozzaadod az elem-sorszama szorozva elemhossz erteket (elkepzelheto, hogy wordben kell szamolnod, ha nem az EEDATA reszt hasznalod)
Ha nem azonos hosszusaguak, akkor van egy tablazatod mondjuk tabla kezdettel tabla1 dt 'alma' tabla2 dt 'korte' tabla3 dt 'dinnye' ,stb es egy kulon cimtablazat, ahol cimek DW tabla1,tabla2,tabla3 Mivel a cimek mar fix hosszusaguak, a fenti modszerrel valaszthatod ki a megfelelo adatot Ugy is megcsinalhatod, ha sok elemed van, hogy valamilyen hatarolot, altalaban 0-t, helyezel el a vegere es magad generalod az elejen a cimtablat. Ilyenkor ertelemszeruen 0 adat nem fordulhat elo, hiszen azt hatarolonak venne. Csinalhatod lancolva is, az adatot megelozi egy fix hosszusagu cim, ami a kovetkezo elemre mutat (abszolut vagy gyakrabban relativ modon), a veget ismet jelezni kell valahogyan, altalaban szinten 0 cimmel. Szoval sokfele lehetoseg van erre, rajtad all, hogy az adatok minosege alapjan donts ezek kozul.
Hát ez így nekem nem egészen világos.
A 2 táblámba ugyan annyi sor lesz, azaz egyforma hosszúságúak. Mondjuk kb 10-10 adat lesz bennük. Az egyikbe szavak, a másikban meg bináris értékek. Az esetben az előbb írt gyümölcsös példám hogy nézne ki Assembly-ben? Olyan módszerrel, hogy meglehessen oldani azt, hogy pl Alma szóra, megkapom, hogy az a tömb 0. eleme, és a binary tömb 0. elemét visszakapjam. Idézet: „neve("alma", "körte", "dinnye", "szilva"); binary("00110000", "00001100", "11000000", "00000011");” Ezek nem tömbök, hanem listák. Tömbökről akkor beszélhetünk, ha egy indexváltozó végigfuttatásával a tömbelemek megcímezhetők.
Ez egy Visual Basic nyelv.
Ott így adod meg a tömböket, majd így kéred le: neve[2] //ez esetbe visszaadja, hogy 'dinnye' binary[1] //ez esetbe visszaadja, hogy '00001100' Tömbök ezek, csak épp Visual Basic-ben. Mert én ahhoz értek. Csak most PIC programozás szempontjából kellenének assembly nyelv formájában is.
Ebben a peldaban ket feliratot iratok ki LCD-re. Van benne tomb kezeles. Tanulmanyozd.
Idézet: Én biztosan nem értek hozzá, ezért úgy tudom, hogy Visual Basic-ben is dimenzió és típusmegadással lehetd deklarálni egy tömböt:„Tömbök ezek, csak épp Visual Basic-ben. Mert én ahhoz értek.”
A lényegre térve: Az assembly nyelvben nincs tömb, de még szerencse, mert nem tudom, hogy az elővett string hogy férne bele az egy szem munkaregiszterbe... Egy életképes megoldás az, amit BBalázs leírt ebben a hozzászólásban. A karakterfüzéreket lepakolod a ROM-ban, s összeállítasz egy táblázatot a címeikröl egy másik táblázatban. A neve[2] hivatkozást pedig úgy kell megvalósítani, hogy ebből az utóbbi címtáblázatból vegye elő a második (ha nem nullánál kezded az indexelést...) címet, ami a második karakterfüzérre mutat. Gondoskodni kell a karakterfüzérek hosszának eldönthetőségéről. C-ben ez úgy oldják meg, hogy minden karakterfüzért megtoldanak egy nulla karakterrel. Értelemszerűen ekkor a szövegben nem lehet nulla kódú karakter (aminek egyábként sincs értelme. A bináris "tömbödet" nem értem. Karakterenként akarod tárolni a biteket?
VB6-hoz hasonló tömb kezelés nincs. Sőt, véleményem szerin egyáltalán nincs tömbkezelés a szó valódi értelmében. Itt regiszterek vannak, miket címezni kell. Lehet tömbszerűen kezelni őket, de ettől még nincs tömb az Assemblyben.
icserny:
Igen, úgy is lehet a tömbökben adatot tárolni, de úgy is ahogy én írtam. -------------------------------------------------------------------------------------------------- Értem. Szóval ezért nem találtam semmi használhatót a Google-ban az Assembly tömbre keresve. Akkor megoldom máshogy. (Bár azért vilmosd által közzétett programkódját áttanulmányozom.) Köszönöm a segítséget!
Sziasztok.
Tudom, hogy off, de mégis ide rakom, mert itt segítettetek a projekt megvalósításában. Kész a satufordulat számlálóm, hála "watt"-nak, tőkéletesen számol oda-vissza.
Sziasztok, szeretnék készíteni egy digitális hőmérőt illetve egy digitális órát egyben lcd kijelzővel. A digitális hőmérő az már megy de amin elgondolkodtam hogy ha megírom a digitális óra kódját akkor a digitális hőmérőben szereplő késleltetések elpontatlanítják az órát. Pic-nél van szálkezelés vagy ezt hogy lehetne megoldani?
Haználd a megszakításokat... Pl. az idő számítását egy timer megszakítás kezdeményezheti.
|
Bejelentkezés
Hirdetés |