Byte tükrözés

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Hooligan01

Byte tükrözés

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

Hello!

A kérdés a következő:

Adott egy byte amit tükrözni kéne.

pl.: 00100011 -> 11000100

Van erre valami megoldás a bitenkénti macera helyett?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

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

Necces....

Kód: Egész kijelölése

dim t as byte'bemeno
dim a as byte 'eredmeny
a.0=t.7
a.1=t.6
a.2=t.5
a.3=t.4
a.4=t.3
a.5=t.2
a.6=t.1
a.7=t.0
t=a'hogy helycsre legyen...

Csak nem sikerult portot fordítva bekötni?
Hooligan01

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

Nem elkötés, csak zsonglőrködni kell egy helyen a programban...

Kb ugyanerre az eredményre jutottam énis :D

Azért köszi!
Avatar
TyuTyu
DrótVégénSzéndarab
Hozzászólások: 40
Csatlakozott: 2005. június 5. vasárnap, 6:00

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

Hali,

carry-n keresztul rotalas/shift

meglesendo: LSL, LSR, ROL, ROR

TyuTyu
Hooligan01

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

igen, asm a barátunk :)
Avatar
norbi
Chipgyilok
Hozzászólások: 308
Csatlakozott: 2006. augusztus 3. csütörtök, 6:00

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

Ebből a tükrözéséses módszerből ugye nem lehet gubanc, ha egy Mega128-RTL8019AS összeállításnál az adatvonal tartalmát tükröznöm kell?

Így sokkal egyszerűbb a nyákterv, ha az AVR Px.7-je megy az RTL SD0-ra, s gy tovább...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

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

Persze, nyugodtan megteheted....
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

Írtam gyakorlás képen Byte tükröző rutint Asm-ban.
Lehet használni.

Kód: Egész kijelölése

'Byte Tükrözés Asm-ben
'Írta Kapu48

$sim
$regfile = "m16def.dat"                                     ' we use the M16
'$regfile = "m644def.dat"                                    ' we use the M644

$crystal = 14745600
$baud = 1200

$hwstack = 64
$swstack = 64
$framesize = 64


Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
Config Lcd = 20 * 4

Dim Fordito As Byte
Fordito = 204                                               'Bin 11001100

Initlcd
Cls
Lcd Bin(fordito) ; "="

$asm

Push R16
Push R17
Push R18
Ldi R16,8
Lds R17,{Fordito}

Doo:
Rol R17
Ror R18
Dec R16
Brne Doo
Sts {Fordito},R18

Pop R18
Pop R17
Pop R16
$end Asm

Lcd Bin(fordito)                                            'Bin 00110011, Dec 51

End                                                         'end program
:)
Avatar
kovacsna
Pákabűvész
Hozzászólások: 208
Csatlakozott: 2008. június 3. kedd, 6:00

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

Hali.

Nem a legelegánsabb megoldás, de működik:)

Kód: Egész kijelölése

Dim A As Byte
Dim B As Byte
Dim I As Byte
Dim K As Byte

A = &B00100011


For I = 0 To 7

K = 7 - I
B.k = A.i

Next

Print Bin(b)

End
KN
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

Üdv!
Pusztán kíváncsiságból lemértem szimulátorba mindkét változatot.
Csak a 8*-os ciklusmag hossza (Körítések nélkül):
Asm-ban: 44 órajel.
Bascomban: 990 órajel

Figyelemre méltó különbség!
Kezd érdekelni az Asm. lehetőségei.
:lol:
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

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

:) Egyszerűbb prg esetén az ASM is járható...
Ha meg időkritikus az alkalmazás, akkor tényleg az van / vagy a chipben legyen tartalék...

Bár az LCD-re kiírás ASMben ~1 oldal, míg Bascomban 4 sor:)
Válasz küldése