Advertisement
Guest User

Untitled

a guest
Dec 5th, 2017
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;   Nazwisko i Imie: Piątkiewicz Kamila
  2. ;
  3.     $NOLIST
  4.     $PAGEWIDTH (160)
  5.     $NOPAGING
  6. ;   ---------------------------------------------------------------------------------------
  7. ;   Program 'user.asm' jest przeznaczony dla studentów informatyki UMCS, ktorzy
  8. ;   rozpoczynaja nauke programowania w jezyku asemblera i beda uzywac do tego celu zestawu
  9. ;   dydaktycznego DSM51x.
  10. ;   ---------------------------------------------------------------------------------------
  11. ;   Uwagi studenta:
  12. ;
  13. ;   Wszystko o układzie czasowo-liczniokowym T0
  14. ;   System przerwań (T0)
  15. ;   ---------------------------------------------------------------------------------------
  16.     $LIST
  17. ;   ---------------------------------------------------------------------------------------
  18. ;   program uzytkownika:
  19. ;   ---------------------------------------------------------------------------------------
  20. ;
  21. ;   adresy i stale programowe:
  22. przyklad_1      equ 70          ; do zmiennej 'przyklad_1' przypisano adres 70
  23. przyklad_2      equ 0FFF0h          ; do zmiennej 'przyklad_2' przypisano wartosc 65520
  24.  
  25. stala_sek_l     equ 250         ; ilość milikesund w sekundzie
  26. stala_sek_h     equ 4
  27.  
  28.  
  29. stala_t0        equ 65535-921       ; ustalona wielkość licznika (1 ms)
  30.  
  31.  
  32. licznik_l       equ 0
  33. licznik_h       equ 0
  34.  
  35.  
  36. ;   bity flagowe programu:
  37. przyklad_3      bit 5           ; do bitu 'przyklad_3' przypisano adres 5
  38. flaga_led       bit 0
  39. flaga_t0        bit 1
  40.  
  41.  
  42. ;   START PROGRAMU:
  43. ;   ---------------
  44.             ljmp    start           ; skocz do strefy przygotowania srodowiska
  45.  
  46.  
  47.  
  48.  
  49. ;   procedury obslugi przerwan:
  50.  
  51.             org 11
  52. int_t0:    
  53.             orl tl0,#low stala_t0   ; podbicie licznika (młodsze bity)
  54.             mov th0,#high stala_t0  ; podbicie licznika (starsze bity)
  55.             setb    flaga_t0        ; ustawienie flagi na 1
  56.             reti                ; powrót do przerwanego programu
  57.  
  58.  
  59.  
  60.  
  61. ;   przygotowanie srodowiska:
  62. start:                          ; start przygotowania srodowiska
  63.             mov licznik_l,#0        ; zerowanie licznika
  64.             mov licznik_h,#0
  65.             mov tmod,#1         ; układ czasowo-licznikowy w trybie 1
  66.             setb    tr0         ; uruchomienie układu T0
  67.             mov th0,#high stala_t0  ; podbicie licznika (starsze bity)
  68.             mov tl0,#low stala_t0   ; podbicie licznika (młodsze bity)
  69.  
  70.             clr flaga_t0        ; zerowanie flagi
  71.             setb    et0         ; włączenie obsługi przerwań T0
  72.             setb    ea          ; włączenie obsługi przerwań
  73.  
  74.  
  75. ;   petla programowa:
  76. petla:                          ; petla programowa
  77.             jnb flaga_t0,ptl_10     ; zapytanie o flagę_t0
  78.             lcall   obsluga_t0      ; wywołanie podprogramu obsługi_t0
  79.  
  80. ptl_10:
  81.             jnb flaga_led,ptl_20    ; zapytanie o flagę_led
  82.             lcall   zmiana_led      ; wywołanie podprogramu obsługi_led
  83.  
  84. ptl_20:
  85.  
  86.             ljmp    petla           ; powrot do poczatku petli
  87. ;
  88.  
  89.  
  90.  
  91. ;   podprogramy:
  92.  
  93. obsluga_t0:
  94.             clr flaga_t0            ; reset flagi_t0
  95.  
  96.             inc licznik_l           ; zwiększenie licznika o 1
  97.             mov a,licznik_l    
  98.             cjne    a,#stala_sek_l,obslt0_20    ; czy licznik jest już równy stałej
  99.             mov licznik_l,#0            ; zerowanie licznika
  100.  
  101.             inc licznik_h           ; zwiększenie licznika o 1
  102.             mov a,licznik_h    
  103.             cjne    a,#stala_sek_h,obslt0_20    ; czy licznik jest już równy stałej
  104.             mov licznik_h,#0            ; zerowanie licznika
  105.             setb    flaga_led           ; ustawienie flagi_led
  106.  
  107. obslt0_20:
  108.             ret                 ; powrót
  109.  
  110.  
  111. zmiana_led:
  112.             clr flaga_led       ; zerowanie flagi_led
  113.             cpl p1.7            ; zmiana stanu diody
  114.             ret             ; powrót
  115.  
  116.  
  117.  
  118. ;   koniec programu
  119. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement