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 wySystemy wyklad ochrona we wySO 11 WE WYPorty we wysysop we wywe,wyuklady we wyObudź we mnie Venus SixteenWe wish you a Merry ChristmasŻYCIE WE WSZECHŚWIECIE(1)Tyszka Rodzina we współczesnym świecie8 Linie dlugieWy pkm 14 SP IIO szukaniu diabła we wszystkich rzeczachwspolpraca;z;we;dwoje;pl,site,3linie wpływowe w układach statycznie wyznaczalnych belkawięcej podobnych podstron