Newsgroup: it.hobby.elettronica.digitale
Titolo: AVR .db directive

Buon Giorno a Tutto il NG!!
scusate la domanda da novizio, ma non ho capito come leggere i dati definiti
con la direttiva .db, ovvero se scrivo:
.db 5,12,36,49,125,99
in che registro li trovo?, come faccio ad assegnarli....
ho trovato questa routine ma non capisco...... una risposta potrebbe essere,
leggiti il datasheet dei vari AVR, ma se qualcuno mi indicasse la
via...gliene sarei grato..
MyTable:
.DW 0x1234,0x2345,0x3456,0x4568,0x5678  ; The table values, wordwise
.DW 0x6789,0x789A,0x89AB,0x9ABC,0xABCD  ; organised
Read5:    LDI ZH,HIGH(MyTable*2)     ; Adress of table to pointer Z
               LDI ZL,LOW(MyTable*2)      ; multiplied by 2 for bytewise
access
              ADIW ZL,10                            ; Point to fifth value
in table
              LPM                                         ; Read
leastsignificant byte from program memory
              MOV R24,R0                           ; Copy LSB to 16-bit
register
              ADIW ZL,1                              ; Point to MSB in
program memory
              LPM                                         ; Read MSB of
table value
              MOV R25,R0                           ; Copy MSB to 16-bit
register
l'ho copiata e funziona ma non avendo capito come funziona non riesco a
trasformarla da .DW a .DB
Grazie
Sergio

 trasformarla da .DW a .DB
Cerca .db nell'help in linea, e poi LPM.
Troverai anche piccoli esempi di codice.
Però... complimenti, ti sei messo d'impegno! ;)
Un piccolo sforzo sull'help, dai. :)
Buonanotte.
Gabriele.

 >               MOV R25,R0                           ; Copy MSB to 16-bit
register
si usa ADIW ZL,1 in quanto con Z non si può usare INC  ZL?
e poi perchè usare i 2 MOV, non si poteva usare tipo
            LPM R24,Z
            INC ZL
            LPM R25,Z
...Ok mi ripasso meglio l'help...ma ti giuro che l'avevo guardato...il
problema è che gli esempi sono stringati e non inseriti nel contesto
globale, a me che sono agli inizi manca la visione d'insieme, ovvero
l'eventuale impostazione dell'header con tutte le dichiarazioni: ad esempio
da una parte mi si dice, per comodità di definire XH e XL e le versioni Y e
Z, e quando lo faccio mi da errore...probabilmente perchè sono già definite
nel file .Include""....sono banalità ma uno agli inizi si blocca... si
rilegge come 20 volte la direttiva .def, cerca di capire cosa non si può
definire, gira su 10 siti e poi arriva alla soluzione di cui sopra...
Grazie ancora!
Sergio


 nel file .Include""....
Togliti il dubbio e leggi i file include: si capiscono tante cose.
Saluti.
Gabriele.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

trasformarla da .DW a .DB
sostanzialmente non cambia nulla, la locazione di memoria neglli AVR è
16 bits, per cui se fai .DW ti scrive un word alla volta, se fai .DB
ti scrive due bytes adiacenti con cui fa un word.
La definizione  MyTable*2  spiega la contraddizione apparente tra un
indirizzo in Word e un dato in Bytes
Ad esempio tieni presente che per scrivere la fatidica HELLO WORLD su
un lcd devi puntare una scritta come fa la tua routine
	LDI ZH,high(TAB*2)    
             LDI ZL,low(TAB*2)     
	LPM
	TST	r0
ecc.ecc.. (prosegui tu, è un buon esercizio)
TAB	.DB	'HELLO WORLD',0
	.END
e usare LPM per leggere il dato dalla memoria prima di poterlo
scrivere su display
ciao
  Stefano

             LPM R25,Z
Qui non mi trovo molto d'accordo, da quello che ricordo LPM non accetta
argomenti, carica *sempre* il byte puntato da Z (la coppia di registri da 8
bit, che forma un registro da 16 bit, chiamato appunto Z) in R0.
questo è il motivo dei MOV: servono a copiare il contenuto di R0 in un'altro
registro, perchè, quando si andrà a leggere il valore successivo, R0 verrà
sovrascritto col nuovo valore.
INC reg
incrementa di 1 un certo registro da 16 bit.
ADIW reg, 1
aggiunge al registro da 16 bit (word) la quantità 1
tale registro da 16 bit in realtà è una coppia di registri, uno di seguito
all'altro: si passa a quest'istruzione l'indirizzo di quello meno
significativo.
--
...:::Zmaster:::...
zmaste...@tin.it
www.zmaster.tk