Advertisement
Guest User

Untitled

a guest
Jan 25th, 2020
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. W trzecim ćwiczeniu naszym zadaniem było samodzielnie przekształcić podany kod tak aby zadziałał z przerwaniem(1).
  2.  
  3. Podczas zmiany kodu na docelowy pojawiło się kilka problemów z którymi musieliśmy się uporać.
  4. Pierwszym z nich było dodanie odpowiednio zmodyfikowanego rozkazu MOV 0a8h,#81h, z poprzedniego ćwiczenia. Z informacji odnośnie maski przerwań odczytaliśmy, że do adresu IE musimy przenieść liczbę która będzie aktywować bit maski systemu przerwań oraz bit maski przerwania z licznika czasowego T0 – była to liczba 10000010 w systemie binarnym (82 w hexie).
  5. Następnym krokiem było dodanie rozkazu ljmp A113 na początku kodu. Przerwanie to miało się aktywować w momencie przepełnienia licznika T0.W tym celu uzależniliśmy przerwanie od stanu komórki adresu 0BH, który odpowiada za Timer 0. Aby pokazać że przerwanie nastąpiło zerowaliśmy za pomocą rozkazu CLR TF0, po czym reti umożliwiało powrót do głównego działania programu.
  6. Teoretycznie rzecz ujmując, program w tym momencie powinien zacząć działać, jednak jak to w życiu bywa stać się tak nie stało. Okazało się że mamy błąd w kodzie, który uniemożliwiał poprawną kompilacje. Z pomocą profesora doszliśmy do szkopułu, który tkwił w złym umiejscowieniu rozkazu ORG 100 - znalazł się on za etykietą A113. Po przepisaniu go nad etykietę A113, program się skompilował oraz uruchomił.
  7.  
  8. Ćwiczenie to umożliwiło nam eksperymentowanie z kodem. Na zasadzie prób i błędów udało nam się ostatecznie osiągnąć zamierzony cel, a zwalczanie problemów pozwoliło lepiej zapoznać się z tematem.
  9.  
  10.  
  11. Przerwanie(1) -
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement