Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

DB w asm [AVR]

JacekR
-
-
Posty:52
Rejestracja:2 kwie 2004, o 18:43
Lokalizacja:PL
DB w asm [AVR]

Postautor: JacekR » 23 gru 2004, o 09:07

Witam

Jezeli tworze 1 DB to umie to "obsluzyc"
F_TABLE:
.db 0b00000000,0b00000000
.db 0b00000000,0b00000000
.db 0b00000000,0b00000000
.db 0b00000000,0b00000000
.db 0b00100110,0b01001001
.db 0b01001001,0b01001001
.db 0b00110010,0b00000000

ldi ZH, high(F_TABLE*2)
ldi ZL, low(F_TABLE*2)
lpm
st Y+,r0

Ale jak sie "obsluguje kilka DB ??

F_TABLE:
Hz0Hz: .db 0x00,0x00,0x00,0x00
Hz1Hz: .db 0x01,0x00,0x00,0x00
Hz10Hz: .db 0x0a,0x00,0x00,0x00
Hz100Hz: .db 0x64,0x00,0x00,0x00
Hz1kHz: .db 0xe8,0x03,0x00,0x00
Hz10kHz: .db 0x10,0x27,0x00,0x00
Hz100kHz: .db 0xa0,0x86,0x01,0x00
Hz1MHz: .db 0x40,0x42,0x0f,0x00
Hz10MHz: .db 0x80,0x96,0x98,0x00


Z góry dziekuje za podpowiedz.

Awatar użytkownika
gawel
-
-
Posty:683
Rejestracja:24 lis 2003, o 11:19
Lokalizacja:Białystok

Postautor: gawel » 23 gru 2004, o 10:35

Robi się dokładnie tak samo. A w czym jest problem?

JacekR
-
-
Posty:52
Rejestracja:2 kwie 2004, o 18:43
Lokalizacja:PL

Postautor: JacekR » 23 gru 2004, o 13:51

potrzebuje zrobic takie cos :

mam DB z tekstem
TEXT:
.DB "ala ma kota"

i na podstawie pobranych literek ma je zamienic na ciagi bajtow :

a: .DB 0b00001111, 0b010101010, (...)
(...)
l: .DB 0b00111111, 0b010101010, (...)
(...)

i nie wiem jak sie do tego zabrac :(

Awatar użytkownika
gawel
-
-
Posty:683
Rejestracja:24 lis 2003, o 11:19
Lokalizacja:Białystok

Postautor: gawel » 23 gru 2004, o 22:05

Czyli (jeżeli dobrze rozumiem) potrzebujesz przekodować znaki z jakiegoś napisu. Każdy z znak z napisu (np. ala ma kota) zamienić na inny znak (przekodować przez tablicę), tak? Czy .DB 0b00001111 (z etykiety a:) odpowiada znakowi 'a', kolejno (z db 0b010101010) ma zastępować literę 'b' ..... DB 0b00111111 (te z l: za zastępować literę 'l'), kolejno 0b010101010, zastępuje literę 'm', itd.?

JacekR
-
-
Posty:52
Rejestracja:2 kwie 2004, o 18:43
Lokalizacja:PL

Postautor: JacekR » 24 gru 2004, o 14:11

tak tylko ze litere na "l" zamienic na :
5 bitow np $ff,$ff,$ff,$ff,$ff

Awatar użytkownika
tasza
-
-
Posty:456
Rejestracja:17 sty 2005, o 10:52

Postautor: tasza » 17 sty 2005, o 15:49

tak tylko ze litere na "l" zamienic na :
5 bitow np $ff,$ff,$ff,$ff,$ff
vide to "ala ma kota"

to może taki look-up?
zdefiniuj tak:

Kod: Zaznacz cały

ZNAKI: .db 'a', 0xFF, 0xFF,0xFF,0xFF, 0xFF .db 'l', 0xEE, 0xEE,0xEE,0xEE, 0xEE .db 'm', 0xDD,0xDD,0xDD,0xDD,0xDD ;itd, itd.... .db 0xFF
i taki algorytm ogólny:

Kod: Zaznacz cały

do_wyszukania = '?' adr_pocz = ZNAKI SZUKAJ: if zawartość (adr_pocz) = do_wyszukania then zwróć adr_pocz+1 // pierwszy bajt danych szukanego wzorca else if zawartość (adr_pocz) = 0xFF then zwróć błąd? - nie ma takiego znaku? else adr_pocz = adr_pocz + 6 // bo jeden "rekord" tabelki ma 6 bajtów goto SZUKAJ end if end if


średnio to efektywne jest, ale takie "cuś" kiedyś mi zadziałało...

miłego!

Wróć do „AVR/AVR32”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 9 gości