ASM minták?

Rendszerközeli nyelv(ek) tippjei, alkalmazásai
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: ASM minták?

Hozzászólás Szerző: Robert »

Az 1-2-3-4 egyszerű, kisebbnagyobb.


Trükk:
incr/decr változó
ha a változó = 6, akkor változó=5
ha a változó = 255, akkor változó =0



5. block
Attól függ melyiket állítottam, a min/max elmentésre /átállításra kerül.

5. beállítás
incr/decr változó
ha a változó >max, akkor változó=max
ha a változó = 255, akkor változó =0 'vagy min
Avatar
etwg
Pákabűvész
Hozzászólások: 213
Csatlakozott: 2011. február 7. hétfő, 7:00

Re: ASM minták?

Hozzászólás Szerző: etwg »

Kösz, azért sajnos nem annyira egyszerü a dolog, mert sem az idöt, sem a számot nem abszolut értékben kell bevinni, hanem karakterenként ( innen számzár hasonlat), azaz pl, 39 perc azt nem 39 lépésben viszem be, hanem az elsö helyen 3-t, majd átugorva a 2. helyre 9-t, vagy minusz 1-t. A számnál még bonyolultabb, mert az 3 helyes , azaz az elsö hely 0,1 és 2 lehet, a második 0-9, de csak akkor, ha az elsö szám nem 2, és igy tovább.
Vagy van jobb ötlet, hogyan lehet a legegyszerübb (legkevesebb nyomkodással) bevinni 0-60 percnyi idöt, illetve 0-255 állapotot. Azon még gondolkodtam, hogy egyre gyorsulo lépésekkel is lehetne ( mint egyes vekkereken), de karakterenként valahogy szimpatikusabb, föleg ha a már bevitt 10 különféle változo egyikét másikát javitani kell. ( pl. 39 helyett 12 kell vagy 234 helyett 129 stb)
Éljenek a vonatok!

http://www.youtube.com/playlist?list=PLF2674BF4E3765682
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: ASM minták?

Hozzászólás Szerző: Robert »

Tipp: mint az órabeállításnál: gombnyomás nyomva tartod, az elején lassan számol, majd egyre gyorsul (itt a delay-okkal játszol a folyamatos nyomvatartás alatt). vagy mint a Win: nyomva tartod: lassan el kezd számolni, begyorsul, majd 5-ösével lépked... Fel/le is. Én nem bontogatnám egyes-tizes-százas szinten. Bonyolultabb....
Avatar
etwg
Pákabűvész
Hozzászólások: 213
Csatlakozott: 2011. február 7. hétfő, 7:00

Re: ASM minták?

Hozzászólás Szerző: etwg »

Én is valami ilyesmin rágodtam, de még nem tudom melyiket választom.
Éljenek a vonatok!

http://www.youtube.com/playlist?list=PLF2674BF4E3765682
Avatar
etwg
Pákabűvész
Hozzászólások: 213
Csatlakozott: 2011. február 7. hétfő, 7:00

Re: ASM minták?

Hozzászólás Szerző: etwg »

Közben eszembe jutott egy jobb megoldás. Egyetlen valtozoként kezelem az egyes adatot, pl az idöt max 3600 sec, ami 4 helyre fér el a displayen. MM:SS, az egyes helyek között 60-s a szorzo, igy ha pl a 2. helyen 60 másodpercesek az lépések, az elsön meg 600 másodpercesek.
Éljenek a vonatok!

http://www.youtube.com/playlist?list=PLF2674BF4E3765682
Avatar
etwg
Pákabűvész
Hozzászólások: 213
Csatlakozott: 2011. február 7. hétfő, 7:00

Re: ASM minták?

Hozzászólás Szerző: etwg »

Egy ujabb kérdés:
A decimális számokkal már elboldogultam, az idövel még nem tudom pontosan mit kezdjek: a displayen 59:59 a max. amit ki kell irni (MM:SS). Ez ki is tudom már irni, elmenteni viszont csak wordbe lehet 0E0F. Most ez a számot kellene visszaalakitanom 59:59-re ( ha kiolvasom az eeprombol ennek kellene megjelenni a displayen). Van erre valami jo rutin?

Kösz!
Éljenek a vonatok!

http://www.youtube.com/playlist?list=PLF2674BF4E3765682
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: ASM minták?

Hozzászólás Szerző: kapu48 »

Szerintem ez zsákutca!

Az 60-al osztás pontatlansága miatt nem kapod vissza a helyes eredményt.
Inkább tárold 2 bájton: perc, másodperc az értékeidet.
Avatar
etwg
Pákabűvész
Hozzászólások: 213
Csatlakozott: 2011. február 7. hétfő, 7:00

Re: ASM minták?

Hozzászólás Szerző: etwg »

Pedig mennie kell.

Pl. Ha a displayen 59:59 van akkor

5*600=3000
9*60= 540
5*10=. 50
9. = 9
______________
3599 Sec. Ez megy az eepromba.

Visszafelé:

3599/600=5 10 perc. 1. Hely
599/60 =9 Perc. 2. Hely
59 sec. 4. És 5. Hely. ( a 3. Helyen a kettöspont lesz)

Szoval ennek mennie kell, csak még ki kell találnom hogyan. Már részleteket kiprobáltam az ment, csak most egy más kérdést kellett megoldani ( ami sikerült). Talán holnap ez is meglesz.
Éljenek a vonatok!

http://www.youtube.com/playlist?list=PLF2674BF4E3765682
Avatar
zoli25
Újonc
Újonc
Hozzászólások: 6
Csatlakozott: 2009. február 20. péntek, 7:00

Re: ASM minták?

Hozzászólás Szerző: zoli25 »

Talán mikor órát építettem, ott úgy használtam , óra perc külön tárolva, de BCD-ben (alsó byte a percek egyese, felső fele a percek tizese.) Így tetszés szerint lehetett léptetni bármelyiket, kiíratni is könnyű. Különösebb matematikai feladat sincs vele. Egyszerű léptetéssel, és egy ÉS kapcsolattal bármely számhoz hozzá lehet férni,lehet cserélni
Hátrány, az óra járatásánál minden jegyet külön kell növelni ellenőrizni.(
Avatar
etwg
Pákabűvész
Hozzászólások: 213
Csatlakozott: 2011. február 7. hétfő, 7:00

Re: ASM minták?

Hozzászólás Szerző: etwg »

Kösz!

Pontosan ezért akarom ugy megcsinálni, hogy az orát beállitom a displayen ( minden számjegyet külön), de mint másodpercet mentek el. (Pl. 3599 sec= 59:59).
Amikor elinditom az orát akkor ezek a másodpercek (3599) lesznek dekremtálva, azaz visszaszámolva, és az érték igy lesz kijelezve a displayen.
Most még azon rágodok, hogy mikor mentsem el az eepromba, folyamatosan, vagy akkor amikor befejeztem a 4 szám beállitását.
Éljenek a vonatok!

http://www.youtube.com/playlist?list=PLF2674BF4E3765682
Avatar
zoli25
Újonc
Újonc
Hozzászólások: 6
Csatlakozott: 2009. február 20. péntek, 7:00

Re: ASM minták?

Hozzászólás Szerző: zoli25 »

etwg írta:Kösz!

Pontosan ezért akarom ugy megcsinálni, hogy az orát beállitom a displayen ( minden számjegyet külön), de mint másodpercet mentek el. (Pl. 3599 sec= 59:59).
Amikor elinditom az orát akkor ezek a másodpercek (3599) lesznek dekremtálva, azaz visszaszámolva, és az érték igy lesz kijelezve a displayen.
Most még azon rágodok, hogy mikor mentsem el az eepromba, folyamatosan, vagy akkor amikor befejeztem a 4 szám beállitását.
Mivel az írási ciklus korlátos, a felhasználó oda vissza lépegethet így én a beállítás végén menteném, Így azt is tudod ellenőrizni egyben, mit ír ki, és ha érvénytelen, biztosan nem marad érvénytelen adat az eepromban. Én az 59:99 másodpercet 5999 ként menteném. És a csökkentés növelést is ebben a formában hajtanám végre, sajna így számjegyenkét kell növelni, ügyelve a határokra, de ezt a beállításhoz úgy is meg kell írni.).Így a léptetés bonyolultabb, de az utána következő részek sokkal egyszerűbbek.(kijelzés állítás. bár lehet csak a régi processzorok szegényes matematikai lehetőségei miatt választottam ezt, de ez tűnt a legjobbnak.)Bár az is kérdés, mikor érsz rá vele foglalkozni.Ha a másodpercváltásnál csak egy inkrementálásra van idő, akkor ez nem jó, ha meg a kijelzést akarod gyorsítani, akkor egy csomó matematikától megkíméled magad.
Avatar
etwg
Pákabűvész
Hozzászólások: 213
Csatlakozott: 2011. február 7. hétfő, 7:00

