Czy moglby ktos wytlumaczyc roznice pomiedzy : Enable Int0 a Enable Interrupts Zauwazylem, ze we wszystkich programach, zezwalamy ogolnie na przerwania (Enable Interrupts ) a potem jeszcze raz na dane przerwanie( Enable Int0 ) .
Chyba nie, taka "uroda" 8255. Można by było wystawiać dane i ręcznie generować sygnał strobe, ale wtedy komunikacja nie działała by już w przerwaniach.
Witam, programuję układ popularnej 51 (AT89C4051). Napotkałem problem taki, że wgram program z jednym trybem pracy to diody odpowiednio migają i jest wszystko dobrze. Do układu dołączyłem mikro switch aby wgrać kilka trybów pracy i przełączać je tym przełącznikiem: 1 kliknięcie to wykonuje tryb 1 2 kliknięcie to wykonuje tryb 2 3 kliknięcie to wykonuje...
Witam. Korzystam z MCU 8051 IDE. Mam zrobić program, który wykrywa i identyfikuje naciśnięty przycisk na klawiaturze matrycowej. Program powinien reagować na wciśnięcie przycisku - zwarcie łącznika. Klawiatura matrycowa jest podłączona do portu P1: wiersze - bity od 0 do 3 i kolumny - bity od 4 do 7. Co zrobić, żeby uzyskać przerwanie zewnętrzne podczas...
Witam, czy może mi ktoś pomóc w zrozumieniu jak dokładnie działają przerwania i jak je obsłużyć? Otóż mam taki problem - mam sobie takie urządzenie które się nazywa Toolstick f330. Mam tam wyjścia P0.0 - P1.7. Zrobiłem sobie płytkę na której mam 4 przyciski. Z wyjściami nie ma problemów - działają. Problem tylko jak obsłużyć przyciski. Wiem, że są funkcję...
witam wszystkich. chcialem zrobic uklad w ktorym nacisniecie ktoregokolwiek z klawiszy bedzie powodowalo obsluzenie go wewnatrz procedury obslugi przerwania. szukalem czegos podobnego na forum ale znalazlem tylko opisy ze mozna to zrobic uzywajac diod ale bez zadnych schematow. wiec robie to tak jak na przedstawionym rysunku ale niestety nigdy na wejsciu...
Szanowni Panstwo: Pisze swoj pierwszy wiekszy projekt na 89s52 i mam pewna watpliwosc. Jakos nigdzie tego nie moge znalezc. Powiedzmy, ze nastapi przerwanie, ale zezwolenie na to przerwanie zostanie wylaczone zanim samo przerwanie zostalo obsluzone. Czy wtedy przerwanie bedzie obsluzone czy nie. Chodzi o przerwanie zewnetrzne, czyli odpowiednia flaga...
Witam wszystkich zrobiłem(bo musiałem) sobie urządzonko do pomiaru opadów. coś takiego: i podpiąłem do DS89C450 tak: czyli kontakton który zlicza impulsy jest podpięty do GND z jednej strony no i z drugiej do P1.7/~INT5. No i teraz potrzebuje program w C żeby zliczał mi ten deszcz :D. CHodzi żeby wykorzystać to ~INT5 i chodzi o to żeby np gdy zacznie...
Mam szybkie pytanko: Jak ustawić przerwanie od Timera 2 (procek DS89C450) np co 1 ms. Początek programu jest następujący: #include <REG420.H> #include <stdio.h> #include <stdlib.h> #include <intrins.H> #include <absacc.H> #include "MAX1270.h" #define WDIR 0x4FFFF #define IE3 0x20 #define IE5 0x80 #define XtalFreq...
Witajcie, jestem średnio zaawansowanym programistą mikrokontrolerów 8051. Chciałem poznać teraz architekturę AVR, jednak nie wiem zbyt, na czym polega różnica w systemach przerwań obu tych mikrokontrolerów? Móglby ktoś przybliżyć zagadnienie?
błagam tylko nie goto.... użyj któregoś z timerów i wykonuj czynności jak podał yego666 w przerwaniu tego timera
Witaj sawic! Na stronie Easy-soft znajdziesz kilka atrykułów na temat programowania mikrokontrolerów 8051 w języku C. Polecam też artykułów zamieszczony w EP od nr. 6/2002. Na mojej stronie znajdziesz też kilka programów w C na 8051 w których wykorzystałem przerwania. Pozdrawiam :)
Wpisanie nowej wartości do SP powoduje przesunięcie tylko jego wskaźnika. Wykonanie tego w nieodpowiednim momencie kończy się źle - jak kolega się przekonał. Dlatego najpierw w raporcie kompilacji trzeba sprawdzić gdzie znajduje się najdalej położona zmienna (użytkownika lub wewnętrzna) i sprawdzić ile ona zajmuje. Uzyskasz wtedy adres od, którego BASCOM...
Witam. Czas na podsumowanie postu. Serdecznie dziękuję za poświęcony czas. Wyjaśniły się wszystkie(oprócz jednej, ale to na samym dole) zagadki. Mam nadzieję, że nie tylko ja się tutaj czegoś nauczyłem, możliwe, że ten post posłużył (albo posłuży) też innym. Ponieważ było wiele problemów i pytań to pozwoliłem sobie na podsumowanie wszystkiego. PWM 1....
Posiadam środowisko Keil uVision i taki program: #include <REGX51.H> #include <absacc.H> #include <stdio.H> #define CSMX 0xf018 // adres rejestru wyboru wej?cia multipleksera #define CSAD 0xf010 //rejestr wyniku startu przetwornika unsigned char v_znak='v'; float wynik; odbierz_Znak() interrupt 4 { if(RI)// R1=1...
8051 ma 0kB (zero) pamięci programu :P A poważnie, to ma tyle, ile się do niego podłączy pamięci zewnętrznej, max. 64kB To już archaizm - pierwsze procki z rodziny '51 Wtedy słowo Flash kojarzyło się z niejakim Gordonem Flashem :d Przed 8051 były jeszcze 8031, a przed nimi był chaos :D A chcesz te wyjścia wykorzystać jak wyjścia normalnego licznika?...
No tak, rejestr B muszę wrzucić na stos żeby odzyskać stan B.0 po wyjściu z przerwania... Popełniasz błąd w rozumowaniu :D Możesz sobie zachować w przerwaniu wszystko (dowolny rejestr), porócz właśnie B.0 czyli całego B. Piotrek
Do tej pory omówiliśmy znaczenie ostrożnej obsługi przerwań, metody solidnej strukturyzacji ISR oraz uwagi wymagane do zmiennych globalnych i lokalnych ( Uważaj na przepełnienia bufora danych Generalnie używamy programowych buforów do interfejsów komunikacyjnych. Na przykład, mikrokontroler może zapewnić podrzędny interfejs komunikacji szeregowej I²C...
8051 obsługuje przerwania zewnętrzne. Nie widzę problemu, by zastosować taki mechanizm do odłączania CPU od magistrali.
Drodzy użytkownicy: Prosiłbym o pomoc odnośnie kilku pytań dotyczących rodziny procesorów 8051: 1. W jaki sposób można zatrzymać licznik? 2. Jaki jest maksymalny czas opóźnienia pomiędzy przerwaniami jaki można uzyskać wykorzystując licznik T0 w mikrokontrolerze 80C51 (12MHz)? 3. Czy jest możliwe wygenerowanie opóźnienia większego niż 1 sekunda z wykorzystaniem...
Witam, Robię zegar, czy istnieje jakakolwiek metoda dla 8051 aby odmierzyć dokładnie 1sekundę, wszytko było by ok gdyby przerwanie było generowane co konkretną ilość taktów niestety tak nigdy nie da się zrobić ponieważ poza timerem trzeba zrobić jakąś nieskończoną pętlę a wszystkie skoki w 8051 trwają 24 cykle zegar za czym idzie to że czasem przerwanie...
Witam Potrzebuje pomocy przy stworzeniu algorytmu do sterowania Triakiem wykorzystując do tego licznik mikrokontrolera 8051. Narazie wygląda to tak ze wykrywam zero napięcia sinusoidalnego 230V 50Hz czyli okres mam 20ms (dokladnie wykrywam początek sinusoidy i tylko początek bo mam transoptor prosto pod nap 230v przez rezystor podpięte bo tak życzy...
na symulatorze program działa poprawnie, tylko tylko na początku ustaw org 25h bo może masz zapisany program w miejscu przerwań timera PS: na symulatorze dość długo się pętle wykonują
wystarczy podzielić częstotliowść oscylatora przez 2^15 i mamy doładnie 1 sekundę. Oki powiedzmy ze uzywam CD4060 z w/w kwarcem i mam na ostatnim wyjsciu 2hz i tym "pedze" przerwanie INT0 procka ale mi chodzi o sposob jak ten podzial przez 2^15 zrobic na samej 8051, ewentualnie na jakims innym mikrokontrolerze?
Witam, spróbowałem zaimplementować w C, prosty zegarek softwarowy. Podobno da się to ładniej zrobić na przerwaniach. Poniżej kod który zrobiłem w godzinkę, tworząc "zliczacz" a'la zegarek , muszę tylko przekształcić procedurę dodającą godziny+minuty na taką która będzie działać w przerwaniu? (procesor taktowany zegarem 24Mhz). ie musi być super dokładny,...
Wiem jak działają przerwania, nie wiem z kolei jak je konfigurować. W takiej sytuacji, najprostsza droga to HAL. Akurat konfigurowanie peryferii dobrze w nim działa. Podejrzysz co robi HAL i po robocie, chyba, ze chcesz na nowo wynajdować koło. Niby wiesz jak działają. Dlaczego więc pytasz o rejestr maski przerwań zewnętrznych? To pytanie nowicjusza...
Chodzi o reakcje na wcisniety klawisz, a juz przy sekundzie opoznieia bedzie lipa!!! Myslalem o powstawianiu czegos takiego if (P1.0==0) brak ale bede musial tego robic bardzo duzo co mi zamaci program. Moze jest inne rozwiazanie, czos jak funkcje halt i exit dla 8051?????? (bo te nie wystepuja dla C51 keil).
po czy wnioskujesz że przerwanie nie występuje. jeśli nie dostajesz sygnału do kompa przez rs-a to może masz problem z rs'em a nie z timerem. spróbój jeszcze coś takiego $crystal = 16000000 Config Timer0 = Timer , Prescale = 8 Config pinb.0 = Output Timer0 = 5 On Timer0 Przerwa Dim G As Integer Enable Timer0 Enable Interrupts print "Hello"...
Witam serdecznie. Jakis czas temu zakupilem uklad uruchomieniowy wraz z mikrokontrolerem ATmega32. W tym semestrze mam w dodatku laborki z mikrokontrolerami. Zastanawiam sie czy jest mozliwosc pisania kodu pod 8051, jego konwersji jakims programem (widzialem tylko PIC->AVR) i uruchamiania na ukladzie. Ulatwialoby mi to zdecydowanie prace bo srednio...
Dzieki za odpowiedzi. Wątek fakt był prowokacyjny bo jakoś nie mogłem albo nie chciałem przyjąć do wiadomości, że się nie da. Mam wykorzystane wszystkie timery a potrzebuję odmierzać 100ms aby liczyć czas przyspieszania auta z dokładnością do 0,1 sekundy na 8051. Niestety nie mam pojecia jak to zrobić. Liczę już czas między impulsami z przetwornika...
Spoko...tylko, że w Bascomie 8051 nie ma komendy Round ;) Ale zwykłe podstawienie działa. Swoją drogą jest to conajmniej idiotyczne, bo powinna być niezgodność typów, no ale cóż...
Dzięki za szybką odpowiedź. Dobry pomysł. Myślałem też nad takim podejściem, ale widocznie jeszcze nie obmyśliłem tego optymalnie. Teraz już wiem, że może zadziałać :). Będę miał normalny LCD h**p://www.artronic.pl/o_produkcie.php?i... i RAM 32kB. Widzę, że podpiąłeś sporo peryferialii pod tą magistralę :). No to 1 problem się rozwiązał :) Pozdr....
Witam Bardzo proszę o pomoc w stworzeniu programu będącego prostym zegarem w 8051. Program mam wykonać wykorzystując wewnętrzny timer tick, który zlicza mi sekundy, minuty, godziny (0-23). Prosze o pomoc. Nie wiem co i jak w związku z zaprogramowaniem tego timer'a. Chcialbym aby na przerwanie wywolane przez ten timer był wysyłany winik do wyswietlacza....
Witam. Mam problem. Muszę stworzyć kalkulator na diodach. Używam mikrokontrolera 8051. Mamy wprowadzić dane 8 bitowe przyciskamy. Mamy do dyspozycji 4 rzędy po 8 diod. P0 i P1 służą do wprowadzenia danych na portach P2 i P3. Jak już je wprowadzimy mamy użyć ponownie któregoś przycisku z portu P0 aby zsumował nam porty P2 i P3 i wynik wyświetlił na diodach...
Timerem, ale tych w małych prockach brakuje. Skomplikowane programy na 8051 wykonywały pętlę główną w ok 15ms. Oczywiście program musi byc napisany z głową i nie może byc w nim "dealy" a obsługa peryferii (np wysyłanie po USART czy obsługa LCD) na przerwaniach. W sumie to i prawda, ale timery to odrębna kwestia i jeszcze muszę się nad nimi pochylić...
Przy 12MHz kwarcu częstotliwość pracy timerów wynosi 1MHz, w trybie 13 bitowym przerwanie timera będzie generowane z częstotliwością 1000000/8192 = 122Hz. W procedurze obsługi przerwania robisz dodatkowy licznik, który zwiększa się o 1, i kiedy "doliczy" do 122 (znaczy że minęła sekunda) zerujesz go i jednocześnie negujesz stan portu P1.1 żeby zmienić...
Zegarek LCD ??? No podłączasz Lcd do procka, inicjujesz i wyświetlasz. Potem podłączasz pare przycisków do ustawiania zegarka. Odpalasz timer z przerwaniem co 10 ms i liczysz przerwania. Potem zmienne z sekundami godzinami itd. Wyświetlasz jak coś się zmieni i gotowe :). W razie pytań, odezwij sie. Acha możesz też użyć gotowego zegarka RTC na przykład...
Mam problem, bo układ nie sczytuje mi przerwań z lini INT1, a z INT0 doskonale, po restarcie jak chociaż raz nacisne klaw. od INT1 procek nie zlicza już nawet na INT0, a gdy nie ruszam INT1 to liczy dobrze. Załączam kod jak ktoś wie gdzie jest błąd proszę o pomoc. Na wszelkie pytania odpowiem jutro bo teraz mam wyjazd. Kod napisany w C, a używam Keil-a,...
Witam !!! 3. Co to są banki rejestrów jak je zmieniać. - w 8051 sa cztery banki rejestrow (po 8 rejestrow w kazdym banku) zmienia sie je (banki) poprzez odpowiednie ustawienie bitow RS1 i RS0 rejestru statusowego PSW. Bank rejestrow najprosciej mowiac to zbior wlasnie 8 rejestrow w ktorych mozemy przechowywac argumenty (dane ) dla wykonywanych instrukcji...
:arrow: davciu A może napiszesz, o jaki mikrokontroler Ci chodzi? Ja z tego fragmentu twojej wypowiedzi: (...) W asemblerze uaktywnialo się przerwanie np. org 000bh sjmp int_timT0 i pod etykietą int_timT0 umieszczaszało się kawalek programu ( co ma robic jak dojdzie do przerwania ). (...) zaryzykowałbym stwierdzenie, że chodzi o rodzinę 8051. A pozostali...
Nie da rady ustawiać priorytetów przerwań w AVR'kach tak jak to było w 8051. Ale spokojnie bez tego sobie poradzisz ;) ... ale cały czas jednak cię dręczy nadal czy się transmisja RS232 nie zakłóci mimo zapewnień ;) ..... oczywiście że może się zakłócić ale tylko wtedy jeśli źle napiszesz program a nie z innych powodów o których wcześniej było tu pisane....
Witam, mam chyba dość banalny problem z timerem T1 w ATtiny45. Otóż celem jest generowanie przerwania co około 40 ms - czyli zadanie wydaje się praktycznie śmiesznie proste. Proste było w 8051, ale AVR mi się stawia. Do tego celu zaprzągnąłem timer T1 w konfiguracji „match compare”. Przy kwarcu 8 MHz, preskalerze 2048 oraz wartości OCR1A...
Błądzisz. 0. Dlaczego wybrałeś muzealny mikrokontroler, dla którego informacji trzeba szukać w skanowanych artykułach z gazet wydawanych w latach 80-tych i 90-tych zeszłego wieku? 1. Dlaczego nie chcesz korzystać z timera? To jest najlepszy i najpewniejszy sposób odmierzania czasu. 2. Czy program w którym potrzebujesz opóźnienie 5ms nie robi nic innego...
Jasne! Ja Ci podam! Jest to adres 002Bh. W tych pdf-ah sa opisy pewnie do wersji podstawowej czyli 8051.
maciejbilu --> powiem więc ci inaczej - trzeba to całkowicie inaczej napisać i zapewniam cię że nie trzeba wykorzystywać Bitwait. Poczytaj sobie nawet na elektrodzie o wykorzystywaniu tzw FLAG w przerwaniach - to może coś ci się rozjaśni - bo na razie to niestety brniesz w ślepy zaułek - w ogóle nie rozumiejąc podstaw i zasad działania przerwań. Stąd...
Witam, zacząłem pisać program na zaliczenie tj. Zamek szyfrowy sterowany zdalnie z terminala i odrazu pierwszy problem, chodzi o ustawienie transmisji. Mam oto taki kod: [syntax=asm]$NOMOD51 ; wymagana dyrektywa kompilatora - ten procesor to nie 8051 $INCLUDE (REG517.INC); dolaczenie pliku definicji rejestrow procesora 80C537 LCALL ustaw_lacze petla:...
Aby wpisać nowe liczby nie trzeba koniecznie kasować starych. Nowa wartość pokryje starą. Aby skasować cyfrę należy wysłać zanegowaną wartość. Do multipleksowania wyświetlania muszą być zastosowane przerwania.
Jeżeli zasilanie jest odpowiednie, jeżeli reset jest zwolniony, jeżeli zegar zewnętrzny nie pomaga, to objawy wskazują na uszkodzenie pamięci programu. Układ ma 17-18 lat, a to już dużo dla pamięci Flash. Załadowanie tego samego programu do nowego mikrokontrolera powinno skutkować takim samym zachowaniem układu. Jeżeli masz odczytaną zawartość pamięci,...
... Proszę o jakieś sugestie, dodam, że nie mogę niczym innym zastąpić Waitkey().vayo No to uziemiłeś proca na amen , a do odczytu klawiszy lokalnych , pozostały Ci przerwania.Powiedz , dlaczego musisz Waitkey() , a nie np. Inkey ?? Piotrek
Witam, napisałem program w assemblerze pod mikroprocesor 8051, który wyświetla na LCD godziny, minuty, lata, miesiące i dni. Można modyfikować te wartości za pomocą trzech klawiszy (z klawiatury * - set,0 - <,# - >). Program został skrupulatnie przetestowany na symulatorze edsim51di - program uwzględnia lata przestępne a także walidacje dni miesiąca...
Witam, mam problem z podłączeniem klawiatury PS/2 do 8051 i wyświetlenie na LCD 2x16 odebranych znaków. Póki co odebrane kody nie są zamieniane na kody ASCII ponieważ i tak nic nie wyświetla się na LCD (LCD działa, wyświetla napis "Znaki:" Który wyświetlam mu na początku). Obstawiam, że nie rozumiem do końca obsługi klawiatury. Pisząc kod wzorowałem...
Nauka '51 obecnie do niczego ci się nie przyda, to bardzo stara architektura Tu nie był bym taki restrykcyjny. Po pierwsze kolega TechnoT już się z nimi nieco zapoznał i nie ma co mu robić przykrości, że był to czas stracony. A po drugie wiedza ta łatwo da się przełożyć na inne architektury. Polecanie AVRa w sumie też powoli przestaje być "trendy"....
Piszesz, że wiesz jak działa multiplekser, a w algorytmie ani śladu tej wiedzy. Już na początku włączasz przerwania od !INT0. Na schemacie ten pin nie jest do niczego podłączony. Gdzie tu logika? Co do samego MPXa, jeżeli chcesz skanować kanały, to potrzebujesz licznik, który będzie generował sygnał przerwania i adresował kolejny kanał MPXa z określonym...
PWM można zrealizować programowo np wg poniższego schematu. Do tego trzeba dołączyć np. klucz MOSFET na odpowiednie prąd/napięcie (stosowne rozwiązania sterowania MOSFETA znajdziesz na elektroda.pl). Poniższe rozwiązanie z powodzeniem hula mi w układzie od lat ośmiu: T0INT EQU0BH ;T0 interrupt start address FLAGS EQU28H OUTPRTEQUP2 ;Output port AB0...
Witam Zachcialo mi sie podlaczyc klawiature ps2 pod 8051 ale zamiast normalnie podlaczyc pod INT0 cos mnie podkusilo zeby podlaczyc pod TX i RX. Podlaczylem zasilanie i DATA pod RX i CLK pod TX. Napisalem obsluge przerwania w asm zeby wyswietlal mi na LCD wartosci jakie przyjda z portu. Nic nie przyszlo po naciskaniu klawiszy wiec pomyslalem sobie ze...
Witam. Wróciłem do poprawiania programu w moim wzmacniaczu z powodu problemów wynikających z różnic w kwarcach/rezonatorach stosowanych w różnych pilotach. Metoda odbioru sygnałów polegająca na zaprogramowaniu ustalonych czasów pomiędzy odczytami stanu portu działa idealnie, ale tylko w przypadku gdy program jest dokładnie dostrojony do rezonatora w...
Witam, mam problem z prostym programem który będzie zapalał mi diode na 1sekunde a jak ona będzie gasła to będziemy słyszeć dźwięk. To zadanie z zajęć z programowania mikroprocesorów a kompletnie nie wiem jak to zrobić, bo pierwszy raz mam do czynienia z tym programem. Do zadania został załączony taki rysunek od wykładowcy: Mam dwa programy na których...
Cóż.. mało wiem o całym urządzeniu, ale proponuję następujące rozwiązanie (rozumiem, że klawiatura przesyła przez RS kod znaku ASCII). ljmp 100h ;skok do poczatku programu org 23h ;wektor odpowiadajacy przerwaniu UART ajmp odbior ;skok do obslugi przerwania org 100h ;poczatek glownego programu mov SCON,#050h ;zaladowanie ustawien do odpowiednich mov...
Wiem szanownych forumowiczów Mam do zrealizowania projekt woltomierz cyfrowy na module szkolnym DSM-51. Niestety nie posiadam takiego cuda w domu i mogę na nim robić cokolwiek tylko na uczelni. Piszemy w srodowisku Keil językiem C i ni cholery nie mogłem znaleźć żadnego symulatora. Ale do rzeczy. Projekt to woltomierz cyfrowy. Cyferki wyświetlają się...
No więc mają to być przerwania od timer0. Kończąc podprogram1 kończę zliczanie timer0. Jeśli przejde teraz do podprogramu2 to na nowo uruchamiam timer0 ale wtedy chcę aby generował mi przerwanie do przerwania2 . bascom 8051
Witam! to wszystko bedzie najprościej zeralizować zadania. Ja bym zrobił to tak: 1) Uruchomi układ przerwań dla licznika np T0. Ustawić licznik w tryb pierwszy. Licznik w trybie 1 przy f=12MHz przepełni się conajwyżej ≈65ms dlatego trzeba by zliczać te przepełnienia, czym mógłby się zająć wcześniej odblokowany układ przerwań tego licznika ...ale...
B/_A - wej, wybór kanału A lub b, - zapis i odczyt rej SIO - podłączyć np A0 c/_D - wej, wybór kody sterujące lub dane do wysłania/odbioru - podłączyć np A1 _CE - wej, wybór układu CLK - zegar do 2,5Mhz dla Z80, do 4MHz dla Z80b, do 6MHz Z80c D7-D0 - wiadomo IEI- wej, sygnał zezwolenia na generacje przerwania przez Z80 może być sterowane lub stale stan...
Program ma wykorzystywać przerwania, czy poniższy fragment kodu jest dobry? Dobrze rozumiem, że on jest zarówno dla slave i dla master? org 0 sjmp st org 23h ; adres obsługi przerwan w pamieci programu dla portu szeregowego: 0023h ajmp seriali st: mov tmod, #20h ; tutaj mam wątpliwości dlaczego 20h? mov th1, #0fah ; 9600bound setb sm1 ; tryb...
W lekcjach ze strony www.micromade.com.pl jest taki przykład na transmisję: ;***************************************... ;LEKCJA 15- STEROWNIK PRZERWAŃ DSM-51 ;PRZYKŁAD 1- NADAWANIE RS-485 ;***************************************... ;********* Ustawienie TIMERów ********* ;TIMER 0 T0_GEQU0;GATE T0_CEQU0;COUNTER/-TIMER T0_MEQU2;MODE (0..3)...
Witam wszystkich progrmistów w asemblerze... mam wielki problem, dostałem zadanie ( w zasadzie to dwa, treśc drugiego w innym poście) do zrobienia z czegoś z czego jestem zielony i potrzebuje pomocy w rozwiązaniu i zrozumieniu problemu... Za wszelką pomoc bardzo dziękuje Zaprojektować i uruchomic system generujący przerwanie czasowe, spełniający następujące...
Witam wszystkich!!! Piszę program do wiatromerza(prędkość wiatru) który zlicza impulsy z kontaktronu(ilość obrotów) i zamienia na km/h. I kto mi powie co tu jest źle bo nie ma bata żeby mi to działało :D Mikrokontroler DS89C450. Ogólnie to ma działać tak, że leci sobie Timer 2 i przerwnie od niego jest co 1ms. jesli nie ma przerwania zewnętrznego od...
Napisałem program i niestety nie działa. Wysyłanie z kompa do mikro wydawałoby się że działa ok, jednak gdy chcę odtwarzać to coś się pieprzy. Wklejam kod, może ktoś znajdzie jakiś ewidentny błąd, którego ja już nie mogę dostrzec. LJMPSTART ;***************************************... ;OBSLUGA PRZERWANIA TIMERAO WYSYLAJACA PROBKI NA PRZETWORNIK...
To się pogubiłem - masz wykorzystać AD7755 :?: Dla układu ze zwykłym przetwornikiem A/C Przetwornik I/U za przekładnikiem to zwykły opornik. W specyfikacji przekładnika podana jest wartość tego rezystora, dla której zachowane jest przełożenie (o ile pamiętam coś koło 100 Ohm), oczywiście precyzyjny klasy 0,1%. Pisaliśmy o tym, że dla uproszczenia układu...
Witam. Timer mikrokontrolera '51 taktowanego zegarem 11.059200 MHz zliczy w ciągu jednej sekundy 921600 impulsów. Ze względu na wielkość timera (2 bajty) może Kolega zliczać setne części sekundy - ustawić przerwanie co 9216 impulsów. Każde wywołanie przerwania zwiększy zmienną o 1, czyli mamy w niej wynik pomiaru z rozdzielczością 0,01 s. Rozwiązanie...
Zacznij od przerwania timera.
ja najcześciej korzystałem z książki pt: Podstawy porgramowania mikrokontrolera 8051, ale i w internecie mozna znależć wiele przydatnych i pozytecznych rzeczy! Zgadzam sie z JOZZIM, bardzo dobra książka. Autorem jest Gałka (chyba Piotr) i kosztuje ok 31 zł. Jednym słowem wszystko o uP rodziny 8051 - rejestry, flagi, przerwania itd, itd :)
Przerwania w '51 są proste jak budowa cepa, poza tym przerwanie nie oznacza zajęcia timer'a. możesz również wykorzystać jedno z dwóch przerwań sprzętowych (zdaje się opadające zbocze na pinie 6 {int0/ P3.2 lub na pinie 7 {int1/ P3.3}). Do obsługi przerwania potrzebujesz koniecznie: -ustawić bit EA (czyli komenda SETB EA) - zezwolenie ogólne ne przerwanie...
Witam Dziękuje za zainteresowanie. Lecę tak jak pamiętam posty. Jasne że program jest ne kompletny, nie chciałem dawać całego programu bo problem mam z int0, reszta działa i nie wydaje mi się że tam nie może być błąd (z tym że nie napewno ;-)).Napisałem wszystko co jest potrzebne (według mnie) do zorientowania się o co chodzi i tak jest że int0 działa...
Czy ktos moglby mi napisac przykladowa obsluge przerwania od timera, bo ja napisalem ale dziala to dziwnie.Za pierwszym razem obsluguje przerwanie i skacze do podprogramu a potem jak wraca to juz do sjmp $ na koncu i licznik sie nie laduje do zadanej wartosci i liczy od zera, ale problem wiekszy w tym ze jak juz sie przepelni to nie obsluguje przerwania...
Jak dziala przerwanie od ukladu szergowego na 8051?. Napisalem cos takiego: void main(void) { SCON=0x52; //(01010010) tryb SIO 1 asynchroniczny, liczba bitow 8 (8 dane; N bez parzsytosci; 1 stop) TMOD=0x20; //szybkosc transmisji ustalana przez TIMER1 w trybie 2 TR1=1; //TR1=1 start ukladu TIMER1 TH1=-6; //TH1= -fosc/(12*32*Baud_rate), -6: dla 11.0592,...
Z góry przepraszam za zamieszczenie całego programu - i tak jest okrojony do minimum - ale gotowy do skompilowania (ICCAVR) Chciałem uniknąć pytań z cyklu a co masz jeszcze w programie - może się gryzie... Problem dotyczy wysyłania danych za pomocą interfejsu RS232 w procesorze AT Mega8 ( pewnie i innych ale ja wałkuje akurat ten ) Nie moge dojść dlaczego...
Na przyszłość proponuję abyś pisał bardziej czytelnie :] MEM_START: EQU 0x20 MEM_END: EQU 0x30 ; Od 20h Do 30h znaczy bez 30h TIMER_VALUE: EQU 0xFF - 100; O tyle należy zapełnic licznik ; aby liczył do 100. Zrobimy to w ; trybie 2 aby nie mawić się przeładowaniem ; Timera TIMER_MODE: EQU 0x20 ; Timer1 w trybie 2 RS_MODE: EQU 01000000b...
Jak miło, że ktoś tu pisze w ASM bo mam problem. Otóż piszę sobie programik, który ma gadać z PC po RS. Niby nic wielkiego, literatury mnóstwo, przykładów jeszcze więcej tylko, że.... Programik (a właściwie tylko istotny fragment, który zamieszczam) działa pięknie w środowidku Keil -> pokazuje jak pięknie tyka zegarak i jak ślicznie zasuwają "iksy"...
Witajcie. Proszę o pomoc w sprawie odmierzenia czasu za pomocą Licznika. Licznik pracuje w trybie 0 Program ma co sekunde zmieniać stan wyprowadzenia do którego podpięta jest dioda (wizualizacja pracy licznika) modyfikowałem wartość R1-pośredniego licznika ale bez skutków. po zmianie wartości TH nie ma efektów co zmienić? Grzegorz. $include(at89s8252.inc)...
Procesor się wyrobi w zasadzie bez problemów. Tylko przy próbkowaniu 16 kHz to raczej nie 8051, tylko ATMEG jakiś, bo dla 8051 masz ok 100 cykli na obsługę przerwania - niby wystarczy. Co do programu to chyba nie jest aż taki straszny. Ja bym to widział na zasadzie bufora pierścieniowego (tak jak bufor klawiatury w PC), czyli kolejki FIFO powiedzmy....
#include <reg51.h> #define IE0_VECTOR 1 //numer wektora przerwania INT0 #define TF0_VECTOR 2 //numer wektora przerwania Timer'a 0 #define BYTE unsigned char #define WORD unsigned int #define ENABLE 1 #define DISABLE 0 #define HighB(value) ((value >> 8) & 0xFF) #define LowB(value) (value & 0xFF)...
oke, dowiedziałem się co nieco na ten temat, więc transmisja będzie przebiegała po dwóch dedykowanych końcówkach, które wchodzą w skład portu P3 procesora. Są to: RXD - (P3.0) wejście szeregowe ('Receive data') TXD-(P3.1) wyjście szeregowe ('Transmit data') Konfiguracja portu szeregowego: SM0, SM1 – ustawienie trybu pracy portu szeregowego SM2...
Tak wiem, właśnie w tym problem, że sam muszę wykonać taki projekt w jaki sposób steruje się abs za pomocą uK 8051, czyli na każdym kole zamontowany jest czujnik prędkości obrotowej koła i teraz zastanawiam się w jaki sposób wartość anologową, którą otrzymujemy z każdego z kół przerobić na cyfrową. Jaki najlepiej użyć przetwornik, aby nie wykorzystać...
Układ po podłączeniu baterii pracuje przez chwilę poprawnie a następnie wygląda jakby się resetował Czy w identycznych warunkach (sterowanie silnikiem) zawsze czas do resetu jest identyczny (lub pdobny). i na wszystkich portach pojawiają się "1". Zazwyczaj w uC po Resecie wszystkie porty są w stanie wysokiej impedancji, czyli są przełączone na wejścia....
Nie porównuj programu z BASCOM 8051 do programu z BASCOM AVR bo to dwa różne kody wynikowe. W układach AVR wszystko odbywa się szybciej. Mniej taktów zegara przypada na wykonanie jednej instrukcji. Poza tym tam nie musisz na nowo uruchamiać licznika - działa on stale od momentu gdy ustawisz preskaler. Uproszczenie procedury przerwania w sposób przez...
przycisk musisz trzymac, bo procek wisi w funkcjach opozniajacych (delay()). uzyj przycisku ktory ma przerwanie, wtedy problem bedzie rozwiazany. ewentualnie musisz swoje odliczanie sekund przerobic - na przyklad na timer w tle, ktory daje przerwanie, w ktorym to przerwaniu sa zliczane owe sekundy - tym sposobem tez bedzie rozwiazane. procek na raz...
Witam. Ja bym to zrobił tak: Wykorzystał timer T0. W prodramie głównym obserwował stan przycisku i odświeżał wyświetlacz LCD na podstawie stanu rejestrów gdzie przy pomocy korekcji dziesiętnej i odliczania umieszczony będzie wynik pomiaru. Przycisk za pomoca rozkazu CPL włącza i wyłącza przerwanie przerwanie od T0 (ogólne włączone czały czas). Po w...
Przerzucam się z 8051 na STM32 i przezywam koszmar. W 8051 wszystko ładnie było opisane w dokumentacji, a tutaj w dokumentacji nie ma nic wspomniane o tym jak obsługuje się peryferia! Jest wspomniane o tym, że I2C jest, są przebiegi czasowy, a nie ma o tym jak to obsłużyć... Gdzie STM32 ma opisaną obsługę peryferii w swoich procesorach jeśli nie w dokumentacji?...
Schemat mam gdzieś nabazgrany na kartce, póki co powinien wystarczyć opis połączeń powyżej. Jeśli chodzi o zapis do pamięci, to chyba jedynie do EEPROM na 1-wire, bo w układzie nie ma już wolnych wyprowadzeń - budowa płytki uniwersalnej jest taka, że port 3.7 jest zwarty do masy, a reszta jest wykorzystana na sterowanie wyświetlaczem, UART i 1-wire....
50 Hz to 20ms należy więc podwoić częstotliwość sieciową i będzie 10 ms (podwojenie jest bardzo proste) ewentualnie inne źródło przerwań. Ustawiając odpowiednio procedurę przerwania można będzie osiągnąć to, że procedura będzie wykonywała "jakby" w tle np. IntTime Push HL Push DE Push BC Push AF Call Proc1 Call Proc2 ........ Call ProcN Pop AF Pop BC...
1. Prostsze dodajesz zmienną, a raczej kilka bo jedna zbyt szybko się przepełni. Dekrementujesz ją, jak osiągnie wartość 0 nie skaczesz już LOOP_DISP. 2. Używasz timera i przerwań. Za każdym wywołaniem przerwania od timera np. zmniejszasz wartość zmiennej, a w pętli głównej porównujesz jej wartość z pewną wartością która odpowiada za określony czas....
Transmisja równoległa na 8051 jest dziecinnie prosta. Ale na początek proponuję określić jej warunki np. 1. czy ma być dwu czy jednokierunkowa 2. Ilu bitowa ma być transmisja (proponuję 8 lub 4, ale może być i 16-bitowa) 3. określić czy ilość sygnałów sterujących ( czy ma być potwierdzenie, czy nie). 4. czy transmisja MASTER/SLAVE czy może równoprawne...
Po prostu jest to stos niedostępny programowo dla programisty. To miałem na myśli. W nowszych konstrukcjach jest dostępny (przykładowo PIC12F1501), Co nie eliminuje większości ograniczeń. Ale, czy słyszałeś, aby ktokolwiek miał na PIC problemy z nadpisywaniem stosu? ;-) Rzecz w czym innym. Po prostu na stosie się czasami robi rożne operacje. W przypadku...
Może powinieneś pisać w C? Jest dostepny kompilator na '51 nazywa się SDCC. Dla C znajdziesz przykłady obsługi klawiatury. Tak po krótce to w tym co napisałeś nie ma podstawowego elementu czyli skonfigurowanego timera odmierzającego 10ms okresy. Co przerwanie porównujesz aktualny stan klawiatury z poprzednia. Jeżeli nadal jest wciśnięty ten sam klawisz...
[syntax=assembler] ORG 0 ; wektor zerowania JMP MAIN ; bezwarunkowo skocz poza obszar wektorów przerwań ORG 000BH ; wektor przerwania po przepełnieniu timer0 JMP PODPR_L MAIN: MOV TMOD, #01H ; ustaw dla timer0 tryb 1 MOV TL0, #01110000b ; 65536-10640=54896 MOV TH0, #11010110b ; SETB EA ; globalnie zezwól na przerwania SETB ET0 ; zezwól na przerwanie...
Klawiatura od PCta ma byc podpieta pod mikrokontroler 8051 za pomoca ps2. program ma wyswietlac znaki wklepywane z klawiatury na lcd. Jak sobie z tym poradzic??? a wiesz moze dokladnie jaki to byl numer EP?? Z tego co wiem to dane sa przesylane synchronicznie bit startu 8 bitow danych bit parzystosci i bit stopu. chcialem wykorzystac do tego przerwanie...
Co do schematu to jeszcze go nie przerysowalem na komputerze, przekaznik wyeliminowalem wiec to tez nie to, jesli chodzi o /int to do jednego podpiety mam rezystor 700ohm do +5V i przez wylacznik zamyka sie z masa, drugi int tez rezystor do +5 i podawana jest masa z samochodowego czujnika wstrzasowego. Jak na razie uklad dziala poprawnie- przyczyna...
Nie wiem czy dobrze zrozumiałeś ideę wykożystania przepełnienia od licznika w tego typu wyświetlaniu, więc po kolei: - napewno wiesz że przy wyświetlaniu multipleksowym w danej chwili świeci tylko jedna cyfra, aby uzyskac efekt świecenia wszystkich trzeba kilkadziesiąt razy na sekundę zapalac kolejne cyfry. Częstotliwośc przerwań od licznika dobierasz...
Wie może ktoś co zrobić w Keilu, żeby można było korzystać z więcei niż jednego przerwania? Chodzi o to, że jak jest ich już 2 to nakładają się na siebie. Pisze program w C i nie wiem co z tym fantem zrobić?? W asm to nie ma sprawy bo odrazu robi się skok do właściwej procedury i dopiero tam odkłada się co potrzebna na stos a w C to juz gorzej bo nie...
...A dlaczego bajzel? Ano dlatego , że w kodzie nie ma procedury przerwania dla Timer1 , więc procek chcąc obsłużyć przerwanie T1 , poszed by w przysłowiowe maliny. Co się stanie w podanym programie gdy w czasie obsługi przerwania wystąpi następne przerwanie ? Nic się nie stanie. W AVR-ach , w czasie obsługi dowolnego przerwania , zerowana jest globalna...