eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaProgramowanie AT89Cxx51Re: Programowanie AT89Cxx51
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer01.am4!peer.am4.highw
    inds-media.com!peer04.fr7!futter-mich.highwinds-media.com!news.highwinds-media.
    com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostr
    ada.pl!news.neostrada.pl.POSTED!not-for-mail
    From: "J.F." <j...@p...onet.pl>
    Newsgroups: pl.misc.elektronika
    References: <58a2b213$0$650$65785112@news.neostrada.pl>
    <58a2c045$0$15193$65785112@news.neostrada.pl>
    In-Reply-To: <58a2c045$0$15193$65785112@news.neostrada.pl>
    Subject: Re: Programowanie AT89Cxx51
    Date: Tue, 14 Feb 2017 10:55:09 +0100
    MIME-Version: 1.0
    Content-Type: text/plain; format=flowed; charset="utf-8"; reply-type=response
    Content-Transfer-Encoding: 8bit
    X-Priority: 3
    X-MSMail-Priority: Normal
    Importance: Normal
    X-Newsreader: Microsoft Windows Live Mail 16.4.3528.331
    X-MimeOLE: Produced By Microsoft MimeOLE V16.4.3528.331
    Lines: 71
    Message-ID: <58a2d400$0$652$65785112@news.neostrada.pl>
    Organization: Telekomunikacja Polska
    NNTP-Posting-Host: 83.30.123.245
    X-Trace: 1487066112 unt-rea-b-01.news.neostrada.pl 652 83.30.123.245:52266
    X-Complaints-To: a...@n...neostrada.pl
    X-Received-Body-CRC: 3558416769
    X-Received-Bytes: 3791
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:713067
    [ ukryj 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: