Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Nazwisko i Imie: Piątkiewicz Kamila
- ;
- $NOLIST
- $PAGEWIDTH (160)
- $NOPAGING
- ; ---------------------------------------------------------------------------------------
- ; Program 'user.asm' jest przeznaczony dla studentów informatyki UMCS, ktorzy
- ; rozpoczynaja nauke programowania w jezyku asemblera i beda uzywac do tego celu zestawu
- ; dydaktycznego DSM51x.
- ; ---------------------------------------------------------------------------------------
- ; Uwagi studenta:
- ;
- ; Wszystko o układzie czasowo-liczniokowym T0
- ; System przerwań (T0)
- ; ---------------------------------------------------------------------------------------
- $LIST
- ; ---------------------------------------------------------------------------------------
- ; program uzytkownika:
- ; ---------------------------------------------------------------------------------------
- ;
- ; adresy i stale programowe:
- przyklad_1 equ 70 ; do zmiennej 'przyklad_1' przypisano adres 70
- przyklad_2 equ 0FFF0h ; do zmiennej 'przyklad_2' przypisano wartosc 65520
- stala_sek_l equ 250 ; ilość milikesund w sekundzie
- stala_sek_h equ 4
- stala_t0 equ 65535-921 ; ustalona wielkość licznika (1 ms)
- licznik_l equ 0
- licznik_h equ 0
- ; bity flagowe programu:
- przyklad_3 bit 5 ; do bitu 'przyklad_3' przypisano adres 5
- flaga_led bit 0
- flaga_t0 bit 1
- ; START PROGRAMU:
- ; ---------------
- ljmp start ; skocz do strefy przygotowania srodowiska
- ; procedury obslugi przerwan:
- org 11
- int_t0:
- orl tl0,#low stala_t0 ; podbicie licznika (młodsze bity)
- mov th0,#high stala_t0 ; podbicie licznika (starsze bity)
- setb flaga_t0 ; ustawienie flagi na 1
- reti ; powrót do przerwanego programu
- ; przygotowanie srodowiska:
- start: ; start przygotowania srodowiska
- mov licznik_l,#0 ; zerowanie licznika
- mov licznik_h,#0
- mov tmod,#1 ; układ czasowo-licznikowy w trybie 1
- setb tr0 ; uruchomienie układu T0
- mov th0,#high stala_t0 ; podbicie licznika (starsze bity)
- mov tl0,#low stala_t0 ; podbicie licznika (młodsze bity)
- clr flaga_t0 ; zerowanie flagi
- setb et0 ; włączenie obsługi przerwań T0
- setb ea ; włączenie obsługi przerwań
- ; petla programowa:
- petla: ; petla programowa
- jnb flaga_t0,ptl_10 ; zapytanie o flagę_t0
- lcall obsluga_t0 ; wywołanie podprogramu obsługi_t0
- ptl_10:
- jnb flaga_led,ptl_20 ; zapytanie o flagę_led
- lcall zmiana_led ; wywołanie podprogramu obsługi_led
- ptl_20:
- ljmp petla ; powrot do poczatku petli
- ;
- ; podprogramy:
- obsluga_t0:
- clr flaga_t0 ; reset flagi_t0
- inc licznik_l ; zwiększenie licznika o 1
- mov a,licznik_l
- cjne a,#stala_sek_l,obslt0_20 ; czy licznik jest już równy stałej
- mov licznik_l,#0 ; zerowanie licznika
- inc licznik_h ; zwiększenie licznika o 1
- mov a,licznik_h
- cjne a,#stala_sek_h,obslt0_20 ; czy licznik jest już równy stałej
- mov licznik_h,#0 ; zerowanie licznika
- setb flaga_led ; ustawienie flagi_led
- obslt0_20:
- ret ; powrót
- zmiana_led:
- clr flaga_led ; zerowanie flagi_led
- cpl p1.7 ; zmiana stanu diody
- ret ; powrót
- ; koniec programu
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement