ster port mikro


Ćwiczenie nr 1

Cel ćwiczenia:

Celem ćwiczenia jest zapoznanie się z możliwościami sterowania urządzeniami sprzężonymi bezpośrednio z portami mikrokontrolera.

Wiadomości wstępne:

- mikrokontroler 8051 dla użytkownika ma dostępny cały port P1 oraz 6 linii portu P3 (każdy port ma po 8 linii), z

pośród czterech portów;

- do linii 7 portu P1 podłączona jest dioda LED (gdy bit 7 portu P1 = 1 dioda nie świeci, gdy bit 7 portu P1 = 0 , wtedy dioda LED świeci);

- do linii 5 portu P1 podłączony jest generatorek piezoelektryczny (buzzer) jego uruchamianie następuje w taki sam sposób jak dioda LED, czyli: jeśli bit 5 portu P1 = 1 BUZZER nie generuje dźwięku, a gdy bit 5 portu P1 = 0 następuje wygenerowanie dźwięku;

- przycisk RESET po naciśnięciu ustawia wszystkie bity na wyjściach portów P1 i P3 w stan logiczny wysoki

( logiczne 1 );

Podstawowe komendy:

LJMP etykieta - long jump - długi skok - następstwem tej komendy jest „przeskoczenie” do dowolnej części programu, którego linia zaczyna się od: „ etykieta: ”

CLR bit lub bajt - clear - wyzeruj (ustaw na „0” ) bit lub cały bajt (np: CLR P1.7 - wyzerowanie bitu 7 portu P1- dioda LED powinna świecić)

SETB bit lub bajt - set - ustaw (ustaw na „1”) bit lub cały bajt (np: SETB P1.7 - ustawienie bitu 7 portu P1- dioda LED powinna NIE świecić)

MOV <D> ,<S> - move - przepisz - przekazanie danych pomiędzy źródłem (Source), a miejscem przeznaczenia (Destination) (np: MOV A,#10 - wpisanie do Akumulatora liczby dziesiętnej „10”)

LCALL podprogram - subroutine call - wywołanie podprogramu umieszczonego w pamięci mikrokontrolera

(np: LCALL DELAY_100MS - wstrzymanie pracy mikrokontrolera na 100 ms, aby uzyskać np: jedną sek. przerwy należy wcześniej użyć komendy: MOV A,#10 - wpisanie do akumulatora liczby 10, co da 1 sek. przerwy (10*100ms)

CPL bit lub bajt - complement - zaneguj bit lub bajt - rozkaz ten powoduje negację bitu lub bajtu, np: z „1” na „0” i odwrotnie. Działanie podobne do bramki NOT.

Ponadto używane są etykiety START, STOP, LOOP- pętla.

PRZYKŁAD 1.1

LJMP START

ORG 100H ;początek programu w pamięci - używane w każdym programie

START:

CLR P1.7 ;zeruj linię 7 w porcie P1

;czyli zapal diodę TEST

STOP: ;nie wykonuj innych działań

LJMP STOP ;- pozostań w pętli STOP

Przykład 1.1 zapala diodę TEST, poprzez wyzerowanie bitu 7 portu P1 (CLR P1.7).

PRZYKŁAD 1.2

LED EQU P1.7 ;nadanie etykiety bitowi 7 portu P1 „LED” dzięki temu zamiast

;używać „P1.7” można operować nazwą(etykietą), która bardziej

;obrazuje sterowane urządzenie

LJMP START

ORG 100H

START:

CLR LED ;zeruj linię LED (zamiast CLR P1.7)

;czyli zapal diodę TEST

STOP: ;nie wykonuj innych działań

LJMP STOP ;- pozostań w pętli STOP

Działanie takie samo jak w przykładzie 1.1.

PRZYKŁAD 1.3

LED EQU P1.7

LJMP START

ORG 100H

START:

LOOP: ;pętla mrugania diody TEST

CLR LED ;zeruj linię - zapal diodę TEST

SETB LED ;ustaw linię - zgaś diodę TEST

LJMP LOOP ;powtórz, skok do LOOP:

Wywołanie programu powoduje zaświecanie i gaszenie z dużą częstotliwością diody LED (port P1.7), co jest postrzegane przez zmysły człowieka jako słabe żarzenie się diody LED.

PRZYKŁAD 1.4

LED EQU P1.7

LJMP START

ORG 100H

START:

LOOP: ;Pętla mrugania diody TEST

CLR LED ;zeruj linię -zapal diodę

MOV A,#10 ;akumulator=10

LCALL DELAY_100MS ;podprogram z EPROM-u - opóźnienie 100ms*10

SETB LED ;ustaw linię -zgaś diodę

MOV A,#10 ;czekaj czas 10*100ms=1s

LCALL DELAY_100MS

LJMP LOOP ;powtórz

W tym przykładzie dla zauważenia efektu „pulsowania” diody LED zostało wprowadzone opóźnienie czasowe - podprogram DELAY_100MS. Przed wywołaniem podprogramu DELAY_100MS należy załadować do akumulatora „A” pewną liczbę, która będzie mnożnikiem 100ms. Używa się do tego rozkazu MOV (przenieś). MOV A,#10 - tym poleceniem ładujemy do akumulatora liczbę 10, wywołanie bezpośrednio pod tą komendą podprogramu DELAY_100MS spowoduje odczekanie 10 * 100 ms = 1s. Podprogram wywoływany jest poleceniem LCALL. Działanie programu jest „zapętlone” (LJMP LOOP;LOOP), co powoduje, że dioda zapala się na czas 1 sekundy, a potem gaśnie na jedną sekundę, po czym całość powtarza się, aż do zresetowania mikrokontrolera.

PRZYKŁAD 1.5

LED EQU P1.7

LJMP START

ORG 100H

START:

LOOP: ;Pętla mrugania diody

CPL LED ;neguj linię - zeruj/ustaw (1->0, 0->1) zapal/zgaś diodę

MOV A,#10 ;czekaj czas 10*100ms=1s

LCALL DELAY_100MS ;podprogram z EPROMu

LJMP LOOP ;powtórz

Jest to uproszczenie programu z przykładu 1.4. Poleceniem CLP negujemy dany bit (bajt). Po uruchomieniu mikrokontrolera bit 7 portu P1 = 1; komenda CLP neguje go na „0” - dioda LED świeci, jej świecenie jest „podtrzymywane” przez DELAY_100MS, następnie polecenie CLP neguje bit 7 P1 z „0” na „1”. Całość się powtarza.

Przykład ten ukazuje w jaki inny sposób można ustawiać stany poszczególnych bitów, a przy tym zdecydowanie skracając program.

PRZYKŁAD 1.6

LED EQU P1.7 ;Dioda TEST podłączona do P1.7

BUZZER EQU P1.5 ;Brzęczyk podłączony do P1.5

;Stan 0 włącza brzęczyk

LJMP START

ORG 100H

START:

LOOP: ;Pętla mrugania diody i sterowania brzęczyka

CPL LED ;zapal/zgaś diodę TEST

CPL BUZZER ;włącz/wyłącz brzęczyk

MOV A,#10 ;czekaj czas 10*100ms=1s

LCALL DELAY_100MS ;podprogram z EPROM-u

LJMP LOOP ;powtórz

W przykładzie tym wykorzystuje się kolejne urządzenie dołączone do linii 5 portu P1 - „BUZZER” -generatorek piezoelektryczny. Program powoduje jednoczesne zaświecenie diody LED i generowanie przez buzzer dźwięku przez ok. 1 sekundę, a następnie jednoczesne wygaszenie i wyłączenie diody i generatorka na czas ok. 1 sekundy. Całość jest zapętlona.

PRZYKŁAD 1.7

LED EQU P1.7

BUZZER EQU P1.5

LJMP START

ORG 100H

START:

CLR LED ;(„O” na P1.7)zapal diodę TEST !!!, ale na bardzo krótko

LOOP: ;Pętla sterowania diody i brzęczyka

CPL LED ;zapal/zgaś diodę TEST

CPL BUZZER ;włącz/wyłącz brzęczyk

MOV A,#10 ;czekaj czas 10*100ms=1s

LCALL DELAY_100MS ;podprogram z EPROM-u

LJMP LOOP ;powtórz

Przykład 1.7 umożliwia naprzemienne działanie diody LED oraz brzęczka - buzzer. Zostało to uzyskane przez wyzerowanie, przed pętlą LOOP, bitu 7 P1 (zaświecenie diody LED). Pozostała część programu odbywa się w pętli , z tym że na przemian jest negowany port diody LED i BUZZERA oraz wprowadzone opóźnienie (DELAY_100MS), powoduje to (od początku programu) gaszenie diody i generowanie tonu przez buzzer-a w jednej chwili przez 1 sek. Następnie, skok do miejsca LOOP i odwrócenie stanów na portach - dioda świeci, a buzzer milczy -1 sek.

Odbywa się to aż do momentu naciśnięcia RESET-u.

WNIOSKI:

W nietypowych zastosowaniach mikrokontroler 8051 może służyć do włączania i wyłączania diody LED lub/i BUZZERA.



Wyszukiwarka

Podobne podstrony:
prezentacja mikro Kubska 2
Mikro w 1
7 Mikro i makro elementy naszej diety
Napęd i ster
Wykład 3 Mikro 1 Econ
wyk ad4 Mikro
mikro wykresy super
3 kanał ster świateł dysko
02a MIKRO
Zestaw 4 Mikro
SCCIAGI Z EKO!, studia UMK, Podstawy ekonomii (mikro i makro)
MIKRO ŚCIĄGI Z WYKŁADU, studia, studia II rok, mikrobiologia, mikro egz, Ściągi RAZY 2
mikro c 5 sc, Weterynaria Lublin, Weterynaria 1, Mikrobiologia
EGZAMIN Z MIKRO!!!, Medycyna Warszawski Uniwersytet Medyczny, Mikrobiologia
10.11.2009, semestr 1, makro i mikro ekonomia

więcej podobnych podstron