Menu English Ukrainian Rosyjski Strona główna

Bezpłatna biblioteka techniczna dla hobbystów i profesjonalistów Bezpłatna biblioteka techniczna


ENCYKLOPEDIA RADIOELEKTRONIKI I INŻYNIERII ELEKTRYCZNEJ
Darmowa biblioteka / Schematy urządzeń radioelektronicznych i elektrycznych

Początkujący programiści mikrokontrolerów PIC. Encyklopedia elektroniki radiowej i elektrotechniki

Bezpłatna biblioteka techniczna

Encyklopedia radioelektroniki i elektrotechniki / Początkujący amator radiowy

Komentarze do artykułu Komentarze do artykułu

[podczas przetwarzania niniejszej dyrektywy Wystąpił błąd]

Bazując na własnych doświadczeniach związanych z rozpoczęciem nauki programowania mikrokontrolerów, postaram się udzielić kilku praktycznych rad dotyczących pisania programów w asemblerze. Wszystkie poniższe przykłady programowania podane są w odniesieniu do kontrolerów Pic średniej rodziny Microchip, jako najbardziej odpowiednich do rozpoczęcia programowania, ze względu na ich stosunkowo prostą architekturę i prosty system poleceń asemblera.

Proponowane programy można wykorzystać w postaci gotowych makr (kompletnych podprogramów) Nie są one przypisane do konkretnego sterownika, dlatego przy stosowaniu należy brać pod uwagę dane z kart katalogowych.

1. Zastosowanie przerwań przepełnienia timera TMR0 (RTCC)

Weźmy częstotliwość zegara - Ftact. = 4,096 MHz (standardowy kwarc). Wtedy czas cyklu wyniesie tc = 1 / Ftact. * 4 = 0,97656 µs

INI_TMR ; inicjalizacja trybu przerwania z RTCC
bsf STATUS,RP0 ; wybierz bank 1
film b'00000100'
movwf OPCJA ; preskaler do RTCC 1 : 32
bcf STATUS,RP0 ; bank 0
film b'10100000'
movwf INTCON ; Włączono przerwanie RTCC
film 96; przesyłanie numeru wstępnego 96 do RTCC
movwf TMR0

Uzyskaj czas przerwania:
ti = tc * 32 * (256 - 96 = 160)
ti = 0,97656 * 32 * 160 = 5 µs = 000 ms

Teraz, jeśli wprowadzimy do dowolnego programu nieskończoną pętlę (tzw. powrót na adres wskazany przez wektor przerwania (częściej jest to 5h). Do czego może służyć - patrz poniżej.

Tak więc:

;
organizacja 0
POCZĄTEK ; start programu po
; zasilanie włączone
org 04h ; a to jest adres wektora przerwania, w którym
główny ; program główny zostanie uruchomiony
;
POCZĄTEK ; jest to zazwyczaj miejsce, w którym obowiązkowa inicjacja
INI_TMR ; cializacja portów, trybów, rejestrów itp.
INI_PORTS
pętla
pętla goto; i to jest nieskończona pętla
;------------------------------------------------- -

główny
; Następna jest treść głównego programu,
; w którym konieczne jest utworzenie programu obsługi przerwań z RTCC,
; wywołane poleceniem CALL:

ServTMR
btfsc INTCON, RTIF ; sprawdź flagę wyzwalacza przerwania RTCC i
wywołaj SET_TMR ; jeśli tak, ponownie zainicjuj TMR0
powrót; jeśli „nie” – powrót do miejsca wezwania ServTMR
; główny program główny
;
SET_TMR film .96
movwf TMR0 ; wgraj ponownie numer 96
bcf INTCON, RTIF ; zresetować flagę wyzwalacza
retfi; powrót z włączonym przerwaniem do ServTMR i
; następnie do głównego programu main

Przykład wykorzystania przerwania RTCC do odebrania drugiego impulsu na jednym z wyjść, powiedzmy, porcie B - RB0: Użyj rejestru Rsec, który musi być wcześniej zadeklarowany w polu adresowym rejestrów roboczych.

Tak więc na wyjściu portu RB0 poziom sygnału będzie się zmieniał z „0” na „1” co sekundę.

W rejestrach kontrolera informacja ma zwykle postać binarną (w kodzie binarnym). Ale często konieczne jest uzyskanie informacji w postaci binarnej - dziesiętnej (kod BCD), powiedzmy, do kontrolowania siedmiocyfrowego siedmiosegmentowego wskaźnika.

Rozważmy przykłady konwersji kodu binarnego b2 na binarno-dziesiętny BCD i odwrotnie.

W rejestrze 8-bitowym można zapisać liczbę binarną od 0 do 255 (od b'00000000' do b'11111111'). Zamieńmy liczbę binarną na trzy cyfry kodu binarnego - dziesiętnego - "setki", "dziesiątki" i "jedności". W tym celu wykorzystamy następujące rejestry, które należy wcześniej zadeklarować w polu adresowym rejestrów roboczych:

Rbin - rejestr do przechowywania liczby w kodzie binarnym b2
Rhan - zarejestruj "setki" kodu BCD
Rdec - zarejestruj „dziesiątki” kodu BCD
Rsim - kod BCD „jeden” rejestr

Przekształcenia przeprowadza się za pomocą operacji odejmowania liczb 100, a następnie 10, zliczając liczbę dodatnich odejmowań.

FORM_1S ; w każdym cyklu i trwa przez przerwanie RTCC
incf Rsec,w ; 5 ms zwiększ rejestr Rsec o 1 do liczby 200
xorlw .200 ; (5 ms * 200 = 1 sek.)
STATUS btfsc,z
przejdź do OUT_PORT ; z Rsec = 200 flagą z = '1' i przejściem do kontroli
; pin RB0 portu B
powrót; powrót do głównego programu main
;
OUT_PORT btfss PORTB,0 ; sprawdzić stan wyjścia RB0
przejdź do OUT_ON ; jeśli RB0 ='0' to ustaw na '1'
bcf PORTB,0 ; w przeciwnym razie - ustaw na '0'
idź do głównego ; powrót do programu głównego
;
OUT_ON bsf PORTB,0 ; ustaw RB0 = '1'
przejdź do głównego

CON_100 film .100 ; odejmij 100 od Rbin i sprawdź to
subwf Rbin,w ; wynik nie jest ujemny. Flaga „c” = 1 kiedy
btfss STATUS, c ; wynik > lub = 0, a „c” = 0, gdy < 0
przejdź do CON_10
incf Rhan,f ; liczenie „setek”
movwf Rbin ; wynik odejmowania jest najpierw zapisywany w rejestrze
goto CON_100 ;bateria i dopiero wtedy wracamy do Rbin
; żeby nie stracić reszty z minusem
; wynik odejmowania.
CON_10 film .10 ; podobnie zdefiniuj „dziesiątki”
subwf Rbin, w
STATUS btfss, c
przejdź do end_con
incf Rdec,f
movwf Rbin
przejdź do CON_10;
koniec_con
movf Rbin, w
movwf Rsim ; po odjęciu resztę wpisujemy w "jednostkach"
;kontynuuj wykonywanie programu

Odwrotna konwersja BCD - kod do b2. Korzystamy z tych samych rejestrów Rhan, Rdec, Rsim gdzie liczba znajduje się w kodzie BCD, rejestry RbinH są wyższego rzędu a RbinL - najniższego rzędu dla liczb (>255) w kodzie b2 oraz rejestrów pomocniczych RM1 - "mnożnik ",RM2 - "mnożnik" .Aby zamienić BCD na b2 należy pomnożyć "setki" przez 100, "dziesiątki" przez 10 i dodać wszystko razem z "jednostkami" iw razie potrzeby uwzględniając przeniesienie do wyższego rzędu. Do mnożenia używamy operacji dodawania.

B2X_100 movlw .99 ; konwertowanie „setek”
movwf RM2 ; mnożnik = liczba uzupełnień (100) minus jeden
movf Rhan, w
movwf RM1 ; mnożna = „setki”
loopX100 addwf RM1,w btfsc STATUS,c ; sprawdź przejście do najwyższej cyfry
incfRbinH,f; jeśli jest przelew
decfsz RM2,f ; kontrolować liczbę dodatków
przejdź do pętli X100
movwf RbinL ; wynik dodawania jest zapisywany w rejestrze ml. wypisać
;
B2X_10 film .9; przeliczanie „dziesiątek”
movwf RM2 ; mnożnik = liczba uzupełnień (10) minus jeden
movf Rdec, w
movwf RM1 ; mnożna = „dziesiątki”
pętlaX10 addwf RM1,w ; tutaj transfer można pominąć, ponieważ wynik
decfsz RM2,f ; zawsze < 255
przejdź do pętli X10
addwf RbinL, f ; dodaj wynik przeliczenia "dziesiątek"
btfsc STATUS, c ; z uwzględnieniem ewentualnego przeniesienia w cyfrach
Incf
RbinH, f
movf Rsim, w
addwf Rbin,f ; dodaj „jednostki” uwzględniając ewentualny transfer
STATUS btfsc,c
incf RbinH,f

Koniec przekształceń i dalsze wykonywanie programu. W rejestrach RbinL i RbinH podano 16 - bitową liczbę w kodzie b2.

Aby wykonać arytmetyczną operację dzielenia, analogicznie do omówionego powyżej mnożenia, stosuje się operację odejmowania. Załóżmy, że musimy podzielić liczbę znajdującą się w rejestrach RHsum (wyższe cyfry) i RLsum (niższe cyfry) - przez dzielnik (weźmy dzielnik nie > 255) znajdujący się w rejestrze Rdel.

Wynik zostanie wpisany do rejestrów RHrez i RLrez (odpowiednio wysokie i niskie cyfry):

OP_DEL
movf Rdel, w
subwf Rlsum, w
btfss STATUS, c ; sprawdzić, czy wynik jest ujemny?
przejdź do DEF_przenieś ; jeśli „tak”, to zaciągamy pożyczkę z art. wypisać
incf RLrez,f ; policz liczbę odejmowań, biorąc pod uwagę
btfsc STATUS, c ; możliwość awansu na wyższy stopień
incf RHRez, f
movwf suma RL ; przywróć resztę, aby nie stracić
przejdź do OP_DEL ; z ujemnym wynikiem odejmowania
;
DEF_przeniesienie
film 0 godz
xorwf suma RH,w ; czy wszyscy przeszli z kategorii seniorów do juniorów?
btfsc STATUS, z ; jeśli „tak”, tj. RHdel = 0 i zanegowane w OP_DEL
przejdź do OUT_DEL ; kot. wynik - koniec podziału i wyjście
decf Suma RH,f ; jeśli „nie” – pożyczka z kategorii senior i pro-
incf RLrez,f ; musimy iść dalej
btfsc STATUS, c ; sprawdzenie konieczności przeniesienia do kategorii seniorów
incf RHRez, f
przejdź do OP_DEL

Autor: Vladimir D., degvv@mail.ru; Publikacja: cxem.net

Zobacz inne artykuły Sekcja Początkujący amator radiowy.

Czytaj i pisz przydatne komentarze do tego artykułu.

<< Wstecz

Najnowsze wiadomości o nauce i technologii, nowa elektronika:

Sztuczna skóra do emulacji dotyku 15.04.2024

W świecie nowoczesnych technologii, w którym dystans staje się coraz bardziej powszechny, ważne jest utrzymywanie kontaktu i poczucia bliskości. Niedawne odkrycia w dziedzinie sztucznej skóry dokonane przez niemieckich naukowców z Uniwersytetu Saary wyznaczają nową erę wirtualnych interakcji. Niemieccy naukowcy z Uniwersytetu Saary opracowali ultracienkie folie, które mogą przenosić wrażenie dotyku na odległość. Ta najnowocześniejsza technologia zapewnia nowe możliwości wirtualnej komunikacji, szczególnie tym, którzy znajdują się daleko od swoich bliskich. Ultracienkie folie opracowane przez naukowców, o grubości zaledwie 50 mikrometrów, można wkomponować w tekstylia i nosić jak drugą skórę. Folie te działają jak czujniki rozpoznające sygnały dotykowe od mamy lub taty oraz jako elementy uruchamiające, które przekazują te ruchy dziecku. Dotyk rodziców do tkaniny aktywuje czujniki, które reagują na nacisk i odkształcają ultracienką warstwę. Ten ... >>

Żwirek dla kota Petgugu Global 15.04.2024

Opieka nad zwierzętami często może być wyzwaniem, szczególnie jeśli chodzi o utrzymanie domu w czystości. Zaprezentowano nowe, ciekawe rozwiązanie od startupu Petgugu Global, które ułatwi życie właścicielom kotów i pomoże im utrzymać w domu idealną czystość i porządek. Startup Petgugu Global zaprezentował wyjątkową toaletę dla kotów, która automatycznie spłukuje odchody, utrzymując Twój dom w czystości i świeżości. To innowacyjne urządzenie jest wyposażone w różne inteligentne czujniki, które monitorują aktywność Twojego zwierzaka w toalecie i aktywują automatyczne czyszczenie po użyciu. Urządzenie podłącza się do sieci kanalizacyjnej i zapewnia sprawne usuwanie nieczystości bez konieczności ingerencji właściciela. Dodatkowo toaleta ma dużą pojemność do spłukiwania, co czyni ją idealną dla gospodarstw domowych, w których mieszka więcej kotów. Miska na kuwetę Petgugu jest przeznaczona do stosowania z żwirkami rozpuszczalnymi w wodzie i oferuje szereg dodatkowych funkcji ... >>

Atrakcyjność troskliwych mężczyzn 14.04.2024

Od dawna panuje stereotyp, że kobiety wolą „złych chłopców”. Jednak najnowsze badania przeprowadzone przez brytyjskich naukowców z Monash University oferują nowe spojrzenie na tę kwestię. Przyjrzeli się, jak kobiety reagowały na emocjonalną odpowiedzialność mężczyzn i chęć pomagania innym. Wyniki badania mogą zmienić nasze rozumienie tego, co sprawia, że ​​mężczyźni są atrakcyjni dla kobiet. Badanie przeprowadzone przez naukowców z Monash University prowadzi do nowych odkryć na temat atrakcyjności mężczyzn w oczach kobiet. W eksperymencie kobietom pokazywano zdjęcia mężczyzn z krótkimi historiami dotyczącymi ich zachowania w różnych sytuacjach, w tym reakcji na spotkanie z bezdomnym. Część mężczyzn ignorowała bezdomnego, inni natomiast pomagali mu, kupując mu jedzenie. Badanie wykazało, że mężczyźni, którzy okazali empatię i życzliwość, byli bardziej atrakcyjni dla kobiet w porównaniu z mężczyznami, którzy okazali empatię i życzliwość. ... >>

Przypadkowe wiadomości z Archiwum

System wykrywania i neutralizacji niebezpiecznych dla Ziemi planetoid 30.04.2022

Chiny planują w najbliższych latach stworzyć system chroniący Ziemię przed zderzeniami z asteroidami, które stanowią zagrożenie dla planety. Ogłosił to Wu Yanhua, zastępca szefa Chińskiej Narodowej Administracji Kosmicznej (CNSA).

„Do końca XIV Planu Pięcioletniego, w latach 14-2025, postaramy się rozpocząć testowanie technologii monitorowania asteroid stanowiących zagrożenie dla Ziemi. Z jego pomocą przeprowadzimy kolizję (z asteroidą) , co doprowadzi do zmiany jej orbity” – powiedział urzędnik w wywiadzie dla China Central Television (CCTV). Według niego, w ramach przyszłego projektu planowane jest stworzenie skutecznego naziemnego i kosmicznego systemu do katalogowania, monitorowania i ostrzegania o asteroidach stanowiących zagrożenie dla planety.

Również chińscy eksperci postawili sobie za zadanie opracowanie technologii, które zapobiegną kolizjom z niebezpiecznymi obiektami kosmicznymi. „Dzięki temu ludzkość naprawdę przeciwstawi się zagrożeniu, jakie asteroidy stwarzają dla Ziemi” – powiedział wiceszef CCTV. Według NASA w Układzie Słonecznym znajduje się ponad 1,11 miliona zidentyfikowanych asteroid, ale w rzeczywistości jest ich znacznie więcej.

Uderzenia asteroid są jedną z najpoważniejszych klęsk żywiołowych, ponieważ poziom zniszczeń, jakie mogą spowodować, jest większy niż jakiekolwiek inne. Szkody, jakie może spowodować zderzenie z asteroidą, zależą od wielu czynników, zwłaszcza od jej wielkości. Eksperci NASA uważają, że asteroidy o średnicy 140 m lub większej są poważnym problemem dla Ziemi.

Według badań Davidson Institute of Science, edukacyjnego ramienia Instytutu Nauki Weizmanna w Rehovot w Izraelu, asteroida o średnicy ponad 140 metrów w przypadku zderzenia z Ziemią wystrzeli co najmniej tysiąc razy więcej energii niż z detonacji pierwszej bomby atomowej. Jednak nawet małe asteroidy mogą spowodować znaczne szkody.

Inne ciekawe wiadomości:

▪ Skuteczny środek przeciw oblodzeniu

▪ USG na cukrzycę

▪ Procesor fotoniczny

▪ Nanodiamenty do diod LED i półprzewodników

▪ Nie są potrzebne żadne dodatki przeciwdrobnoustrojowe

Wiadomości o nauce i technologii, nowa elektronika

 

Ciekawe materiały z bezpłatnej biblioteki technicznej:

▪ diody LED sekcji strony internetowej. Wybór artykułów

▪ artykuł I zrobiłem dobry uczynek pośród panującego zła. Popularne wyrażenie

▪ artykuł Dlaczego as w kartach przeszedł od jednej do najwyższej karty? Szczegółowa odpowiedź

▪ artykuł Nakładanie powłok metalicznych podczas pracy z solami cyjanku. Standardowe instrukcje dotyczące ochrony pracy

▪ artykuł Termometr o wysokiej dokładności z czujnikiem DS18S20. Encyklopedia elektroniki radiowej i elektrotechniki

▪ artykuł Biegające owoce. Sekret ostrości

Zostaw swój komentarz do tego artykułu:

Imię i nazwisko:


Email opcjonalny):


komentarz:





Wszystkie języki tej strony

Strona główna | biblioteka | Artykuły | Mapa stony | Recenzje witryn

www.diagram.com.ua

www.diagram.com.ua
2000-2024