Ćwiczenie 22 Sprawko3 12 2009 doc


Laboratorium Układów Mikroprocesorowych

Rok akademicki

Termin

Rodzaj studiów

Kierunek

Prowadzący

Grupa

Sekcja

2008/2009

Wtorek

18:15-19:45

wieczorowe

INF

GD

2

1

Sprawozdanie z ćwiczenia numer 22

Data wykonania ćwiczenia: 2008-11-27

Temat ćwiczenia:

Mikrokontrolery rodziny 8051

Skład podsekcji 2:

Robert Piekorz

Sylwester Bednorz

Rafał Pulnar

Anna Randak

Damian Machnik

Skład podsekcji 3:

Rafał Skowron

Henryk Nycz

Piotr Hankiewicz

Michał Szczęsny

Skład podsekcji 1:

Rafał Pacan

Paweł Sadowski

Grzegorz Kwiatkowski

Robert Uszok

Wojciech Szymoszek

Ireneusz Zydroń

1. CEL ĆWICZENIA

Celem ćwiczenia jest zapoznanie się z mikrokomputerem jednoukładowym z rodziny 8051, oraz metodologią uruchamiania oprogramowania na ten komputer.

Ćwiczenia do wykonania:

  1. „Program z krążącą jedynką” - odczytuje z portu P0 dane: P0.0 - taktowanie, program reaguje na zmianę z 0 na 1, P0.1 - kierunek przesuwania 1 prawo 0 lewo, na port P1 wystawia odpowiednio zera i jedną jedynkę która "krąży" w takt "zegara" P0.0 .

  2. „Program ze znikającą jedynką” - odczytuje z portu P0 dane: P0.0 - taktowanie, program reaguje na zmianę z 0 na 1, P0.1 - kierunek przesuwania 1 prawo 0 lewo, na port P1 wystawia odpowiednio zera i jedną jedynkę która "krąży" w takt "zegara" P0.0 , ma przechodzić z ostatniej pozycji do pierwszej, albo z pierwszej do ostatniej przez niewidoczny bit.

  3. Stworzyć program przepisujący ciąg znaków. Dopuszczalne są tylko litery małe, duże i cyfry. Przepisany ciąg ma zostać zmodyfikowany:

a./ Duże litery zostaną zamienione na małe.

b./ Małe litery pozostaną bez zmian.

c./ Cyfry zostaną zamienione na spacje.

d./ Ciąg zaczyna się pod adresem 20h w pamięci.

e./ Zmodyfikowany ciąg należy zapisać w te samo miejsce.

f./ Program ma się zakończyć po napotkaniu gwiazdki.

2. ROZWIĄZANIE PROBLEMU

Analiza:

Rozwiązanie programu opiera się przede wszystkim na dwóch pętlach prawo i czekaj. Ich działanie polega na przesunięciu bitowym danej liczby rozkazami rr i rl. Ponieważ rozkazy te działają tylko na akumulatorze wartość portu P1 zostaje przed przesunięciem zapisana w akumulatorze a następnie ponownie przepisana na port P1. Wartość początkowa portu P1 została ustalona na początku programu.

Kod programu:

org 0

mov A, #1 ;wartość początkowa

mov P1, A ;wysłanie jej na port P1

start: jb P0.0, start ;wykona skok jeśli P0.0 jest ustawione

jb P0.1, prawo ;wykona skok jeśli P0.1 jest ustawiony

rl A ; przesuwa w lewo zawartość akumulatora

mov P1, A ;przepisuje zawartość akumulatora na port P1

czekaj: jnb P0.0, czekaj ;wykona skok jeśli P0.0 jest wyzerowany

sjmp start ;skok do pętli start

prawo: rr A ;przesuwa w prawo zawartość akumulatora

mov P1, A ;przepisuje zawartość akumulatora na port P1

sjmp czekaj ;skok do pętli czekaj

Wnioski:

Napisanie programu nie sprawiło większych trudności pozwoliło jednak na utrwalenie podstawowych zasad programowania w asemblerze 8051. Symulator 8051 [AVSIM51] dał nam możliwość sprawdzenia działania programu na komputerze bez podłączenia fizycznego procesora, diod lub innych układów. W prosty sposób można wykorzystać porty jako wejścia oraz wyjścia.

Program działa prawidłowo i był okazany prowadzącemu jeszcze na zajęciach.

Analiza:

Rozwiązanie programu jest bardzo podobne do rozwiązania programu z krążącą jedynką opiera się również na tych samych założeniach. Zastosowano tutaj dodatkowy bit C. Spełnia on rolę bitu ukrywającego jedynkę na jeden `takt'.

Kod programu:

org 0

clr C

mov A, #1

mov P1, A

start: jnb P0.0, start

jb P0.1, prawo

rlc A

mov P1, A

czekaj: jb P0.0, czekaj

sjmp start

prawo: rrc A

mov P1, A

sjmp czekaj

Wnioski:

Jako 9 bit przez który ma przechodzić jedynka został wykorzystany bit C. Dzięki temu można było minimalnie zmodyfikować program z zadania pierwszego, żeby spełniał założenia zadania drugiego.

Analiza:

Główna zasada działania programu polega na sprawdzeniu kodów ASCII poszczególnych znaków i w zależności od wyników, podjęciu odpowiedniego działania. Wszystkie operacje realizowane są w akumulatorze. Program kończy się po napotkaniu gwiazdki (*) lub po zmodyfikowaniu wszystkich liter i znaków i napotkaniu gwiazdki.

Kod programu:

org 0

start: mov R0, #20h ; adres poczatku tekstu

petla: mov A, @R0 ; pobranie znaku z pamieci

cjne A, #42, dalej1 ; jesli nie gwiazdka, to idziemy dalej

sjmp koniec ; jesli gwiazdka, to koniec programu

dalej1: clr C ; zerowanie znacznika przeniesienia

subb A, #3Ah ; sprawdzenie czy liczba

jc liczba

mov A, @R0 ; ponowne pobranie znaku z pamieci

subb A, #5Bh ; sprawdzenie, czy duza litera

jc zmien

sjmp dalej2 ; ciag dalszy

zmien: mov A, @R0 ; pobranie znaku z pamieci

add A, #32 ; zamiana duzej litery na mala (dodanie 32 do znaku ascii)

mov @R0, A ; zapisanie znaku do pamieci

sjmp dalej2 ; ciag dalszy

liczba: mov @R0, #32 ; zamiana liczb na spacje

dalej2: inc R0 ; nastepny bajt pamieci

sjmp petla ; skok do petli

koniec: sjmp koniec ; koniec programu

nop

Wnioski:

Do przeprowadzenia symulacji wykorzystano symulator avsim51, który stanowił pomocne narzędzie, ponieważ nie tylko umożliwiał krokowe wykonywanie programu oraz obserwowanie portów i stanu pamięci, ale również zmianę wartości podawanej na poszczególne porty.



Wyszukiwarka

Podobne podstrony:
Ćwiczenie 22 Sprawko doc
8 7 12 2009 doc
9 14 12 2009 doc
10 21 12 2009 doc
Prawo cywilne M Kawęcka ćwiczenia 12 2009
I AD, Studia, Semestr 1, Fizyka, Sprawozdania, Sprawka, ćwiczenie 22 przyjęte
Wykład 11 22.12.2009, Recepty, Wyklady TLP, Wykłady 2009-2010
obliczenia poprawione, Studia, Semestr 1, Fizyka, Sprawozdania, Sprawka, ćwiczenie 22 przyjęte
Prawo cywilne - ćwiczenia 22.12.2008, Prawo cywilne(16)
Ćwiczenie 12 sTaHCu doc
1 12 10 2009 doc
gr1 Lab silniki 02 12 2009 dane do sprawka cz 2
Ćwiczenie 10 Sprawko doc
Ćwiczenia 22 01 2009 odt
Ćwiczenie 03 Sprawko doc
22 12 2009
sprawozdanie cwiczenie 22, studia, agrobiotechnologie
Ćwiczenia 5 POSTĘPOWANIE SĄDOWE (12 11 09)
Najniższy bilans ofiar od 2003 roku (01 12 2009)

więcej podobnych podstron