Re: ASM minták?

Hozzászólás Szerző: etwg »

A kijelzésnek csak beiráskor van komolyabb funkcioja, hogy be lehessen irni egy idöt (59:59 min:sec , azaz nem 5999!), ami 3599 sec. Ha ez be van irva ( én is ugy gondoltam, hogy amugy is vissza kell olvasni az eepromot, tehát a beirás az egyik üzemmod, ilyenkor a display a lényeges. Amikor elindul a szerkezet akkor az egy másik üzemmod, amikor az eepromból visszaolvasott idö alapján müködik. Ilyenkor a displaynek nincs nagyobb funkcioja mint mutatni, hogy telik az idö. Egyelöre még nem vállalkozom arra, hogy ilyenkor is tudjak valamit változtatni a beállitáson (azaz felülirni az eeprom adatait). Jo volna, de nem tudom, hogy meg tudom-e csinálni.
Éljenek a vonatok!

http://www.youtube.com/playlist?list=PLF2674BF4E3765682
Avatar
zoli25
Újonc
Újonc
Hozzászólások: 6
Csatlakozott: 2009. február 20. péntek, 7:00

Re: ASM minták?

Hozzászólás Szerző: zoli25 »

Ha másodpercenként ki kell írni az időt, akkor szerintem jobban jársz az idő=59:43-nak megfelelő 5943 eeprom tartalommal (és feldolgozási móddal) . Mivel az időt minden másodpercben kijelezhető formára kell hozni, gyorsabb ha már eleve a kijelzőhöz alkalmasabb formában keletkezik,tárolod, dolgozol vele.Tárhelyben nem foglal többet, hiszen 2 byte mindenképpen kell. Esetleg ha a számolásnál még mind a négyet külön byteként 05 09 04 03 használod csak a tároláshoz vonod össze őket, elég gyors számolást,léptetést, kijelzést valósíthatsz meg.( Az lcd legtöbbször elfogad asc kódot, így csak 30-at hozzá kell vagyolni a számlálókhoz.)
Avatar
etwg
Pákabűvész
Hozzászólások: 213
Csatlakozott: 2011. február 7. hétfő, 7:00

Re: ASM minták?

Hozzászólás Szerző: etwg »

Én is valahogyan igy gondolkodok, csak igy egyelöre ugy tünik, hogy többet kell számolni, mig ha 3599-röl számolok vissza ( ha ennyit irtam be az elején), akkor csak ezt a számot kell másodpercenként eggyel csökkenteni 3599,3598,3597 stb.
Amit amugy is át kell alakitani a display számára (osztani 600,60 és 10-l), viszont pl. A 3599-l könnyebb kiszámolni a frekvenciát (ami a célom a motor meghajtására).

Most még küzdök az eeprommal, hogyan kell cimezni stb. Nem az eljárással van a gond, azokat a rutinokat már megirtam, csak még olyan dolgokon botladozok, hogy hogyan kell cimezni, ha wordöket használok pl. Az emlitett 3599-s számot kell beirni, az egy bytes dolgokat már be tudom irni. Az volt az elmélet, hogy a cimet ( pointer) mindig eggyel növelem és oda kerül a tartalom, csak most megakadtam, hogy akkor a word 2 lépés?
Van egy alakulo táblázatom, hogy hova mi megy word, byte, csak nem tudom még milyen algoritmussal olvassam be a táblázatot. Ha megvan a cim meg a tartalom azt már kezeli a rutin, csak még küzdök a cimezéssel, a displayt már ki tudom olvasni.... :D
Éljenek a vonatok!

http://www.youtube.com/playlist?list=PLF2674BF4E3765682
Avatar
etwg
Pákabűvész
Hozzászólások: 213
Csatlakozott: 2011. február 7. hétfő, 7:00

Re: ASM minták?

Hozzászólás Szerző: etwg »

Találtam egy jo könyvet ( illetve annak elérhetö 6. fejezetét) amiböl végre sikerült megérteni eddig számomra titkot képezö dolgok használatát ( eseg, dseg, cseg meg a táblázatok stb.).
Akit érdekel, ( sajnos nem a legoptimálisabb formátumban ) letölthetö több helyröl:
"chapter 6. AVR advanced assembly lNguage programming".
A google egy oldalnyi találatot ad
Nagyon jok a magyarázatok és rengeteg példa van benne ( söt teszt kérdések is!).
Éljenek a vonatok!

http://www.youtube.com/playlist?list=PLF2674BF4E3765682
Válasz küldése