Ja w tego typu wyświetlanie zaprzęgam któryś licznik przepełniający się 100 do 200 razy na sekundę (w zależności od ilości segmentów) i tam przy każdym przepełnieniu aktywuje kolejny segment wyświetlając na niego daną ze zdefiniowanego wcześniej rejestru. Tak więc po dokonaniu pomiaru aktualizujesz tylko odpowiednie rejestry z których dane są wyświetlane...
A czy sam timer2 pracuje bo w tych procesorach należy przed inicjowaniem peryferii włączyć do nich zegar (dla timera TIM2 w rejestrze PCKENR1). Chyba że wykonuje to timer_init.
... Sorry za moją ignorancję może to jest aż tak proste, że niepotrzebnie pytam ale ... może znajdzie się ktoś chętny mi pomóc Czy poniższe makro jest bardziej czytelne , jeśli przypomnę że obliczenia dotyczą milisekund , których w sekundzie jest 1000 , a znamy ilość cykli oscylatora na sekundę :?: .MACRO Laduj_Licznik ****************************************...
Witam. Nie bardzo rozumiem, o jaki licznik chodzi. W x86 rejestr cx jest rejestrem licznikowym. Najczęściej używane zerowanie: xor cx,cx napisz nieco dokładniej o co Ci chodzi.
Pierwszy raz widzę assemplera od AVR więc mogę się mylić, ale czy nie brakuje ci ORG'a? ;----------WEKTORY PRZERWAN------------------------------ .CSEG .ORG 0; wektor przerwania inicjalizacji rjmp Reset; skok do procedury inicjalizacji .ORG OC1Aaddr rjmp zwieksz ;----------SEGMENT PROGRAMU------------------------------ .ORG Coś tam Cośtam <- tu dopisałem....
Witam. Mam problem z pewnym programem. A mianowiciie chodzi o licznik impulsow na ukladzie AT89C4051. Mam w planie dwa wyswitlacze led i nie wiem jak mam zrobic zeby po zliczeniu ponad 9 impulsow oddzielic do jednego rejestru liczbe dziesiatek a do drugiego liczbe jednosci. Z gory dzieki za pomoc.
Czesc ! Portu B nie musisz ustawiac , po starcie procesora wszystkie porty sa ustawione jako wejscia ponadto : movlw80h movwfTRISB ustawia Ci jako wejscie jedynie RB7, pozostale to wyjscia MOVLW 0 MOVWF TRISA teraz caly porta A ustawiles jako wyjscia, malo tego uzywajac timer 0 i podzielnika 1:256 pamietaj ze aby zwiekszyc jego stan o jeden...
Kolego, nawet nie chce Ci się przepisać programu... Już Ci pisałem - poczytaj o PRZERWANIACH. Przerwanie nie polega na ciągłym testowaniu jednej czy dwóch flag, tylko na pozostawieniu tego procesorowi. Przykład kodu z użyciem przerwania: org 0 ; adres wektora resetu sjmp start org 0bh ; adres wektora T0 sjmp t0_isr t0_isr: inc A anl A, #7 jnz t0_skip_blink...
Przypuszczam że to ma być rodzaj generatora sekwencji, stąd te diody... Chyba najprościej wogóle nie bawić się w liczniki tylko 1. zwiększenie zmiennej o 1 (np. P1) 2. odczekanie pewnego czasu 3. Jeśli wystąpiło przepełnienie to odpowiednio ustawiamy P3. 4 wracamy do początku.
8051 nie posiada w swoich zasobach licznika T2
Z opisu funkcji wynika, że pętla używa 8-bitowego licznika. Gdzie w tej funkcji jest odniesienie do licznika.? W tej linii: dec %0 Po prostu jeden z rejestrów jest używany do odliczania opóźnienia i dlatego został "przezwany" licznikiem. Nie ma to nic wspólnego z fizycznymi licznikami/timerami. O wstawkach assemblerowych możesz przeczytać w manualu...
Trochę dawno pisałem w asm i nie wiem czy jest gotowe przerwanie do wypisywania liczb ale możesz zrobić np. tak: 123 :10 = 12 reszta 3 12 : 10 = 1 reszta 2 1 : 10 = 0 reszta 1 Dzielisz liczbę przez 10 i wrzucasz reszty z dzielenia na stos dopóki wynik z dzielenia różny od 0. Później ściągasz ze stosu dodajesz 48 i wypisujesz.
albo po prostu LICZNIK=8 ... DEC LICZNIK BREQ albo BRNE
Bardzo to nieczytelne. A jaki to procesor ? Po rejestrach wygląda na '51
Podobne zastosowanie (licznik sterujący multiplekserem), co prawda na AVR i w asemblerze ale zawsze sie moze przydać jest pod tym adresem : http://forum.mikrokontrolery.net/viewtop...
Poczytaj o licznikach 8051, ładujesz wymierzoną liczbe do licznika, licznik odlicza tyle cykli maszynowych, i po odmierzeniu tej liczby (20ms) zmieniasz w przerwaniu stan portu, i tak w kółko, trzeba znać częstotliwość taktowania. Taki skrót żebyś wiedział czego szukać.
Zacznij od nauki układów cyfrowych (zwłaszcza bramki) i języka asembler.
Skorzystaj z przerwań generowanych przez licznik TIMER1 (lub TIMER2 jeśli jest dostępny).
czy licznik timera jest zmniejszany co 1 takt?
Zamiast robić tam opóźnienie można policzyć ile taktów zajmie uartowi wysłanie ostatniej ramki i robić sobie inne potrzebne operacje ,które zajmują czas a po odpowiedniej ich liczbie zmienić stan porty i tyle . Asembler daje wiele możliwości wykorzystania czegoś co się nazywa opóźnieniem . A jak masz wolny licznik to można na nim zrealizować opóźnienie...
Witam Proponuję zrobić to troszkę inaczej. Przerwanie zaprogramuj tak aby ustawiało jakiś bit co jedną sekundę. Program główny ma mieć taką konstrukcje. czy sekunda: jeżeli tak to mrugnąć 5x diodą wyzerować czy sekunda jeżeli nie skok na czy sekunda czy sekunda 2: jeżeli tak to buzer 4x wyzerować czy sekunda jeżeli nie to skok do czy sekunda...
Dopisanie pętli nadrzędnej musi poskutkować. Oczywiście jej licznik musi być niezależny od liczników pętli zagnieżdżonych. Jest kilka możliwych rozwiązań, a najprostszym chyba będzie użycie stosu, czyli: .startup mov cx, 10 petla_glowna: push cx ... pop cx loop petla_glowna .exit
Jestem początkujący. Czy ktoś mógłby mi opisać jak zrobić opóźnienie na liczniku T0 w asemblerze. Ważne są ustawienia TMOD i TCON ale co dalej. Chce uzyskać opóźnienie około 1s (jak wywołać przerwanie od licznika i jak je realizowac aby trwało 1s) ? Kwarc 20MHz, cykl maszynowy trwa 0,8us.
Witam, Od strony programowej dodam (zupełnie nie znając asemblera), że to i tak nie zadziała. Np. to: LDS R16, ADCH // wczytanie wartości z przetwornika OUT PORTD, R16 Co to robi? Do tego wszystkiego, chyba "trochę" za szybko próbujesz ten silnik sterować. Ułóż algorytm i napisz to w C, chyba że to zadanie szkolne. Pozdrawiam.
znalazłem dużo przykładów jak posługiwać się licznikami, ale wszystko było w C a ja nie znam go i programuje w asemblerze. Mógłby ktoś opisać przykładowy licznik(tzn napisać program) i opisać? (chcę odmierzyć jakiś czas, ale najpierw chcę poznać zasadę działania liczników). najlepiej gdyby było coś o liczniku 0 i 1
Mało danych. Chcesz, żeby dioda migała na przerwaniach? Czyli przerwanie włącza, następne wyłącza - tak to zrozumiałem. Co do obsługi T0 musisz zrobić obsługę przerwania od adresu 0x0BH (czyli wyzwalanie przez flagę TF0). Wstaw coś takiego po LJMP start na początku: [syntax=text]ORG 0Bh ; start przerwania CLR TF0 CPL P1.4 ; zmiana stanu wyjścia sterującego...
taki sposób deklaracji jest jak najbardziej poprawny, jest nawet pod pewnymi względami lepszy, bo nie deklarujesz adresu każdej zmienej z osobna, więc pomiędzy już zadeklarowane zmienne możesz "wcisnąć" następne bez potrzeby zmiany reszty. W pamięci rozkłada się to tak, że DSEG AT 01H ustawia Ci licznik adresu zmiennych (a właściwie to symboli, bo widzę,...
Grafy się rysuje dla wielu ,,stworzeń". To może być graf automatu, licznika.... Najlepiej narysuj to na kartce i wrzuć tu fotkę bo nie mogę sobie tego wyobrazić. Pozdrawiam.
A nie mogą oba przerwania od liczników 0 i 2 działać niezależnie ? ldi R16, SYS_FREQ*1 out OCR2, R16 ldi R16, SYS_FREQ*2 out OCR0, R16 w rejestrze OCR0 mam wartość dwa razy większą niż w OCR2. Jeśli zakomentarzuje ustawienia jednego licznika i jego przerwania to drugi działa i na odwrot . Próbuje korzystać z dwóch liczników na raz i juz nie wychodzi...
Wystartował program, wyłączyłem tylko wewnętrzny podział zegara na 8 w fusy uproszczone. Licznik czasu spieszy się 30 sekund na 10 minut to na godzinę 3 minuty czy jest to możliwość zmiany przez taktowanie zegara układu
(...) Dodatkowo takie puszczenie "wolno" licznika powoduje to że mozesz na nim jeszcze pare innych rzeczy wykonać. Tu muszę koledze podziękować, bo tym zdaniem rozwiązał się mój zupełnie inny i niepowiązany z tematem problem, gdzie bardzo brakowało mi timerów.
żadnych idei....:cry:
Jeśli dobrze pamiętam to tak to się liczyło delay1: ldi R16, 0 ;1 cykl del1: inc R16 ;1cykl brne del1 ;2 cykle (1 gdy nie ma skoku) ret ;4 cykle ;razem (1+1+2)*256-1+4=1027 cykli delay2: ldi R17, 0 ;1 cykl del2: rcall delay1 ;3+1027 cykli inc R17 ;1 cykl brne del2 ;2 cykle (1 gdy nie ma skoku) ret ;4 cykle ;razem...
hmmm generalnie to dopiero zaczynam się bawić w uP, ale wg moich informacji wygląda to tak: aby port szregowy spełniał te kryteria należy odpowiedniu ustawić rejestr SCON, czyli potrzebujesz mode 1(Transmisja szeregowa asynchroniczna slów 8-bitowych, przy czym szybkosc ustalana jest programowo) oraz ustawić ren na 0 (wyłączenie nadawania), reszta bitów...
Witam Pierwsze linie kodu to deklaracja ustawień liczników T0 i T1. Konfiguracja dla ułatwienia została rozpisana na poszczególne bity, dlatego póżniej trzeba je przemnożyć x4 i x8 aby bity były na swoich miejscach. Dla licznika T0: CT0 EQU 0 M0 EQU 1 G0 EQU 0 T0S EQU M0 + 4*CT0 + 8*G0 oraz dla licznka T1: CT1 EQU 0 M1 EQU 0 G1 EQU 0 T1S EQU M1 + 4*CT1...
rejestr indeksowy zwiększasz o 2 w pętli. Do tablicy odwołujesz się poprzez ten rejestr indeksowy. Przenosisz znak do właściwego rejestru i wyświetlasz. Licznik pętli najlepiej ustawić na liczbę wprowadzonych znaków div 2 lub licznik również zwiększać o dodatkowy 1 przy każdym przebiegu pętli.
Witam Mam ogromna prośbę. Potrzebuje przeanalizować 2 programy które niestety nie działają poprawnie. Programy pisałem sam lecz niestety sa w nich pewne błędy które niestety nie mogę znaleźć. Po asemblacji działają jednak w programie symulacyjnym nie wyświetlają tego co powinny, wiec s to programy bardziej wychodzące z tego co ma robi dany program niż...
Witam, fajne kolejne propozycje Dar.El ;) ... teraz coś ode mnie, myślę wprawdzie, że to makro nie będzie już tak uniwersalne jak poprzednio zaproponowane, ale idąc za ciosem, bo było mi to akurat często potrzebne: ;Increment, Jump if No HIGH ; IJNH licznik,etykieta pętli ; licznik - tylko rejestry R16 - R31 .MACRO IJNH INC (at)0 CPI (at)0, 255 BRNE...
A ja rzucę gotowcem :D ; ----------------------------------------... ;konwersja liczby binarnej X-bitowej do postaci dziesietnej X-cyfrowej ;) | ;---------------------------------------... bajtyequ 4 ;z ilu bajtow sklada sie liczba bityequ bajty*8 cyfryequ 10 ;maksymalna ilosc cyfr po...
Jeśli tak to można go budzić przerwaniem od licznika, sprawdzać warunki i uruchamiać układ na czas pracy urządzenia w przeciwnym wypadku usypiać go ponownie. Nie wiem czy jest tryb uśpienia ,który nie spowoduję po jego wprowadzeniu wyłączenia tranzystora wiec możliwe że w czasie pracy układy będzie musiał on funkcjonować bez usypiania. Dla oszczędzania...
elektroziom - przede wszystkim poszukaj pdf-a do swojego enkodera i upewnij się jak działa - zaoszczędzi Ci to wiele problemów. To wspólne wyprowadzenie nie koniecznie musi być po środku, a wtedy całość będzie działała - lecz niepoprawnie a Ty będziesz szukał błędu w kodzie. Co do samej obsługi, ja to robię tak: Jedno wyprowadzenie na przerwaniu zewnętrznym...
Bis -> niestety to nie to :( Starob -> Mam takt 6MHz więc licznik przepełnia się raz na 0,13s, więc przy inkremętacji rejestru R5 co taki czas, muszę coś zauważyć (chyba ;)
No można też wykorzystać licznik atmegi. Wydaje mi się, że te funkcjie _delay_us miały być dosyć dokładne, asembler w jaki sposób można to zmierzyć programowo?
Ja też do tej pory pracowałem głównie na asemblerze 8051. Ale postanowiłem przesiąść się na AVR i stąd ten nieszczęsny BASCOM. ALe już widzę że choć narzędzie jest proste to ma wiele ograniczeń. Asembler pozwala wszystko zrobić optymalnie i precyzyjnie w BASCOM-ie jest to dosyć dyskusyjne. Co masz na myśli mówiąc o "cofkach enkodera" ? W układzie który...
Generalnie port jest zatrzaskiem więc nie ma sensu się martwić czy dana informacja się zmieni czy nie do czasu kolejnego zapisu do portu :) To daje ci sytuację taką korzystną sytuację że nie musisz się martwić o to co rozbi procek w tym czasie. Pytanie jak bardzo zależy ci na dokładności odmierzenia czasu w przypadku zapalania diody na około 1s lub...
Zliczanie na 2 cyfry: inc cyfra2 mov a,cyfra2 cjne a,#10,dalej mov cyfra2,#0 inc cyfra1 mov a,cyfra1 cjne a,#10,dalej mov cyfra1,#0 dalej:
Dzień dobry, witam wszystkich. Mam problem z wstawką asemblerową do języka C. Programuję procesor atmega2560. Nie rozumiem dlaczego nie działa funkcja "asm volatile ("mov r21,MCUSR");". Chcę dzięki niej przenieść wartość rejestru mcusr do rejestru r21. Lista błędów w załączniku. Wiem, że one wprost mogą nie wskazywać na to, że ich źródłem jest ta linijka...
Witam;) Jeśli chodzi o nadawanie kodu cyfr klawiaturki zestawu to pisałem jakiś czas temu taki program w ramach zaliczenia tegoż przedmiotu. Podejrzewam jednak, że chodzi o wykorzystanie np. HyperTerminal'a i podawanie znaku z klawiatury komputera. Oto program który wówczas napisałem: st7/ TITLE"starter.asm" MOTOROLA #INCLUDE "st72334.inc"...
;* ;***************************************... ;*PROCEDURY OBSŁUGI MAGISTRALI 1-Wire DLA MIKROKONTROLERA AVR ;***************************************... ;* ;*Nazwa pliku :AVR_1Wire.asm ;* ;*Przeznaczenie :dowolny AVR, za wyjątkiem AT90S1200 ;*Kwarc :4MHz ;* ;*******************************OPIS****...
po co 2 ukaldy ?? jak rozumiem chcesz sterowac dwoma punktami swietlnymi ?? Tak dokładnie o to chodzi, mam w pokoju żyrandol w którym są 2 układy po 2 żarówki... jaesli tak to wystarcza dwa triaki (i optotriaki) natomiast jeden uC i jeden odbiornik Ale chciałem mieć możliwość niezależnego sterowania układami... co do restatu procka przy zaniku zasilania...
Witam. Pisze właśnie 48 kanałowy moduł PWM. Procesor to atmega 169. problem Polega na tym że odświeżanie jest trochę za wolne jak na moje oko - nie wiem czy nie przegiąłem z liczbą kanałów obsługiwanych przez jeden procesor. Pierwotnie napisałem program w bascomie - działa ale zdecydowanie za bardzo miga. Metoda chyba najszybsza z możliwych czyli programowy...
Otóż mam zrobić na wyświetlaczu LED licznik binarny na 4 pozycjach i co pół sekundy zmiana(czyli wyświetli jedynkę w kodzie binarny, a za pół sekundy ma wyświetlić dwójkę). jak następuje przepełnienie to od początku.W języku Asembler. Na DSM 51 Mam ten program napisać na jutro, a na lekcjach nie robiliśmy licznika binarnego i mało co obsługiwaliśmy...
Na poczatku kazdego programu umieszcza sie tzw Tablice wektorow przerwan. Procesor ma zaszyte na stale pod jaki adres ma skoczyc gdy otrzyma przerwanie. Gdy otrzyma takowe skacze w odpowiednie miejsce tablicy. Po drodze na stosie zachowuje aktualny adres licznika programu zeby wiedzial w ktore miejsce ma wrocic po wykonaniu instrukcji reti informujacej...
Atmega 162 nie ma przetwornika ADC o ile pamiętam Dobrze pamiętasz. A z licznikami zawsze można sobie poradzić. Ich ilość jest prawie nieskończona (ja wykorzystuje ich około 10 w swoim ostatnim projekcie). Zrealizowane oczywiście softwarowo
Witam Procedura gotowa, działa na przerwaniu i wyrabia się w 40 cykli zegara (około), ale nie odkładam rejestrów licznika na stos, jeżeli licznik będzie w SRAM to trzeba dodać zachowanie na stosie rejestrów Y. Na razie popatrz na asembler i napisz co z tego rozumiesz, acha, algorytm jest inny niż twój. INT0INT1: push r16 ;odłożenie rejestrów i SREG...
Czy to gdzieś w manualu powinienem szukać czy może w kodzie asm? Zrobiłem tez taki test że w main'e miałem: [syntax=c]AT91F_PIO_SetOutput(AT91C_BASE... AT91C_PIO_PC6); AT91F_PIO_ClearOutput(AT91C_BASE_PIOC, AT91C_PIO_PC6); licznik++; if(nHzTicker) { printf(licznik); }[/syntax] sam Timer szedł 1000Hz. Licznik naliczał zaledwie do około 279900, podczas...
Do rejestrów ładuje się liczby wyłączenie w postaci binarnej, bo procesor nie wie, co to jest system dziesiętny. W tekście programu możesz te liczby zapisać w postaci binarnej, dziesiętnej, szesnastkowej, ósemkowej albo jako znaki - 'a', '5' itd. Możesz również zapisywać je jako wyrażenia stałe, np. 5 + 77 albo '5' - 15. Nie znam asemblera AVR, ale...
Okej, wklejam zatem treść polecenia. "Napisać program, który po uruchomieniu konfiguruje licznik WDT w tryb Interrupt and System Reset Mode z czasem przepełnienia 1000 mikrosekund. Wykorzystać jeden z rejestrów ogólnego przeznaczenia do zliczania liczby wystąpień przerwań od WDT. Drugi z rejestrów wykorzystać do odczytania wartości z rejestru MCUSR,...
Wygląda to tak,mam licznik od 0 do 255 na jednym z rejestrów. Wysyłam sobie to do PGA2311 i ustawiam głośność. Problem polega na tym że chciałbym wyświetlić wartość wzmocnienia na LCD. Obsługę LCD mam zrobioną. Mogę wysłać tekst lub pojedynczy znak. Wzór na wzmocnienie jest taki: Wz = 31,5-((255-n)/2). gdzie n to wartość licznika. Pierwszy problem jak...
Dzień dobry, mam problem z zadeklarowaniem klawiatury do następującego programu: [syntax=x86asm] start: org 0h mov R2,#34h ; zapis zawartości komórki 34h do rejestru R2 mov SCON,#01010000b ; struktura portu szeregowego mov TMOD,#00100000b; tryb 1, uaktywniony odbiornik mov TH1,#0FAH ; tryb 2 licznika T1 setb TR1 ; wartość początkowa dla licznika T1...
Witam i zapraszam do dyskusji. Do asembler:Impulator jest nowy- zamówiony wraz z całym osprzętem (tylko w częściach). Program wgrany w prosesor. Po złożeniu tego okazało się, że program sobie nie radzi - popełnia błędy, o których pisałem. Ja zmieniłem zastosowanie tego Kit-u, a co za tym idzie cały program napisałem na nowo. Stworzyłem program, który...
Osobiście nie ufam wewnetrznemu podciągnięciu na /RESET i dokładam 4,7-10kΩ do Vcc. Moje procedurki w petli głównej zerują również licznik watchdog-a w pętli głównej (plik Main.asm), który gdy osiągnie maksimum, resetuje mikrokontroler. Oprócz tego jest tam taki myk, że reset od watchdoga nie inicjalizuje zmiennych(danych w RAM, m.in. licznik "tyknięć"...
Napisz jakie założenia projektu tego licznika i napiszemy go w końcu to nie jest taki skomplikowany układ :) 1. czy ma być wprowadzany obwód kola z podłączonym licznikiem? 2. tylko prędkość czy coś jeszcze?
No ale w asemblerze jakiego procesora? Najprostszy sposób to: - włącz diodę - w pętli opóźniającej odczekaj 100ms - wyłącz diodę Dla tak długiego czasu nie stosuje się jednak tej metody i pasowałoby tu już zaprząc przerwania od liczników. myrcioch
Wątpię czy ktoś Ci to wyłoży na tacy. Jak sie chcesz bawić to rozbierz licznik, znajdz pamięć. Poczytaj i poszukaj jaka to jest. Odczytaj zawartość. Jak troche programowałeś to z asemblerem nie powinieneś mieć kłopotu. pozmieniaj ją sobie. Tak w ogólnum skrócie robią Ci którzy się biorą za to sami. Ostrzegam jednak że może się to skończyć unieruchomieniem...
Fajnym i szybkim sposobem jest podpięcie czujnika do przerwania zewnętrznego. no właśnie o tym pisałem... Wykryte w ten sposób zbocza opadające i odpowiedni licznik programowy (to są wolne przebiegi) pozwala jednoznacznie odczytać kod. mierząc tylko i wyłącznie zbocza opadające będzie trzeba domniemac że jezeli w czasie trwania bitu nie zostanie wywołane...
Myślę że można by użyć przerwania do tego. Np. Sygnał o zmiennym wypełnieniu podać ma na wejscie przerwania INT0 (skonfigurowanego na wywołanie przerwania przy rosnącym zboczu). W obsłudze przerwania należałoby: Włączyć licznik T0 w trybie licznika 16-to bitowego wykonywac pętlę trwającą dopóki INT0 jest wysokie gdy pętla się skończy zatrzymać TIMER0...
U Ciebie nic nie dzieje sie w przerwaniu - gdy tylko do niego dojdzie to program automatycznie z niego wyskakuje przez RETI. W przerwaniu powinienes umiescic zlicznie do 8 a nie gdzies indziej. Gdy zliczysz to wtedy przesuwasz bity na swoim porcie, zerujesz swoj licznik i kreci sie wszystko od nowa. BF na szybko (ni to C, ni to assembler ale idea:)...
Na moje lepiej zrobić to tak: dodawanie: clr a mov b,#00h mov r0,#01h clr c petla: add a,(at)r0 inc r0 inc b jnc petla mov P5,b ret Nie wiem czy chcemy dodawać adres komórki i licznik dodawań ;) Taki drobiazg :]
Wystarczy jakiś mały mikrokontroler najlepiej z 2 licznikami. Napisanie programu nawet w asemblerze nie będzie trudne. Dodajesz jeszcze mały wyświetlacz alfanumeryczny i po spr`awie.
Witam! Niejednokrotnie już korzystałem z usług tego forum lecz pierwszy raz zdecydowałem się założyć własny temat (po prostu nie znalazłem odpowiedzi na nurtujące mnie pytania w tematach już istniejących). Otóż mam następujące pytania: 1) Jak można inaczej zapisać instrukcje PUSH i POP w asemblerze nie używając tychże instrukcji? Do dyspozycji mam rejestry:...
Witam mam do napisania dosc prosty(chyba) program w asemblerze na 51, problem ze mam z tego tylko 1 laborke na ktora musze oddac projekt, a samemu nie chce sie poznawac wszystkich tajnikow asemblera :) programem ma byc licznik wcisniecia przyciski, czyli po wcisnieciu przycisku(port P1.7) ma sie zapalic dioda(port P4.1), rejestr R1 ma sie zwiekszyc...
Posiadam µP AT89S8252 , jak by wyglądała procedura opóźnienia ( 100 ms ) z wykorzystaniem wewnętrznego licznika tego µP przy 12 MHz ?
...Mozesz sprobowac wykorzystac dodatkowo - jako uklad posredniczacy miedzy np enkoderem ,a uC jakis licznik... Jeden 7400 ustalający czy dodajemy czy odejmujemy, oraz cztery 74193 pozwalają Ci zliczyć dwubajtową wartość. Jeśli do tego dodasz nastawniki BCD, to możesz jeszcze kożystać z sygnału resetującego licznik z enkodera - będzie wtedy liczył...
Witam ponownie. Korzystajac z waszych wskazowek dokonalem szeregu testow. Tak wiec po kolei... Wersja AVRStudio to 4.05 Co do wyskakiwania z programu, to wyglada to troche inaczej. Po wykonaniu rozkazu rjmp start stan licznika rozkazow pokazuje ciekawa wartosc. Zaznaczylem to na czerwono. Co do produkowania pliku, jaki ma znalezc sie w EEPROM, to jest...
hmm faktycznie..... czyli przy drógim dzieleniu trzeba mianownik podzelić prze 256, usunąc młodszy bajt i w jego miejsce wpisac starszy a msb trzeba by wyzerowąć. tylko że wtedy powstaną przekłamania:/ nieduże i tylko po przecinku ale tego juz chyba nie przeskoczymy, gdyż brakuje dokładności Dodano po 12 chociaż jest sposub na to drógie dzielenie, zeby...
tablicę z danymi umieść na samym końcu za programem: [syntax=asm].include "tn13def.inc" .cseg .org0x00 rjmpstart .org 0x0A start: cli ; blokada przerwań ldi r16,low(RAMEND) ; stos na koniec RAM out SPL,r16 ldi r16,0b00000111 ;konfiguruje porty B pin0-pin2 na wyjscie out ddrb,r16 ps0:ldiZL,low(Ledy<<1) ;adres tabeli w pamięci programu ldiZH,high(Ledy<<1)...
poprowadzi mnie ktoś za rączke przy uruchomieniu psa w s52? (asembler) całkiem od podstaw, tzn poczytałem troszkę o zerowaniu licznika i wiem żeby nie umieszcać tego w prodedurze przerwań. Mam kilka pętli, główną i kilka "obok" w których ustawiane są parametry pracy, oraz wykrywanie błędów. W sumie jest ok 4 króciutkich pętli i można by było tam umieścić...
To teraz postaram sie troche rozjaśnić sytuację oco naprawde biega. Piszę w Asemblerze TASM (Turbo Asembler). Napisałem taki oto program. .MODEL SMALL .STACK 256 .DATA OLD_ADRES DW 0000,0000 LICZNIK DW 0000 BYTE_TIMER DB 00 TSC_HIGH_DWORD DD 00000000 TSC_LOW_DWORD DD 00000000 .CODE START: .586 MOV AX,(at)DATA MOV DS,AX MAIN: RDTSC MOV AX,4C00H INT 21H...
Jeszcze jest licznik T0, ale dopóki nie opowiesz jakie zasoby już wykorzystuje i dlaczego to nie ma dyskusji. I dlaczego ten super wązny algorytm musi być wykonywany w całości, bo to tak odczytuje, czyli ty w ogóle nie możesz przerwań zastosować. JA bym ten algorytm dał do programu głownego, a wyniki które podejrzewam są ważne do wykonywania dlaszego...
Nota aplikacyjna AVR410 Atmela, ale tam chyba jest użyty ten licznik. W każdym razie u mnie śmiga na ATtiny 2313.
Co dokladnie oznacza u Ciebie wywolanie funkcji z przerwania? Czy jest to: a) pierwsze wywolanie uzytkowej funkcji w C z poziomu asemblerowego "handlera" (tzn. tego, który bezposrednio reaguje na przerwanie), umieszczanego zwykle w startup.S a) kolejne wywolanie funkcji z tej pierwszej uzytkowej wyzej wymienionej ? Powodow mozesz miec mnostwo: 1. Jednak...
Po pierwsze to powinieneś najpierw zadbać o TL0 bowiem to on "ucierpi" w pierwszej kolejności pod wpływem impulsów z licznika. Korekty dokonujesz dodając niezerową zdefiniowaną stałą do obecnej wartości młodszego bajtu licznika. TL0=TL0 | 0x30; TH0=0xF8; W asemblerze będzie to: ORL TL0,#30h MOV TH0,#0F8h Można także dokonać dodawania jak zaproponował...
Najprostszym sposobem jest skorzystanie z języka wyższego poziomu np.C. Wtedy sytuacja się znacznie upraszcza. Nie mniej jednak tak w asemblerze jak i w C całość należy zrealizować dość podobnie. Pierwszą metodą która sprawdza się gdy nie mamy nic więcej do zrobienia a tylko odmierzenie czasu i nie używamy przerwań albo gdy ich używamy ale na dokładności...
Witam. Nie wiem jak w asemblerze wykonać przejście mikrokontrolera ATtiny2313 w trym oszczędzania energii, gdy brak będzie zasilania z sieci (praca na baterii). W bascomie po skonfigurowaniu PORTD.2 (INT0) jako wejście podciągnięte do + i podłączenia do niego +5V i rezystora do masy sprawę załatwiał poniższy fragment programu [syntax=vbnet]Do If Pind.2...
Bardzo fajny mikroprocek SAMSUNGA - 6 8bitowych portów I/O - 8 kanalowy przetwornik A/C - port szeregowy - dwa 8-bitowe PWM - dwa 16bitowe timery/liczniki rdzen SAM8 CZY KTOS MA KOMPILATOR ASEMBLERA LUB C DLA TEGO PROCKA? Lub moze trochu info w czym to moge zaprogramowac.
Nie sadze, by ktokolwiek znal dokladne wartosci opoznien dla poszczegolnych iteracji petli for, zwlaszcza w wielopoziomowym ukladzie. Z doswiadczenia jednak moge podpowiedziec ze dwie petle FOR z licznikami do 255 powinny Ci bardziej niz wystarczyc. Wrzuc takie petle na symulator i popatrz ile czasu zajmuja, a potem dopasuj liczniki tak by otrzymac...
... Program napisalem od nowa i teraz mam pytanie: przy asemblacji wyskakuje "Zdublowany kod programu w obszarze 27..29 z obszarem 19..274" (asembler to Turbo) Czego to jest przyczyna? To przypatrz się coś napisał w 1-szym poście (komentarze usunąłem) :D ORG 000H 000H,001H,002H LJMP START ORG 000BH 00BH,00CH,00DH LJMP PRZERW_T0 ORG 001BH 01BH,01CH,01DH...
W takim razie chciałbym się jeszcze zapytać ciebie I-light o jedną sprawę, bo z noty katalogowej nie mogę doczytać. Mianowicie wszystkie pwm'y ustawione są w 8-bitowym trybie fast pwm, inverted mode. Oznacza to że licznik liczy od zera do wartości 0xFF, resetuje się i liczy od nowa. Z każdym krokiem porównywana jest wartość licznika z wartością rejestru...
Najlepiej zamienic na odejmowanie w pętli odejmujesz dzielnik od dzielnej i zwiekszasz licznik jezeli dzielna<dzielnik w dzielej masz resztę w liczniku iloraz
Dzięki za odpowiedź. Faktycznie Twoja informacja rozwiała wszystkie postawione pytania, teraz za to pojawiło się dużo więcej nowych, na które nie mogę znaleźć odpowiedzi ... Po co w takim razie ten VHDL ? Istnieją jakieś funkcje tylko do symulacji i nijak się to ma do sprzętu, a przecież to język opisu sprzętu ... Czy oznacza to, że np instrukcja LOOP...
W przypadku Bascoma jest najgorsza sytuacja Nie do końca. CONFIG RC5 = PINx.y Koledze najwyraźniej sprzętu brakło, a na to nie poradzi nawet asembler.
A może coś da się jeszcze zoptymalizować? Można: - zmienić mikrokontroler na szybszy - zmienić częstotliwość taktowania mikrokontrolera (kwarc / klaibracja) - użyć przerwań do odczytu pinów (II_to_P, ...) - zoptymalizować funkcję MIDI.read(); - liczyć w pętli do tyłu (licznik_petli--; if (licznik_petli == 0){ ... licznik_petli = 100000; }) - przepisać...
jestem początkujący Przerabiam temat od ponad roku oczywiście amatorsko z doskoku 1. wybrałem 8051 - prosty wiele opisów warto poznać 2. asembler 8051 - poznanie zawiłości rejestrów liczników portów itc 3. kompilator - dostępny 4. symulator - dostępny 5. programator - i tu wiele miesięcy jak co i dlaczego 6. mam programator - sam zmontowałem (programowanie...
opoznienie robi sie na dwa sposoby: albo dajesz kilka petli ktore nic nie robbia - ale to jest kijowy sposob, albo kazesz liczyc licznikowi (ewentualnie kilka razy) - i to jest dokladniejszy sposob.
Polecenie w skrócie brzmi: Napisz program w asemblerze i w C, który wczytuje z tablicy kolejne liczby (bajty) i wyświetla je na diodach bit po bicie. Po każdym kolejnym bicie należy odczekać 5ms, dodatkowo po każdym bajcie należy odczekać 50ms. Wykorzystać przerwania licznika (timera). W asemblerze już napisałem i działa, natomiast w C zdziwiło mnie...
Właśnie o tablice w pamięci programu mi chodziło. Zadowolę się samym jej odczytem. Przykład, który podałeś wyżej z pewnością się przyda, bo do EEPROMu jeszcze nie doszedłem a na pewno kiedyś dojdę. Wiem już, że cała tablica musi być na jednej stronie pamięci i tu przydaje się polecenie ORG. Wiem również, że jest tu potrzebny licznik (?) PCL. Co dalej?
Jak długo zajęło napisanie tego programu? [1.12.2010] v1.2 - obsługa dodatkowych języków [29.11.2009] v1.1 - wygodna konfiguracja - sprawy kosmetyczne przy edytorze - konfigurowalny wygląd edytora - poprawa wydajności edytora - poprawione rozpoznawanie komunikatów AvrDude [24.11.2009] v1.0 - uzupełnianie kodu w edytorze - zmiana...
Dzień Dobry, Co się stanie, jeśli wpiszemy do rejestru TH0 licznika mikrokontrolera 8051 liczbę F0Fh? Chodzi mi o polecenie MOV TH0, #F0Fh. Wiem, że rejestr jest 8 bitowy, a liczba 12 bitowa, ale jaka wartość się tam wpisze? Najstarsze czy najmłodsze 8 bitów? Czy może nic się nie wpisze? Z poważaniem Paweł
Witam Używa ktoś symulatora WinAVR-20040720? Chciałbym sprawdzić napisane programy na laboratorium przy uzyciu uP 8080 i 8051 w asemblerze.Z asemblera jestem troche zielony i nie wiem jak się dobrać do tego symulatora żeby można było się pobawić w np zrobienie licznika i wyswietlaniu tego itp itd Akurat zaczynam pisać w asemblerze,czeka mnie również...
asembler licznik asembler sortowanie diody asembler
filtr zasilania buczenie pompa ciepła usterka polonez wentylator chłodnica
napęd bramy przesuwnej uziemienie basenu
Sterownik Eurostar 2006 nie uruchamia pompy - przyczyny i rozwiązania Datasheet dla układu scalonego IC202 - jak znaleźć?