Fórum témák
» Több friss téma |
Bizony..
Gondolom ha ASM-ben programozik, akkor az if feltételt át tudja forgatni. Nem kész kódot kért, hanem segítséget, van még kérdésed? A hozzászólás módosítva: Júl 11, 2016
Nem egészen mindegy, melyik kontrollerre írnád programot.
A hozzászólás módosítva: Júl 11, 2016
Köszönöm mindenkinek a segítőkészséget, végül levonásokkal megoldottam, bár így egy kicsit hosszabb lett a program.
Hát azért az nem annyira egyszerű, de ha megtennéd, hogy ezt a részletet lefordítod, kíváncsi lennék, hogy mire fordul.
Parancsolj: (ez a kód lefordítva)
Hát jó kis maszlag lett belőle...köszi!
Ehhez mit szóltok?
Ebből is látszik, hogy felesleges tartományt vizsgálni . De tényleg nem mindegy, hogy 4 vagy 30 ledet szeretnék használni.
CLRF Aktív MOVLW .10 SUBWF Változó, W BTFSS STATUS,C BSF Aktív,0 MOVLW .20 SUBWF Változó, W BTFSS STATUS,C BSF Aktív,1 ......
Használj dekódoló táblázatot! (Adott értéknél milyen állapotúak a portok.)
Egyszerű és gyors. 4*29 Byte kell hozzá.
Szia!
PIC18-ra én igy oldanám meg:
Csak ugye arra nem kaptunk választ, hogy a 4 port az most hány bitet is jelent.. Ha csak 4-et akkor rendben van, de ha a 4 port 4×8 bitet akkor kicist más a leányzó fekvése. Az, hogy azt írta 2-30 közti értéket akar megjeleníteni, nekem az utóbbi tűnik sanszosnak.
Akkor mi értelme 4 mezőre osztani?
Ebben az esetben minden egyes értéknövekedésre újabb bitet kellene bekapcsolni.
A 4 változót előbb kinullázzuk és a bsf valtozó,x utasítások helyett a decf valtozo+i,f (ahol i: 0 ..3) utasítással lehet a kívánt változó minden bitjét 1 -re állítani.
Azért kell 4 mezőre osztani, mert a 8 bites PIC-ek portjai csak 8 bitesek. Egybként ha végiggondoljuk egy 2-től 30-ig terjedő értéket 4 biten kijelezni elég nehézkes.... Nekem ezért kézenfekvő ha 4×8 bitet használunk akkor pontosan meg lehet jeleníteni az adatokat.
Én itt csak 4 különböző állapotot látok.
Idézet: „2 -109 Marginal 3 -107 Marginal 4 -105 Marginal 5 -103 Marginal 6 -101 Marginal 7 -99 Marginal 8 -97 Marginal 9 -95 Marginal 10 -93 OK 11 -91 OK 12 -89 OK 13 -87 OK 14 -85 OK 15 -83 Good 16 -81 Good 17 -79 Good 18 -77 Good 19 -75 Good 20 -73 Excellent 21 -71 Excellent 22 -69 Excellent 23 -67 Excellent 24 -65 Excellent 25 -63 Excellent 26 -61 Excellent 27 -59 Excellent 28 -57 Excellent 29 -55 Excellent 30 -53 Excellent” Amúgy meg nem lenne egy hátrány, ha a kérdező válaszolna a hozzá intézett kérdésekre, és nem mi próbálnánk meg kitalálni, hogy ő mit akar. Részemről off a téma. A hozzászólás módosítva: Júl 12, 2016
Ez igaz, de akkor én úgy írtam volna, hogy ha 2-9 1. állapot, ha 10-14 2. állapot stb. De ha lényeges az érték is akkor....
Üdvözletek!
Én szúrok el valamit, vagy a fordító, vagy ez normális jelenség?: 18f26k22, B Porton: B0 OUT, B1 ÜRES, B2 DIGIT INPUT,B3 DIGIT INPUT,B4 DIGIT INPUT,B5 ANALOG IN(ez a problémás),B6 OUT,B7 OUT. a gondom, hogy ha engedélyezem a B5-ön a mérést, akkor a B0 0-ra vált (lehet, hogy a többi kimenet is, nem néztem. Mérés előtt teszem 1-be a B0 -t.... A hozzászólás módosítva: Júl 12, 2016
Ez milyen programnyelv?
Kódot mutass, anélkül tippelhetünk napestig.
Nem lehetséges, hogy valamelyik B porton történő analóg olvasás automatikusan analóg bemenetté kapcsolja át az analóg képes B portokat egyszerre?
De mégis, milyen mikrovezérlőről van szó?
Idézet: Ez 18 bit, így ehhez 16-bites portok kellenek.„2-9-ig 1. port aktív, 10-19ig 2. port is aktív,” Idézet: Olyan nyelv nincs, csak olyan hogy Assembly.„ASM-ben programozni” Továbbra is azt mondom hogy a dekodolótáblázat a legegyszerűbb és legrugalmasabb megoldás. Az egyes bitek ill. kimenetek (29 db) bármilyen sorrendben és elrendezésben lehetnek, ami megkönnyíti a vezetékezést. A 4 porthoz 4*29 byte (szó) kell, plusz 4 byte (szó) a maszkoláshoz, ha a portokat másra is használod. A hozzászólás módosítva: Júl 12, 2016
Mutass már nekem egy példát erre a dekódoló táblázatra, érdekelne a dolog, hátha másra is fel tudnám használni.
Ez egy sima tömb, aminek az X. eleme (bemeneti minta) megadja a hozzá tartozó kimeneti mintát. Pofon egyszerű, pl.:
1: 10000000 2: 11000000 3: 11100000 4: 11110000 5: 11111000 6: 11111100 7: 11111110 8: 11111111
„ASM-ben programozni”
"Olyan nyelv nincs, csak olyan hogy Assembly." Nem kéne ennyire szőrözni. Gyakorlatilag olyan nyelv sincs, hogy: assembly. A hozzászólás módosítva: Júl 12, 2016
Én szeretek szőrszálat hasogatni - fejszével.
Egy nyelv alapvető tulajdonsága, hogy a szintaxisa kötött.
Az assembly egy gyűjtő fogalom a gépi kódok helyett a mnemonikok használatára. És azt nem kell ecsetelnem , hogy procitól függően hányfajta szintaxis lehet.
Az ASM pedig az Assembly rövidítése, nem?
A példa átültetve PIC24 Assembly nyelvre:
A hozzászólás módosítva: Júl 12, 2016
A fenti kódot szándékosan írtam terjengősre, hogy jobban látszódjon a logika. Ha a táblázat értékei eleve maszkoltak (márpedig itt azok), és a maszkot az előző inverzére választjuk, akkor portonként 2 utasítás megspórolható:
A hozzászólás módosítva: Júl 13, 2016
Idézet: „Egy nyelv alapvető tulajdonsága, hogy a szintaxisa kötött.” Minden programnyelvre és beszélt nyelvre is igaz. Idézet: „Az assembly egy gyűjtő fogalom a gépi kódok helyett a mnemonikok használatára.” A mnemonikok használata csak egy dolog abból amit az assembly nyelv tud: Direktívák használata a kód és a változók elhelyezésére, helyfoglalásra. Szimbólumok definiálási lehetősége, a szimlólumokkal műveletet végezhetők fordítási időben. Makro -k használata. Ha elkészítenél egy ilyen fordító programot, a mnemonik - kód átalakítás lecserélésével át tudnád alakítani más kontrollerre, mikroprocesszorra. Elég a makrok kihasználása, hogy a MpLab Assembler -ével más kontrollerre fordíts. A hozzászólás módosítva: Júl 13, 2016
Kicsit talán látványosabb példa a klasszikus BCD -> 7 szegmens dekódolás:
Esetleg:
|
Bejelentkezés
Hirdetés |