Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ORG 0
- B GLAVNI ;skok na glavni program
- ORG 18
- B PREKIDNI ;skok na prekidni potprogram
- PREKIDNI STMDA R13!,{R0,R1,R2,R3,R14} ;spremanje konteksta na pocetku
- ;obrati pozornost da spremamo i R14 jer imamo 'gnjezdenje potprograma'
- LDR R0,RTC ;ucitavamo adresu RTC-a
- STR R1,[R0,#8] ;dojava prihvata prekida za RTC (saljemo bilo sto)
- MOV R1,#0
- STR R1,[R0,#0C] ;resetiranje brojila na 0
- BL ISPISI_ZNAKOVE ;skok na potprogram za ispis znakova
- LDMIB R13!,{R0,R1,R2,R3,R14} ;obnova konteksta na kraju
- SUBS PC,R14,#4 ;povratak iz prekidnog potprograma
- GLAVNI
- ;GPIO necemo trebati inicijalizirat, jer je spojen na B vrata, svi bitovi su inicijalno izlazni sto nam odgovara
- MOV R13,#1<12 ;inicijalizacija stoga
- LDR R1,RTC ;ucitavanje adrese RTC-a
- MOV R0,#1
- MOV R0,R0,LSL #8 ;256 = 2^8, jedinicu koja je u registru 8 puta shift-amo u lijevo
- STR R0,[R1,#4] ;punimo registar usporedbe
- MOV R0,#1
- STR R0,[R1,#10] ;omogucavanje prekida za RTC
- MRS R0,CPSR ;procitaj CPSR u R0
- BIC R0,R0,#80 ;omoguci IRQ prekide
- MSR CPSR_c,R0 ;pohrani R0 u CPSR
- PETLJA B PETLJA ;beskonacna petlja ('koristan posao')
- ISPISI_ZNAKOVE
- STMDA R13!,{R4,R5,R6,R7,R14} ;spremanje konteksta na pocetku
- LDR R4,GPIO ;ucitavamo adresu GPIO-a
- MOV R5,#0D ;brisanje trenutnog stanja internog registra
- BL LCDWR
- MOV R5,#3E ;znak '>', upisujemo ga 3 puta
- BL LCDWR
- BL LCDWR
- BL LCDWR
- LDR R6,INDEX ;ucitavanje odmaka od pocetka bloka
- POV MOV R7,#4<8 ;upisivanje broja 400, tu se nalazi nas blok podataka, ovdje cemo se vratiti ako smo dosli do posljednjeg znaka
- ;kako bi ponovno ucitali prvi znak iz niza
- ADD R7,R6,R7 ;izracunavanje adrese naseg znaka
- LDRB R5,[R7] ;ucitavanje znaka za ispis
- CMP R5,#0
- MOVEQ R6,#0 ;provjeravamo da li se radi o posljednjem znaku, u tom slucaju resetiramo INDEX
- BEQ POV
- BL LCDWR
- ADD R6,R6,#1 ;uvecavamo odmak
- STR R6,INDEX ;spremamo uvecanu verziju odmaka
- MOV R5,#3C ;znak '<', upisujemo ga 3 puta
- BL LCDWR
- BL LCDWR
- BL LCDWR
- MOV R5,#0A ;ispis trenutnog stanja internog registra
- BL LCDWR
- KRAJ LDMIB R13!,{R4,R5,R6,R7,R14} ;obnova konteksta na kraju
- MOV PC,LR ;povratak iz potprograma
- ;registar R4 -> adresa GPIO
- ;registar R5 -> znak za ispis
- ;ovaj potprogram ce svoje parametre primat preko dva gore navedena registra
- LCDWR STMDA R13!,{R5} ;spremanje konteksta
- AND R5,R5,#7F ;postavljanje vodeceg bita u nulu
- STR R5,[R4,#4] ;slanje znaka na izlazna vrata
- ORR R5,R5,#80 ;postavljanje vodeceg bita u jedinicu
- STR R5,[R4,#4] ;kreiramo impuls na izlaznim vratima*
- AND R5,R5,#7F ;postavljanje vodeceg bita u nulu
- STR R5,[R4,#4] ;*pomocu vodeceg bita
- LDMIB R13!,{R5} ;obnavljanje konteksta
- MOV PC,LR ;izlazak iz prekidnog potprograma
- ORG 300 ;adresa od GPIO
- GPIO DW FFFFFF00
- ORG 320 ;adresa od RTC
- RTC DW FFFFFE00
- ORG 340 ;adresa od varijable INDEX
- INDEX DW 0
- ORG 400 ;adresa naseg bloka podataka
- DB 49,6e,74,65,72,6e,61,74,69,6f,6e,61,6c,69,73,61,74,69,6f,6e,0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement