Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- MAIN MOV SP, #0x10000;inicijalizacija stoga
- LDR R1, GPIO1;adresa GPIO1
- LDR R2, GPIO2;adresa GPIO2
- INIT MOV R3, #0b11111100
- STR R3, [R2, #8];inicijalizacija ulaza vrata A GPIO 2
- MOV R3, #0b10000000;
- STR R3, [R1, #8];inicijlaizacija ulaza vrata A GPIO 1
- LOOP LDR R3, [R2];dohvati podatke sa vrata A GPIO2
- ANDS R3, R3, #00000010; provjeri da li je sklopka iskljucena
- OFF STREQ R3, [R2];ugasi ledice(R3 je 0 zbog uvjeta)
- BEQ LOOP;
- ON LDR R3, [R1];dohvaćanje podatka sa vrata A GPIO1
- MOV R4, #0b10000000;
- STR R4, [R1];postavi ACK u 1
- READY TST R3, #0b01000000;provjeri da li je uređaj spreman (RDY = 1)
- BEQ LOOP;
- SPREMAN STMFD SP!, {R1};spremanje adrese DR na stog
- BL CITANJE;pokretanje čitanja
- LDMFD SP!, {R1};čišćenje stoga
- GOTOV AND R3, R3, #0b01111111;
- STR R3, [R1, #0];postavi ACK u 0
- B LOOP;
- CITANJE STMFD SP!, {R1-R4, LR};spremanje konteksta
- LDR R1, [SP, #20];dohvaćanje parametra sa stoga
- LDR R2, [R1];dohvaćanje temeprature
- AND R2, R2, #0b00011111;
- LDR R4, GPIO2;lokacija GPIO2 i njegovih vrata A
- LDR R3, TEMP;učitaj prethodnu temperaturu
- ;sljedeći odsječak provjerava da li je trenutna temperatura u traženom intervalu
- ;i na temelju toga daje podatak kojim se inicijaliziraju ledice
- UVJET SUB R3, R2, R3;
- MUL R0, R3, R3; R3^2 jer želimo apsolutnu vrijednost razlike
- CMP R0, #4;
- LEDICE MOVHS R0, #0b00100000;ako je razlika veca ili jednaka 2 podatak aktivira crvenu ledicu
- MOVLO R0, #0b10000000;ako je razlika manja od 2 podatak aktivira zelenu ledicu
- STR R0, [R4];postavi ledice
- KRAJ STR R2, TEMP;spremi na lokaciju TEMP
- LDMFD SP!,{R1-R4, LR};vraćanje konteksta
- MOV PC, LR;
- TEMP DW 20;
- GPIO1 DW 0xFFFF0F00;
- GPIO2 DW 0xFFFF0B00;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement