Czy naprawdę tak trudno zainteresować się tym co się ma do zrobienia i po prostu to zrobić? Program jest naprawdę 'nieskomplikowany' i naprawdę zachęcam do własnej inicjatywy, a jeśli to tak wielki ból sprawia to google są nadal czynne ...
Wielkie dzięki "songo" za pomoc!!!
Ale sądząc po ilości postów od stycznia 2003 roku to dużo nie narobiłeś się na elektrodzie...
Nie takiej pomocy oczekuje.
Jak wiadomo assembler nie jest językiem najwyższych lotów ale jeżeli
się zaczyna to łatwo też nie jest.
Jutro dodam dokłądne dane o jaki generator mi chodzi i ile zrobiłem i co poprawić.
Co programu to albo czegos nie widze albo 'popełniłeś' troche prostych bledow - probowales to kompilowac ?
I może tak dla jasności ten program ma na bieżąco sprawdzac stan P3.7 czy ma sprawdzac jednorazowo i dalej nie robic nic ? (bo z zamieszczonego kodu wynika mi ta druga opcja) Nie mniej jednak:
1. czym jest etykieta 'loop' ? (albo dokad miala prowadzic - bo aktualnie to nawet nie jest zdefiniowana).
2. do odmierzania czasu może jednak warto zainteresowac się Timer'em ? (TH0 TL0 TMOD)
3. Zupelnie niepotrzebnie zdefiniowane funkcje t, f2, f3 bo robią dokladnie to samo, wystarczy je odpowiednio wywołać po prostu.
4. Jak tylko znajde wiecej wolnego czasu podeśle jakiś kodzik.
5. napisz jaki uP konkretnie.
na koniec - assemblera nie musisz koniecznie uzywać mozesz użyć języka wyższego poziomu - np. C.
Niestety czasu nadal nie mam zeby odpowiedziec dokladnie (moze jutro się cos znajdzie ),
Co do 'zasymulowania' to Keil jest bardzo dobry ew. (juz nie pamietam ktory mnie bardziej odpowiadał, bo ostatnio ich nie uzywalem) jest jeszcze Raisonance (http://www.raisonance.com/ ) i oba są dosc fajnymi srodowiskami zarówno do pisania jak i testowania kodu. W szczególności, że mozna tam pisac w C a nie tylko w asemblerze. Obsluga jest dosc intuicyjna - musisz ustawic parametry projektu wybrac modelowany uP (sa rozne 51 dostepne - standardowe, atmela itp.) i okreslic pare innych szczegolow. ( nie mam Keil'a pod reka, dlatego taki krotki opis)
Dlaczego jednak piszesz ze nie kompilowałeś kodu ? Kompiluj bo zgadując niewiele wymyślisz, a narazie wnioskuje ze nawet nie wiesz czy to może działać tylko 'spodziewasz' sie ze cos moze byc nie tak.
co do kodu to jednak lepiej byłoby wykorzystac Timer (napisze moze jutro), ale w tej wersji co jest teraz (chodzi o to żeby jednak nie mnożyć funkcji ktore robią to samo tylko są inaczej parametryzowane):
stan może się zmienić bowiem w trakcie jak Ty będziesz mozolnie generował przez 4 sek. sygnał na P0.7, dlatego pasuje wykorzystać przerwania i Timer.
(tu od razu uwaga, w kodzie mozna uzywac instrukcji CALL oraz JMP nie musisz się interesować czy akurat potrzebna tam jest SJMP czy LCALL - assembler sam to roztrzygnie.)
Zmieniła się koncepcja. Teraz program ma być bardziej skomplikowany.
(wymysł profesora).
Teraz generator ma pracować tak.
Gdy na P3.0 jest zero to:
na P0.0 generowany ma być przebieg prostokątny powtarzający się.
Gdy na P3.0 jest jeden to:
na P0.0 jest generowany sygnał o innej częstotliwości, powtarzany
a na P0.1 pojedynczy impuls.
ale to nie zmienia faktu ze program jest *źle napisany* - dlaczego nie zainteresowales sie Timerami i przerwaniami ? Czy program naprawde ma być tak 'sztuczny' i po sprawdzeniu stanu p3.0 zaraz po uruchomieniu nigdy więcej juz tego stanu nie sprawdzi ? ...
--
Maciek
Zarejestruj konto, Zaloguj się i bądź aktywny na forum, a wtedy reklamy nie będą się pojawiać. Otrzymaj punkty za rejestrację oraz odpowiedzi.
✨ Dyskusja dotyczy pisania generatora przebiegu prostokątnego w asemblerze dla mikrokontrolera 8051 (C51). Autor prosi o przykładowe programy i pomoc w implementacji. W odpowiedziach podkreślono, że program nie jest skomplikowany, ale wymaga samodzielnej inicjatywy oraz sugerowano wykorzystanie timerów i przerwań zamiast opóźnień realizowanych pętlami. Przedstawiono przykładowe fragmenty kodu asemblerowego, które generują sygnał prostokątny na wyjściu P0.7 w zależności od stanu portu P3.7, z różnymi czasami trwania impulsów (np. 0,25 Hz lub 1s i 2s). Autor modyfikował kod, stosując pętle opóźniające, ale miał problemy z symulacją w środowisku Keil. W dalszej części zmieniono koncepcję generatora, aby na P0.0 i P0.1 generować sygnały o różnych częstotliwościach i impulsach w zależności od stanu P3.0. Wskazano, że program jest źle napisany, gdyż nie wykorzystuje timerów i przerwań, a jedynie sprawdza stan portu raz na początku. Rekomendowano użycie środowisk Keil i Raisonance do symulacji i testowania kodu, z możliwością programowania w C lub asemblerze. Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.