Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   162 / 1210
(#) Poostmaster válasza Norberto hozzászólására (») Nov 5, 2011 /
 
É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?
(#) Norberto válasza Poostmaster hozzászólására (») Nov 5, 2011 /
 
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ű.

sub_carry.gif
    
(#) Zserigta hozzászólása Nov 5, 2011 /
 
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.
(#) Poostmaster válasza Zserigta hozzászólására (») Nov 5, 2011 /
 
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.
(#) szitko válasza Zserigta hozzászólására (») Nov 5, 2011 /
 
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.
(#) Zserigta válasza szitko hozzászólására (») Nov 5, 2011 /
 
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.
(#) bbalazs_ válasza Norberto hozzászólására (») Nov 5, 2011 / 1
 
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...
(#) Poostmaster válasza bbalazs_ hozzászólására (») Nov 5, 2011 /
 
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.
(#) Poostmaster válasza Zserigta hozzászólására (») Nov 5, 2011 /
 
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.
(#) Zserigta válasza Poostmaster hozzászólására (») Nov 5, 2011 /
 
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.
(#) vilmosd válasza Zserigta hozzászólására (») Nov 5, 2011 /
 
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.
(#) Zserigta válasza vilmosd hozzászólására (») Nov 5, 2011 /
 
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.
(#) Hp41C válasza Zserigta hozzászólására (») Nov 5, 2011 /
 
#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."
(#) vilmosd válasza Zserigta hozzászólására (») Nov 5, 2011 /
 
Ja, de ha ismered a PIC es a LCD lelkivilagat nem kellett volna feltenni a kerdest.
(#) Zserigta válasza vilmosd hozzászólására (») Nov 5, 2011 /
 
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.
(#) Moderátor hozzászólása Nov 5, 2011
 
Urak!
Hagyjátok abba a veszekedést, kérlek!
Ha Zserigta fejen állva akar szájharmonikázni, akkor úgy fog és punktum!
(#) janikukac hozzászólása Nov 5, 2011 /
 
Sziasztok skacok!
Az ígért képek a fejlesztő nyákról ! Bővebben: Link
(#) Zserigta hozzászólása Nov 5, 2011 /
 
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.
(#) bbalazs_ válasza Zserigta hozzászólására (») Nov 5, 2011 /
 
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.
(#) Zserigta válasza bbalazs_ hozzászólására (») Nov 5, 2011 /
 
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.
(#) icserny válasza Zserigta hozzászólására (») Nov 5, 2011 /
 
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.
(#) Zserigta válasza icserny hozzászólására (») Nov 5, 2011 /
 
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.
(#) vilmosd válasza Zserigta hozzászólására (») Nov 5, 2011 /
 
Ebben a peldaban ket feliratot iratok ki LCD-re. Van benne tomb kezeles. Tanulmanyozd.

semafor.asm
    
(#) icserny válasza Zserigta hozzászólására (») Nov 5, 2011 /
 
Idézet:
„Tömbök ezek, csak épp Visual Basic-ben. Mert én ahhoz értek.”
É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:
  1. Dim strFriends(0 to 2) As String  
  2. strFriends(0) = "Bianca"
  3. strFriends(1) = "Jeana"
  4. strFriends(2) = "Erin"

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?
(#) watt válasza Zserigta hozzászólására (») Nov 5, 2011 /
 
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.
(#) Zserigta hozzászólása Nov 5, 2011 /
 
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!
(#) szitko hozzászólása Nov 5, 2011 /
 
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.
(#) doup hozzászólása Nov 5, 2011 /
 
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?
(#) Hp41C válasza doup hozzászólására (») Nov 5, 2011 /
 
Haználd a megszakításokat... Pl. az idő számítását egy timer megszakítás kezdeményezheti.
(#) doup válasza Hp41C hozzászólására (») Nov 5, 2011 /
 
Köszönöm válaszod tudnál valami linket adni ahol utána tudok nézni a megszakításoknak mert még nem használtam ilyet?
Következő: »»   162 / 1210
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem