Asembler

Na "starym" easy-sofcie był artykuł Jacka Domańskiego, który zginął przy przenosinach. Na Waszą prośbę - umieszczam go ponownie. W artykule Jado przedstawia swoje sposoby na programowanie mikrokontrolerów jednoukladowych (8051, PIC i podobne) w języku asemblera - ze szczególnym zwróceniem uwagi na jak najmniejsze obciążenie procesora przez dużą liczbę podprogramów (współdzielenie czasu procesora). Takie podejście sprawia, że układ mikroprocesorowy staje się jakby układem wielozadaniowym, a przy okazji zostaje zminimalizowane niebezpieczeństwo zawieszania się programów i utknięcia całości w martwym punkcie. czytaj więcej
Do niektórych układów z serii AVR i 8051/8052 można podłączyć zewnętrzną pamięć SRAM. W tym samym obszarze adresowania można też podłączyć urządzenia wejścia/wyjścia. Niestety, żaden z tych mikrokontrolerów nie ma DMA, więc ewentualne operacje przesłania danych pomiędzy pamięcią a np. wyświetlaczem graficznym, zajmują sporo czasu: po pierwsze trzeba odczytać bajt, po drugie zapamiętać go w rejestrze przeznaczonym do operacji I/O, a po trzecie zapisać w obszarze docelowym. czytaj więcej
Na listingu zamieszczono programowy bufor FIFO dla mikrokontrolerów AVR. Napisano go w języku asembler, co pozwala na łatwe włączenie go do własnych programów. Bufor może mieć długość 16, 32, 64, 128 lub 256 bajtów. Ustala się ją przed kompilacją, zmieniając liczbę przy etykiecie L_FIFO. Rolę wskaźnika danych pełni rejestr Y. czytaj więcej
Wiele z mikrokontrolerów ST7 ma wbudowany w strukturę przetwornik analogowo – cyfrowy. Celem niniejszego artykułu jest pokazanie (abstrahując od strony realizacji interfejsu sprzętowego) w jaki sposób zaprząc przetwornik do pracy i zmierzyć napięcie doprowadzone do jednego z wejść analogowych oraz przedstawić wynik jego pomiaru w [V]. W przykładzie posłużono się mikrokontrolerem ST7FLITE19. Program napisany jest w języku asembler ST7. czytaj więcej
Projektując system kontroli dostępu mający pracować w pomieszczeniach o dużym zapyleniu postanowiłem do identyfikacji osób wchodzących zastosować karty zbliżeniowe o wymiarach standartowej karty plastikowej ISO. Problemem był zakup odpowiedniego czytnika, gdyż dostępne w handlu były zbyt drogie. Ze względu na bardzo ograniczony budżet projektu postanowiłem wykonać własne czytniki. W zbudowanym systemie znajduje się kilka czytników kart, które są sterowane przez centralkę. To ona podejmuje decyzję o dostępie lub odmowie. Sam czytnik w zaprezentowanej wersji oprogramowania nie zawiera żadnych mechanizmów decyzyjnych – jego zadania sprowadzają się do odczytania kodu zawartego na karcie, przekazania go na żądanie centralki oraz sterowania zamkiem elektromagnetycznym, również zgodnie z poleceniami centralki. czytaj więcej
Z wyrobami firmy austriamicrosystems AG zetknąłem się po raz pierwszy przy okazji targów ELECTRONICA 2000, a następnie podczas poszukiwań względnie taniego, powtarzalnego sposobu określenia pozycji głowicy w jednym z projektowanych urządzeń. Firma ta produkuje specjalizowane układy scalone zawierające wewnątrz struktury matrycę czujników Hall'a oraz procesor uzbrojony w specjalny algorytm umożliwiający określenie położenia pola magnetycznego wytwarzanego przez umieszczony ponad strukturą magnes stały. czytaj więcej
Podstawą działań wielu programów są różne operacje arytmetyczne wykonywane czy to na zmiennych wejściowych, czy to na zmiennych wewnętrznych. W tym artykule opiszę propozycje procedur wykonujących podstawowe działania arytmetyczne takie jak: dodawanie, odejmowanie, mnożenie i dzielenie, porównanie liczb oraz konwersja liczb binarnych na dziesiętne. Artykuł napisano na podstawie noty aplikacyjne firmy STMicroelectronics „ST7 Math Utility Routines“. Procedury są dokładnie opisane a ich algorytmy działania przdstawiono w formir rysunków i dlatego łatwo można je zaadoptować również dla innych mikrokontrolerów. czytaj więcej
Urządzenia alarmowe bardzo często są wyposażane w różnego rodzaju sygnalizacje włamania. Najprostszym jest uruchomienie sygnału dźwiękowego czy optycznego, te bardziej zaawansowane potrafią podawać swój status przez Internet czy telefon. Prezentowane w tym artykule urządzenie to amatorski alarm, który potrafi przesłać informację o załączeniu przez krótką informację tekstową, tak zwany SMS. Dla potrzeb modelu wykorzystałem modem GSM firmy Wavecom (testowałem również Siemens M20), jednak można użyć dowolnego telefonu komórkowego. Być może jego wykorzystanie będzie wymagało rozwiązania problemu zasilania oraz sposobu kodowania SMS, jednak jest możliwe i wykonalne w warunkach warsztatu elektronika – amatora. czytaj więcej
Początki nauki nie są zbyt pasjonujące. Ale tak to już jest, że aby zacząć biegać, trzeba się nauczyć chodzić. Niestety, początki są na „czworaka”. W tym odcinku kursu dołożymy kolejny klocek: odczyt stanu przycisku. Następnie połączymy tę funkcję z poznaną wcześniej, służącą do wyświetlenia stanu licznika. Utworzona w ten sposób aplikacja będzie najprostszym licznikiem zdarzeń. czytaj więcej
W tym odcinku kursu nieco odbiegniemy od prezentowanych wcześniej sposobów wykorzystywania zasobów mikrokontrolera. Każda aplikacja musi czasami dodać, odjąć lub porównać jakieś wartości. Tworząc ją w języku wysokiego poziomu wszystko jest proste: deklarujemy typy zmiennych A i B a następnie prosty zapis A+B rozwiązuje problem. W asemblerze nie jest niestety tak łatwo. czytaj więcej