Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

POMOC z programowania 8051 w asemblerze!

djsimo 28 Lut 2007 19:51 971 4
  • #1 28 Lut 2007 19:51
    djsimo
    Poziom 13  

    Mam taki oto problem do rozwiązania :

    Stworzenie układu generującego na wyjściu sygnał prostokątny o zadanej częstotliwości.

    Szczegóły realizacji:

    Należy wykorzystać układ mikrokontrolera 8051 z podłączonym wyświetlaczem LED do wytworzenia sygnału bazowego o częstotliwości 5 kHz. Zestaw segmentów LED ma służyć wyświetlaniu wartości częstotliwości sygnału generowanego przez układ. Dostępne dwa przełączniki powinny być użyte do zwiększania, zmniejszania wartości częstotliwości o np. 500 Hz.
    Do zbadania poprawności działania układu należy wykorzystać oscyloskop analogowy. Obsługę segmentów LED jak również całą realizację sterownia należy zaprogramować w asemblerze.

    Bardzo proszę o pomoc w rozwiązaniu tego problemu, ewentualnie jakieś wskazówki, jakiś punkt zaczepienia.
    Z góry dziękuję za wszelką pomoc.

    0 4
  • #2 28 Lut 2007 20:25
    sadamb
    Poziom 21  

    Zadanko mozesz tak trzasnac dwa guziki zmiany na INT0 i INT1, sterowane z przerwan. Ustawiasz timer ktorys na nim masz odliczac polowe okresu generowanego i negujesz bit i tak w kolko. Timerek oczywiscie na przerwaniu. Licznik max to 65536 moze zliczyc czyli np 65ms na 12MHz kwarc. Co daje okres 120ms czyli ok 10Hz jak nie zejdziesz nizej to nawet licznika nie bedziesz przekrecal i wystarczy wbic do pamieci wartosci poczatkowe licznika i je ustawiac jak sie guzik nacisnie. Chyba sie nie pomyliem w obliczeniach.
    Pozdrawiam

    0
  • #3 28 Lut 2007 20:44
    djsimo
    Poziom 13  

    spoko..ale jak ugryźć zaprogramowanie tego w asemblerze..
    wiem ze muszę stworzyć pętlę która ma generować sygnał prostokątny o okresie 200 mikrosekund..i z tym mam problem!!:P

    0
  • #4 01 Mar 2007 17:36
    sadamb
    Poziom 21  

    Po pierwsze jaki kwarc niech bedzie np.12 MHz wtedy masz 1cykl=12 taktow czyli wszytko w ukladzie lazi jakbys wsadzil kwarc 1MHz.
    Bierzesz licznik np. T0 moze on zliczyc od 0 do 0FFFFH w ktoryms trybie (czyli licznik 16-bitowy). Jak doliczy do 0FFFFH to przy przekreceniu do 0 wygeneruje przerwanie jak je ustawisz i tak se generujesz zadany przebieg. Tobie potrzebna bedzie obliczenie polowy okresu czyli chcesz 5kHz to licznik ma odliczyc 100us poniewaz zegar jest 12MHz to licznik bedzie zmienial swoje wskazanie co 1us zatem musisz odliczyc 100us i przerwanie ma licznik wywolac. Zatem licznik ma zliczac od 65535-100=65435 czyli 0FF9BH. Co 100us licznik sie bedzie przekreczal i wywolywal przerwanie. W przerwaniu masz negowac stan bitu na wyjsciu i przeladowac stan licznika. Jak chcesz zmieniac czestotliwosc to robisz w pamieci programu tablice z wartosciami poczatkowymi licznika. Wyswitlanie to juz inny problem. Lepiej jest uzyc LCD. Nie bede pisal gotowego kodu bo to nie jest trudne zadanie.

    0
  • #5 01 Mar 2007 22:32
    djsimo
    Poziom 13  

    wiesz...jestem w tym zielonym i dlatego poprosiłem o pomoc..najważniejsza jest składnia w asemblerze..i byłbym wdzięczny za jej umieszczenie:P

    0