...wróć

Programy ASM dla '51




PROGRAMY DO PŁYTKI MCS51


| operacje arytmetyczne | przerwania | timery | DB | Segmenty pamięci |

Programy napisane dla mikrokontrolera 80517 - działają tylko na zestawie (płytka) MCS51 w pracowni mikroprocesorowej albo na symulatorze tegoż zestawu.
Program symulatora MCS51 do ściągnięcia znajduje się w "DOWNLOAD"

Operacje arytmetyczne

Mnożenie
Dzielenie

Analogicznie jak przy mnożeniu

Potęgowanie

Analogicznie jak przy mnożeniu

Porównanie czy L1 > L2 ?

Analogicznie jak przy mnożeniu



Przerwania


Uwaga !!!



Przerwania INT1, INT3, INT2

INT1 - Aktywacja przerwania na zero logiczne, priorytet najwyższy,
INT3 - Aktywacja przerwania na zbocze opadające, priorytet wyższy,
INT2 - Aktywacja przerwania na zbocze narastające, priorytet niski

Przerwania INT1, INT3, INT2 ( a )

Do programu jak wyżej dodano przesuwające się 3 diody w lewo jako program główny. Plik INT001.asm z pracowni uP

Przerwania INT2, INT0, INT3 ( k )

Przerwanie INT2 - najwyższy priorytet, reaguje na zbocze opadające
Przerwanie INT0 - niższy priorytet, reaguje na poziom; logiczne zero
Przerwanie INT3 - najniższy priorytet, reaguje na zbocze narastające

Dlaczego tego nie poprawię tylko umieszczam to tu? A dlatego, gdyż te trzy programiki powyżej działały dobrze ale na komputerze - na symulatorze. KIedy chciałem uruchomić je w rzeczywistych warunkach - na pracowni , wówczas okazało się że nie działają. Długo nie wiedziałem czemu. Ale wkońcu doszedłem co było źle. Starałem się to przedstawić tutaj.



Przerwania INT1, INT3, INT2 - poprawione

Program poprawiony - obsługę przerwania 1, 3 i 2 przeniesiono na koniec programu głównego




Układy licznikowe

Komentarz do liczników T2 i T0




Przesuwane trzech świecących diod w prawo (A)

Przesuwane trzech świecących diod w prawo (B)
Zmierzone czasy przeskoków diod dla różnych wartości wpisanych do licznika 16 bitowego T0. Pomiary wykonane na czasomierzu -
emulatora programowego MCS51

Format słowa wpisywanego - dla przykładu B

Przesuwane trzech świecących diod w prawo (C)

Wzór programu - z błędem opisanym na prawo
Wzór programu licznika czasowego - ( D )



Gotowe do wstawienia...

SwLed_Ok

Odczyt przełączników sw0-sw7 oraz sterowanie diodami




Przykłady : jak stworzyć tablicę za pomocą dyrektywy DB

przykład_1
przykład_2
przykład_3

W przykładzie 1 i 2 pokazano sposób odczytu z tablicy w poziomie lub pionie. Natomiast w przykładzie nr 3, korzystanie z tablicy jest za pomocą licznika rozkazów. W przykładach 1 i 2 korzystanie z tablicy za pomocą wskaźnika danych DPTR.



Segmenty pamięci

CSEG, BSEG, DSEG - po co to jest?

W pliku Worda (segment.doc) wyjaśniono działanie CSEG, BSEG i DSEG.

segment.doc

Przykładowy plik asemblera z deklaracją segmentów pamięci :

przyk.asm