eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaProgramowanie AT89Cxx51 › Re: Programowanie AT89Cxx51
  • Data: 2017-02-14 10:55:09
    Temat: Re: Programowanie AT89Cxx51
    Od: "J.F." <j...@p...onet.pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Użytkownik "MKi" napisał w wiadomości grup
    dyskusyjnych:58a2c045$0$15193$6...@n...neostrad
    a.pl...
    > Mam jednak kilka pytań:
    > 1) Widzę, że możliwy jest dostęp do pinów GPIO za pomocą konstrukcji
    > w
    > rodzaju Px_y, gdzie x oznacza numer portu, a y numer pinu w porcie.
    > Można dzięki temu przypisywać wartość bezpośrednio do pinu, (np.
    > P0_1=1). Czym jest taka konstrukcja? Można zdefiniować jakąś zmienną

    Maja taki specjalny tryb adresacji - dla wybranych rejestrow i kawalka
    pamieci dostepny jest tryb bitowy.
    Zapisujesz odpowiedna instrukcja i bit sie zmienia.
    Ale ... kompilator musi wiedziec, ze tu jest potrzebna specjalna
    instrukcja.

    >> wskaźnikową, która umożliwi mi dostęp do tak zdefiniowanego pinu?
    >> Chciałbym przeportować pewną prostą bibliotekę do obsługi
    >> przycisków.
    >> Dobrze by było, gdybym mógł przekazać informację o pinie właśnie w
    >> ten
    >> sposób, jako argument funkcji, a potem trzymać ją w strukturze
    >> opisującej przycisk.

    >Zerknij do plików nagłówkowych SDCC, np:
    >__sbit __at (0x87) P0_7
    >Jak widać, to jest po prostu liczba, tylko z atrybutami __sbit __at

    Przy czym jak tych przyciskow wiecej, to moze byc jednak lepiej
    oblsugiwac to calymi bajtami.

    >> 2) Czy możliwe jest korzystanie z portów w sposób taki, jak w
    >> AVR-ach?
    >> To znaczy coś w rodzaju P0 |= (1<<2).
    >Oczywiście, dokładnie tak samo.

    Ostroznie, tam sa rozne tryby adresacji, i znow trzeba uwazac co
    kompilator z tym zrobi.
    Raczej zrobi dobrze, ale instrukcja
    ORL P0, #01h
    odczytuje rejestr portu wyjsciowego, ustawia najmlodszy bit i zapisuje
    ponownie.

    Instrukcja
    MOV A, P0
    odczytuje stanu pinow portu.
    Jak potem zrobisz
    ORL A,#01h
    MOV P0,A

    To to nie bedzie to samo (patrz nizej).

    >> 3) Dobrze rozumiem, że te mikrokontrolery nie posiadają żadnych
    >> rejestrów konfiguracyjnych, jeśli chodzi o kierunek pinu i działają
    >> podobnie do prostych ekspanderów I2C?

    >Tu już nie jestem taki pewny, daawno nie programowałem AT89.
    >Ale chyba faktycznie nie ma żadnej konfiguracji, stan niski
    >to twarde 0, stan wysoki to wysoka impedancja.

    Dokladnie - rejestry sa jednoczesnie wejsciowe i wyjsciowe.
    tranzystor wyjsciowy "dolny" jest silny, "gorny" slabiutki, a w
    zasadzie to stale pull-up (+ te 2 cykle).
    Jesli ustawisz bit na "0", to wyjscie bedzie na 0, i nie nalezy
    podawac z zewnatrz stanu wysokiego.
    Jesli ustawisz bit na "1", to wyjscie bedzie w stanie wysokim, ale
    slabym (~1mA), mozna z zewnatrz wymusic zero.

    Bity, ktore maja byc wejsciowe, musisz najpierw ustawic na 1.

    J.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: