;********************************** ;* Zadatak 1 - 2. kz. 28.05.2002. * ;********************************** MOTOR `EQU 0FFFF1000 MOTORSR `EQU 0FFFF1001 CTLR `EQU 0FFFF2000 CTCR `EQU 0FFFF2001 CTIACK `EQU 0FFFF2002 CTIEND `EQU 0FFFF2003 `ORG 0 LOADL R7, 10000 ;inicijalizacija stoga LOADL R0, %D 50000 ;vremenska konstanta STORE R0, (CTLR) ;ucitaj konstantu u LR LOADL R0, %B 11 ;brojilo broji i postavlja prekid STORE R0, (CTCR) ;slanje kontrolne rijeci JR MAIN `ORG 6 `DW 100 ;adresa prekidnog programa MAIN WRST %B 10010000 ;GIE=1, EINT=1 CLEAR R1 ;broj okretaja LOOP LOADcc R0, (MOTORSR) ;da li smo spremni JR_Z LOOP ;cekaj u petlji INC R1 ;povecaj brojac STORE R0, (MOTORSR) ;obrisi spremnost JR LOOP END LOADL R0, 1 ;vrijednost za alarm STORE R0, (ALARM) ;ukljuci alarm HALT `ORG 50 ALARM `DS 1 ;**************************************** ;* Potprogram za provjeru brzine vrtnje * ;**************************************** `ORG 100 STORE R0, (CTIACK) ;potvrdi prihvat prekida PUSH R0 ;pospremi kontekst RDST R0 PUSH R0 CMP %D 50, R1 ;provjeri koliko puta se motor okrenuo JR_N END ;dosegli smo kritican broj okretaja - ALARM CLEAR R1 ;jos nije kriticno, obrisi R1 i broji ponovo POP R0 ;obnovi kontekst WRST R0 POP R0 STORE R0, (CTIEND) ;oznaci kraj obrade prekida RETI `END