Evo koda:
.DSEG
decimal: .Byte 9
.CSEG
.ORG 0x0000
rjmp _Reset
_Reset:
ldi r16,byte2(RAMEND)
out SPH,r16
ldi r16,byte1(RAMEND)
out SPL,r16
ldi xh,byte2(decimal)
ldi xl,byte1(decimal)
ldi r16,0x3f ; 0
st X+,r16
ldi r16,0x06 ; 1
st X+,r16
ldi r16,0x5b ; 2
st X+,r16
ldi r16,0x4f ; 3
st X+,r16
ldi r16,0x66 ; 4
st X+,r16
ldi r16,0x6d ; 5
st X+,r16
ldi r16,0x7d ; 6
st X+,r16
ldi r16,0x07 ; 7
st X+,r16
ldi r16,0x7f ; 8
st X+,r16
ldi r16,0x6f ; 9
st X+,r16
Slika iz simulatora je prilozena i kao sto se vidi na memorijske lokacije su upisane sve tocno vrijednosti koje trebaju...jeli sada tako ok? Izbacio sam Y jer vidim da se on koristi za program memory....i tu uvijek radim gresku...znaci na pocetku xh i xl ucitaju velicinu arraya rezerviraju velicinu arraya u SRAM-u, zatim upisujem u registar R16 vrijednosti brojeva od 0 - 9 za 7 Segmentni Display i pomocu naredbe st (Store) upisujem iz registra R16 u SRAM (memoriju) na prvu rezervirani index lokaciju a to je 0x0100 zatim sa X+ se povecava index za jedan tj incrementiraj brojac na sljedecu memorijsku lokaciju...upisujem u registar R16 novu vrijednost pa preko st narede upisujem na drugu memorijsku lokaciju i tako u loop do se ne upise svih 10 hex vrijednosti 7 segmentnih brojeva...
Posebno na slici primjetiti kako su lijepo upisani brojevi u SRAM (fantasticno je ovo...raditi preko SRAM-a jest malo kompleksnije ali je za 1 cycle brzi od spremanja konstane u flash...znam da mi sada netreba ta brzina ali kad vec ucim da naucim kako treba...kad tad ce mi trebati pisanje i citajne iz SRAM-a)
.DSEG
decimal: .Byte 9
.CSEG
.ORG 0x0000
rjmp _Reset
_Reset:
ldi r16,byte2(RAMEND)
out SPH,r16
ldi r16,byte1(RAMEND)
out SPL,r16
ldi xh,byte2(decimal)
ldi xl,byte1(decimal)
ldi r16,0x3f ; 0
st X+,r16
ldi r16,0x06 ; 1
st X+,r16
ldi r16,0x5b ; 2
st X+,r16
ldi r16,0x4f ; 3
st X+,r16
ldi r16,0x66 ; 4
st X+,r16
ldi r16,0x6d ; 5
st X+,r16
ldi r16,0x7d ; 6
st X+,r16
ldi r16,0x07 ; 7
st X+,r16
ldi r16,0x7f ; 8
st X+,r16
ldi r16,0x6f ; 9
st X+,r16
Slika iz simulatora je prilozena i kao sto se vidi na memorijske lokacije su upisane sve tocno vrijednosti koje trebaju...jeli sada tako ok? Izbacio sam Y jer vidim da se on koristi za program memory....i tu uvijek radim gresku...znaci na pocetku xh i xl ucitaju velicinu arraya rezerviraju velicinu arraya u SRAM-u, zatim upisujem u registar R16 vrijednosti brojeva od 0 - 9 za 7 Segmentni Display i pomocu naredbe st (Store) upisujem iz registra R16 u SRAM (memoriju) na prvu rezervirani index lokaciju a to je 0x0100 zatim sa X+ se povecava index za jedan tj incrementiraj brojac na sljedecu memorijsku lokaciju...upisujem u registar R16 novu vrijednost pa preko st narede upisujem na drugu memorijsku lokaciju i tako u loop do se ne upise svih 10 hex vrijednosti 7 segmentnih brojeva...
Posebno na slici primjetiti kako su lijepo upisani brojevi u SRAM (fantasticno je ovo...raditi preko SRAM-a jest malo kompleksnije ali je za 1 cycle brzi od spremanja konstane u flash...znam da mi sada netreba ta brzina ali kad vec ucim da naucim kako treba...kad tad ce mi trebati pisanje i citajne iz SRAM-a)