LINIE WE WY


Przemysław Andrzejewski

EiT

Sprawozdanie z Linii Wejścia Wyjścia


PROGRAM 1

- program powodujący zaświecenie diody LED podłączonej do 7 linii w porcie P1 mikrokontrolera 8051

KOD PROGRAMU

[ LJMP START ]
[ ORG 100H ]
[START: ]
[ CLR P1.7 ]
[STOP: ]
[ LJMP STOP ]
[ END ]


KRÓTKI OPIS

- mamy tutaj kilka podstawowych instrukcji. LJMP przechodzi do słów kluczy zadeklarowanych po tej instrukcji.
ORG 100H omija pierwszych 100 komórek pamięci z tego względu że mogą w nich występować jakieś błędy,
które mogłyby wpłynąć na działanie programu. CLR zeruje wyjście konkretnej linii portu przez co staje się ono aktywne.
LJMP STOP powoduje zakończenie pętli STOP. END kończy działanie programu.


----------------------------------------------------------------------------------------------------------

PROGRAM 2

- program powodujący miganie diody LED, podłączonej tak samo jak w programie 1

KOD PROGRAMU

[ LJMP START ]
[ ORG 100H ]
[START: ]
[ ]
[LOOP: ]
[ CLR P1.7 ]
[ MOV A,#10 ]
[ LCALL DELAY_100MS ]
[ SETB P1.7 ]
[ MOV A,#10 ]
[ LCALL DELAY_100MS ]
[ LJMP LOOP ]
[ END ]

KRÓTKI OPIS

- MOV A, #10 powoduje zapisanie do akumulatora wartości 10. LCALL jest instrukcją wykorzystywania procedur z pamięci EEPROM.
W tym wypadku skorzystaliśmy z procedury DELAY_100MS, (powoduje opóźnienia). Żeby dioda naprzemian migała musimy cały czas
naprzemiennie ustawiać na wyjściu portu 0 lub 1. SETB ustawia właśnie na wyjściu stan 1. Ponieważ używamy tutaj pętli, to na wyjściu
naprzemiennie pojawia się stan 0 lub 1. Wartość akumulatora (A) przemnożona przez 100MS daje nam czas opóźnienia.

----------------------------------------------------------------------------------------------------------

PROGRAM 3

- program powodujący świecenie i włączanie brzęczyka naprzemiennie.
Dioda podłączona tak samo jak w przypadkach powyższych.
Brzęczyk podłączony do 5 linii portu P1.

[ LJMP START ]
[ ORG 100H ]
[START: ]
[ ]
[ CLR P1.7 ]
[ ]
[LOOP: ]
[ CPL P1.7 ]
[ CPL P1.5 ]
[ ]
[ MOV A,#10 ]
[ LCALL DELAY_100MS ]
[ ]
[ LJMP LOOP ]


KRÓTKI OPIS

- tutaj warto tylko wspomnieć o instrukcji CPL. Powoduje ona zanegowanie bitu który został zaadresowany na dane urządzenie.

----------------------------------------------------------------------------------------------------------

PROGRAM 4

- program spełniający te same funkcje co powyższy, jednak operujący na całych bajtach,
a nie na pojedynczych bitach.

[ LJMP START ]
[ ORG 100H ]
[START: ]
[ ]
[LOOP: ]
[ MOV P1,#127 ]
[ MOV A,#10 ]
[ LCALL DELAY_100MS ]
[ MOV P1,#223 ]
[ MOV A,#10 ]
[ LCALL DELAY_100MS ]
[ ]
[ LJMP LOOP ]

KRÓTKI OPIS

- MOV P1,#127 powoduje zapalenie się diody. MOV P1,#223 natomiast powoduje włączenie się brzęczyka.
Wynika to z przeprowadzenia operacji na całych bajtach. Liczby 127 i 223 reprezentują całe bajty, a nie poszczególne bity.

----------------------------------------------------------------------------------------------------------

PROGRAM 5

- program wyświetlający kolejne banki rejestrów od 0 do 3.

////////////

----------------------------------------------------------------------------------------------------------

PROGRAM 6

- program zerujący 10 kolejnych komórek pamięci, zaczynający od adresu 40H

KOD PROGRAMU

[ LJMP START ]
[ ORG 100H ]
[START: ]
[ MOV R7,#0 ]
[ MOV R0,#40H ]
[LOOP: ]
[ MOV @R0,#0 ]
[ INC R7 ]
[ INC R0 ]
[ CJNE R7,#10,LOOP ]
[ ]
[ LJMP $ ]

KRÓTKI OPIS

- nasze R0 jest generatorem adresu, natomiast rejestr R7 jest argumentem pętli. Instrukcja CJNE działą jak pętla while.
Porównuje nam argumenty R7 oraz 10. Jeśli nie są one sobie równe to program przechodzi do miejsca LOOP, czyli cofa się.
MOV @R0,#0 zeruje adres komórki zapisany w R0. Instrukcja INC zwiększa wartość argumentu zadeklarowanego o 1.

----------------------------------------------------------------------------------------------------------

PROGRAM 7

- program zapisujący kolejne rejestry z banku 3 kolejnymi liczbami

[LJMP START ]
[ ORG 100H ]
[START: ]
[ MOV A,#0 ]
[ MOV R0,#18H ]
[LOOP: ]
[ MOV @R0,A ]
[ INC A ]
[ INC R0 ]
[ CJNE A,#7,LOOP ]
[ ]
[ LCALL LCD_CLR ]
[ MOV A,19H ]
[ LCALL WRITE_HEX ]
[ LJMP $ ]

KRÓTKI OPIS

- instrukcja WRITE_HEX wypisuje na wyświetlaczu wartość akumulatora.

----------------------------------------------------------------------------------------------------------



Wyszukiwarka

Podobne podstrony:
C w7 pliki operacje we wy
Systemy wyklad ochrona we wy
SO 11 WE WY
Porty we wy
sysop we wy
we,wy
uklady we wy
Obudź we mnie Venus Sixteen
We wish you a Merry Christmas
ŻYCIE WE WSZECHŚWIECIE(1)
Tyszka Rodzina we współczesnym świecie
8 Linie dlugie
Wy pkm 14 SP II
O szukaniu diabła we wszystkich rzeczach
wspolpraca;z;we;dwoje;pl,site,3
linie wpływowe w układach statycznie wyznaczalnych belka

więcej podobnych podstron