Laboratorium Architektury Komputerów |
||||||
Rok akademicki |
Termin |
Rodzaj studiów |
Miejscowość studiów |
Prowadzący |
Grupa |
|
2007/2008 |
06.04.2008r. |
Zaoczne |
Dąbrowa Górnicza |
Krzysztof Tokarz |
2a |
|
|
13:40-15:10 |
|
|
|
|
|
Numer ćwiczenia |
Temat ćwiczenia |
|||||
1 |
Ćwiczenie 1: Podstawowe operacje Mikrokontrolera 8051 |
|||||
Skład sekcji: |
||||||
Nazwisko i Imię: Matusiak Radosław |
||||||
Nazwisko i Imię: Wykurz Rafał |
||||||
Nazwisko i Imię: Ziętek Maciej |
||||||
Nazwisko i Imię: Zyzik Łukasz |
Treść sprawozdania:
Co to jest 8051?
8051 - mikrokontroler stworzony przez firmę Intel w 1980 roku. Zapoczątkował rodzinę mikrokontrolerów MCS-51 (od ang. MicroComputer System) będących udoskonalonymi lub wyspecjalizowanymi mikrokontrolerami o tej samej, ośmiobitowej architekturze i kompatybilnej z pierwowzorem liście rozkazów.
Wpisywane komendy:
LJMP START
ORG 100H
START:
MOV A, #10H
ADD A, #04H
MOV A, #80H
ADD A, #81H
MOV A, #0
ADDC A, #0
Spostrzeżenia:
Po wpisaniu podanych wyżej komend zaobserwowaliśmy jak zmieniają się wartości w akumulatorze (ACC),a także w rejestrze stanu programu (PSW - z ang. Program Status Word). Po aktywacji komendy „MOV A, #10H” do ACC została wpisana liczba „10” [1010], a w PSW mieliśmy „1”. Przy komendzie „ADD A, #04H” nastąpiło dodanie do wartości w akumulatorze liczby „4”,co dało nam 10+4=14
[1000 + 0100 = 1110]. W PSW natomiast pojawiło nam się „0”, co oznaczało nieparzystą liczbę jedynek w zapisie uzupełnień do dwóch (U2), natomiast bity 7. i 2. także mają wartość „0”, gdyż nie występuje ani przeniesienie, ani przepełnienie, co daje nam [0000 0000] w PSW.
Następnie, gdy w akumulatorze mamy już liczbę „80”, dodajemy komendą
„ADD A, #81H” liczbę „81”, dzięki czemu w bitach 2. (przepełnienia) i 7. (przeniesienia) pojawia się „1”, a bit 0. wynosi „0”, gdyż „1” [0001], która jest zapisana w akumulatorze i jest nadmiarem (resztą), w zapisie U2 ma nieparzystą liczbę jedynek. W PSW pojawia się liczba „85” [1000 0101].
Następny rozkaz wpisuje „0” do ACC, co nadpisuje naszą „1” z ACC i „85” z PSW zostaje zmniejszone na „84”. Dzieje się tak ponieważ bit 0. (który zmienia swoją wartość w zależności od parzystej, bądź nieparzystej liczby jedynek w zapisie U2) zmienił swoją wartość z „0” na „1”, dlatego otrzymaliśmy liczbę „84” [1000 0100].
Ostatnia komenda - „ADDC A, #0” powoduje dodawanie z przeniesieniem, a dokładniej, dodaje „0” do liczby w akumulatorze, która wynosi również „0”, z tą różnicą, że dodana zostaje także nasza reszta, czyli „1”. W wyniku tej sumy otrzymujemy „0 + 0 + 1 = 1”. Skoro w ACC mamy „1”, to w rejestrze stanu programu będziemy mieli „0”, bo liczba jedynek w zapisie U2 jest nieparzysta - [0001].
Wyjaśnienie:
W wyżej podanym ćwiczeniu występuje przeniesienie i zapisanie „1” w akumulatorze. Dzieje się tak dlatego, że skala posiada 256 liczb, tj. od 0 do 255. W tym przypadku mamy sumę liczb „80” [1000 0000] i „81” [1000 0001]. Należy jednak pamiętać, że są to liczby w systemie heksadecymalnym (szesnastkowym), co oznacza w systemie decymalnym (dziesiątkowym) „128” i „129”. W wyniku tej sumy mamy wynik „128 + 129 = 257”, co w naszym ćwiczeniu daje „256 (przeniesioną jedynkę) +1”, która zostaje umieszczona w ACC.
Wniosek:
Jest to bardzo ciekawe ćwiczenie. Pozwala nam zrozumieć i wykorzystać działanie 8051 w zaledwie podstawowych działaniach. Nie ukrywamy jednak, że sprawiło nam sporo kłopotu.