www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Razlaga programa v ARM-u

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
klemen
Član
Član



Pridružen-a: Sre 01 Okt 2003 16:18
Prispevkov: 28
Aktiv.: 0.12
Kraj: Sežana

PrispevekObjavljeno: Tor Maj 26, 2009 7:48 pm    Naslov sporočila:  Razlaga programa v ARM-u Odgovori s citatom

Kaj mi lahko razložite delovanje tega programa?
Kaj dela vsak ukaz:
- DELAY:
- LED_OFF:
- LED_ON:
- LED_INIT:
- XMCHAR:
- XMCODE:
- GETMCODE:
- XWORD:
- ZNAKI:

---------------------------------------------------------------------------------------------------
/* user code here */

.equ PIOC_BASE, 0xFFFFF800 /* Začetni naslov registrov za PIOC */
.equ PIO_PER, 0x00 /* Odmiki... */
.equ PIO_OER, 0x10
.equ PIO_SODR, 0x30
.equ PIO_CODR, 0x34

ZNAKI: .ascii ".-" @ A
.byte 0,0,0,0

.ascii "-..."@ B
.byte 0,0

.ascii "-·-·" @ C
.byte 0,0

.ascii "-.." @ D
.byte 0,0,0

.ascii "." @ E
.byte 0,0,0,0,0

.ascii "..-." @ F
.byte 0,0

.ascii "--." @ G
.byte 0,0,0

.ascii "...." @ H
.byte 0,0

.ascii ".." @ I
.byte 0,0,0,0

.ascii ".---" @ J
.byte 0,0

.ascii "-.-" @ K
.byte 0,0,0

.ascii ".-.." @ L
.byte 0,0

.ascii "--" @ M
.byte 0,0,0,0

.ascii "-." @ N
.byte 0,0,0,0

.ascii "---" @ O
.byte 0,0,0

.ascii ".--." @ P
.byte 0,0

.ascii "--.-" @ Q
.byte 0,0

.ascii ".-." @ R
.byte 0,0,0

.ascii "..." @ S
.byte 0,0,0

.ascii "-" @ T
.byte 0,0,0,0,0

.ascii "..-" @ U
.byte 0,0,0

.ascii "...-" @ V
.byte 0,0

.ascii ".--" @ W
.byte 0,0,0

.ascii "-..-" @ X
.byte 0,0

.ascii "-.--" @ Y
.byte 0,0

.ascii "--.." @ Z
.byte 0,0

.align

niz: .ascii "SOS"
.byte 0
.align

[slovenščina je zame španska vas] LED_INIT /*Inicializiramo oranžno LED lučko*/

glavniprogram:

adr r0,niz
[slovenščina je zame španska vas] XWORD
b glavniprogram

XWORD:
stmed r13!,{r0-r1,lr} /*Shrani registre, ki jih "popackamo"*/

mov r1,r0
ldrb r0,[r1] /*v r0 naloži znak iz naslova, ki je v r1*/
zanka3: [slovenščina je zame španska vas] GETMCODE
[slovenščina je zame španska vas] XMCODE
add r1,r1,#1
ldrb r0,[r1]
cmp r0,#0 /*preveri, znak enak 0 (kar pomeni, da je niz končan)*/
bne zanka3
mov r0,#100 /*v r0 zapiše 100, kar delay-u pove, da mora počakati 1000ms = 1s*/
[slovenščina je zame španska vas] DELAY /*počaka 1 sekundo*/

ldmed r13!,{r0-r1,pc} /*Restavriraj registre, ki smo jih shranili*/

GETMCODE:
stmed r13!,{r1-r3,lr} /*Shrani registre, ki jih "popackamo"*/
/*Tokrat r0 ne shranimo, ker bomo v njem vračali rezultat*/
adr r1,ZNAKI /*v r1 naloži naslov začetka tabele z znaki*/
sub r2,r0,#'A' /*v r2 od znaka ki je v r0 odštemo 'A' (41)*/
mov r3,r2 /*skopiramo vrednost še v r3*/
mov r2,r2,lsl#2 /*v r2 zmnožimo prej zračunano razliko (r0-'A') s 4*/
mov r3,r3,lsl#1 /*v r3 zmnožimo prej zračunano razliko (r0-'A') z 2*/
add r2,r2,r3 /*v r2 seštejemo zgornja produkta, da dobimo zmnožek s 6*/
add r0,r1,r2 /*v r0 naslovu začetka tabele prištejemo izračunani odmik*/
ldmed r13!,{r1-r3,pc} /*Restavriraj registre, ki smo jih shranili*/

XMCODE:
stmed r13!,{r0-r1,lr} /*Shrani registre, ki jih "popackamo"*/

mov r1,r0
ldrb r0,[r1] /*naloži vsebino iz naslova podanega v r1(r0)*/
zanka2: [slovenščina je zame španska vas] XMCHAR
add r1,r1,#1
ldrb r0,[r1]
cmp r0,#0 /*preveri, ali je znak enak 0 (kar pomeni, da je niz končan)*/
bne zanka2
mov r0,#30 /*v r0 naloži 30, kar podprogramu DELAY poda vrednost za 300ms dolgo zakasnitev*/
[slovenščina je zame španska vas] DELAY
ldmed r13!,{r0-r1,pc} /*Restavriraj registre, ki smo jih shranili*/

XMCHAR:
stmed r13!,{r0,lr} /*Shrani registre, ki jih "popackamo"*/
cmp r0,#'.' /*primerja, ali je znak enak '.'*/
moveq r0,#15 /*če je enak, potem pripravi za zamik 150 ms*/
movne r0,#30 /*če pa ni enak '.' (se pravi je '-') pa pripravi za zamik 300 ms*/
[slovenščina je zame španska vas] LED_ON
[slovenščina je zame španska vas] DELAY
[slovenščina je zame španska vas] LED_OFF
mov r0,#15 /*vedno doda še 150 ms zakasnitve*/
[slovenščina je zame španska vas] DELAY
ldmed r13!,{r0,pc} /*Restavriraj registre, ki smo jih shranili*/

LED_INIT:
stmed r13!,{r0-r1,lr} /*Shrani registre, ki jih "popackamo"*/
ldr r0, =PIOC_BASE /*Osnovni naslov PIO krmilnika C*/
mov r1, #1 << 1 /*Enica na bitu 1 (desetiško 2), ki jo bomo zapisali v register PIO*/
str r1, [r0, #PIO_PER] /* Priključek C1 krmili PIO */
str r1, [r0, #PIO_OER] /* Omogoči izhod na C1 */
str r1, [r0, #PIO_SODR] /* Nastavi stanje izhoda na 1 */
ldmed r13!,{r0-r1,pc} /*Restavriraj registre, ki smo jih shranili*/

LED_ON:
stmed r13!,{r0-r1,lr} /*Shrani registre, ki jih "popackamo"*/
ldr r0, =PIOC_BASE /*Osnovni naslov PIO krmilnika C*/
mov r1, #1 << 1 /*Enica na bitu 1, ki jo bomo zapisali v register PIO*/
str r1, [r0, #PIO_CODR] /* Na priključek C1 zapiši stanje 0 */
ldmed r13!,{r0-r1,pc} /*Restavriraj registre, ki smo jih shranili*/

LED_OFF:
stmed r13!,{r0-r1,lr} /*Shrani registre, ki jih "popackamo"*/
ldr r0, =PIOC_BASE /*Osnovni naslov PIO krmilnika C*/
mov r1, #1 << 1 /*Enica na bitu 1, ki jo bomo zapisali v register PIO*/
str r1, [r0, #PIO_SODR] /* Na priključek C1 zapiši stanje 1 */
ldmed r13!,{r0-r1,pc} /*Restavriraj registre, ki smo jih shranili*/

DELAY:
stmed r13!,{r0-r1,lr} /*Shrani registre, ki jih "popackamo"*/

nkrat:
ldr r1,=480000 /*1 obhod zanke traja 4 u.p. -> 480000 obhodov traja 10 ms*/
zanka:
subs r1,r1,#1 /*1 urina perioda */
bne zanka /*1 u.p. + 2 u.p. (kontrolna nevarnost) = 3 u.p.*/
subs r0,r0,#1 /*zmanjšuje r0 do ničle*/
bne nkrat
ldmed r13!,{r0-r1,pc} /*Restavriraj registre, ki smo jih shranili*/


Nazadnje urejal/a klemen Sre Maj 27, 2009 12:00 am; skupaj popravljeno 2 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
domen_puncer
Član
Član



Pridružen-a: Čet 01 Maj 2008 13:30
Prispevkov: 78
Aktiv.: 0.37
Kraj: Ljubljana, Mozirje

PrispevekObjavljeno: Tor Maj 26, 2009 9:02 pm    Naslov sporočila:   Odgovori s citatom

Poglej si:
- arm architecture reference manual (aka armarm)
- users manual od tega procesorja/druzine
- dokumentacijo tvojega zbirnika

Ce si to storil... pa mogoce vprasaj kaj konkretnega, ne pa "ali mi razlozite xxx", saj nimamo pojma kaj ves in kaj ne.

_________________
Tiskanje sudoku
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
klemen
Član
Član



Pridružen-a: Sre 01 Okt 2003 16:18
Prispevkov: 28
Aktiv.: 0.12
Kraj: Sežana

PrispevekObjavljeno: Tor Maj 26, 2009 11:31 pm    Naslov sporočila:   Odgovori s citatom

Jas sem to dobil pa bi rad zastopil kaj počne vsak pod program, kot sem navedel odzgoraj. Nevem kaj preveč zato rabim razlago.
Hvala
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.70
Kraj: Kranj - struževo

PrispevekObjavljeno: Tor Maj 26, 2009 11:41 pm    Naslov sporočila:   Odgovori s citatom

klemen, si ta program od nekje skopiral, sedaj pa bi šel rad na zagovor in to predstavil kot svoje delo? Wink
Če je odgovor DA, potem se boš moral kar sam potruditi. Mi ti ne bomo.
Če je odgovor NE, potem se izjasni kaj, kako, kje, kam, zakaj in ostalo. Par napotkov si že dobil, sedaj pa literaturo v roke in poglej, kaj vsak od teh ukazov počne. Pa si lahko narišeš Flowchart.

_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
klemen
Član
Član



Pridružen-a: Sre 01 Okt 2003 16:18
Prispevkov: 28
Aktiv.: 0.12
Kraj: Sežana

PrispevekObjavljeno: Tor Maj 26, 2009 11:50 pm    Naslov sporočila:   Odgovori s citatom

zanima me kaj dela program v DELAY, LED_OFF, LED_ON, LED_INI, XMCHAR, XMCODE, GETMCODE, XWORD in ZNAKI.
Če bi vedel vas nebi prosil za pomoč al ni tako tle gor?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
.
Član
Član



Pridružen-a: Ned 19 Sep 2004 22:04
Prispevkov: 16777193
Aktiv.: 70802.73

PrispevekObjavljeno: Tor Maj 26, 2009 11:54 pm    Naslov sporočila:   Odgovori s citatom

Brisana vsebina odstranjenega uporabnika.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
klemen
Član
Član



Pridružen-a: Sre 01 Okt 2003 16:18
Prispevkov: 28
Aktiv.: 0.12
Kraj: Sežana

PrispevekObjavljeno: Sre Maj 27, 2009 12:04 am    Naslov sporočila:   Odgovori s citatom

Saj ne delate. Sam razlago bi rabil ker ne štekam kaj počne vsak program.
Če bo kdo bil prijazen in mi napisal mu bom hvaležen, če ne pa ne bo nič.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
MAAG
Član
Član



Pridružen-a: Čet 26 Jun 2008 14:18
Prispevkov: 178
Aktiv.: 0.86
Kraj: SG-MB

PrispevekObjavljeno: Sre Maj 27, 2009 12:19 am    Naslov sporočila:   Odgovori s citatom

Priznam da "se" nimam pojma o ARM tehnologiji, vendar pa si pri prvih stirih podprogramih za katere si napisal lahko priblizno mislim kaj naj bi tam delalo .... ( DELAY( zakasnitev ), LED_OFF ( ugasni LED ), LED_ON ( prizgi LED ), LED_INI ( mogoce kaksna inicilizacija ),... ). Kot sem ze rekel, sklepam glede na ime. Veliko srece se naprej.
Pa roko na srce, saj si ze sam napisal kaj kateri podprogram dela oz. avtor tega programa, ce smo natancni.

P.S: Moram priznati, da toliko komentiranega programa pa se nisem videl kje Smile !

_________________
Samo da se kadi Smile
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.70
Kraj: Kranj - struževo

PrispevekObjavljeno: Sre Maj 27, 2009 10:47 am    Naslov sporočila:   Odgovori s citatom

klemen je napisal/a:
Če bi vedel vas nebi prosil za pomoč al ni tako tle gor?
...
Saj ne delate. Sam razlago bi rabil ker ne štekam kaj počne vsak program.
Če bo kdo bil prijazen in mi napisal mu bom hvaležen, če ne pa ne bo nič.

bla bla bla...
aly je napisal/a:
klemen, si ta program od nekje skopiral, sedaj pa bi šel rad na zagovor in to predstavil kot svoje delo?

DA ali NE?
Točen odgovor, sicer gre tema pod ključ.

_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
klemen
Član
Član



Pridružen-a: Sre 01 Okt 2003 16:18
Prispevkov: 28
Aktiv.: 0.12
Kraj: Sežana

PrispevekObjavljeno: Sre Maj 27, 2009 4:39 pm    Naslov sporočila:   Odgovori s citatom

Rad bi zastopil program kako dela. Če pa vi smatraste da vas zlorablam za šolo, ok dajte pod kluč.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 495 dni


Powered by phpBB © 2001, 2005 phpBB Group