eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaDefiniowane portów/flag w C › Re: Definiowane portów/flag w C
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.P
    OSTED!not-for-mail
    From: "Grzegorz Niemirowski" <g...@p...onet.pl>
    Newsgroups: pl.misc.elektronika
    Subject: Re: Definiowane portów/flag w C
    Date: Thu, 19 Oct 2017 21:38:58 +0200
    Organization: ATMAN - ATM S.A.
    Lines: 56
    Message-ID: <osav0g$hoj$1@node2.news.atman.pl>
    References: <osa0qm$mhc$1@node1.news.atman.pl> <osa3ci$tb1$4$gof@news.chmurka.net>
    <osa55j$r0r$1@node1.news.atman.pl> <f...@m...uni-berlin.de>
    <osatlp$gjd$1@node2.news.atman.pl>
    NNTP-Posting-Host: 31-178-110-204.dynamic.chello.pl
    Mime-Version: 1.0
    Content-Type: text/plain; format=flowed; charset="iso-8859-2"; reply-type=original
    Content-Transfer-Encoding: 8bit
    X-Trace: node2.news.atman.pl 1508441936 18195 31.178.110.204 (19 Oct 2017 19:38:56
    GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Thu, 19 Oct 2017 19:38:56 +0000 (UTC)
    X-Priority: 3
    X-MSMail-Priority: Normal
    X-Newsreader: OE PowerTool 4.5
    X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157
    X-WWW: http://www.grzegorz.net/
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:725103
    [ ukryj nagłówki ]

    sword <n...@p...onet.pl> napisał(a):
    > Hmm, mogę dać inline ale wydaje mi się, że jestem w tym samym
    > punkcie co z makrami.
    > static inline void setbit (u8 port, u8 pin)
    > {
    > port |= 1<<pin;
    > }
    > No i co dalej? Chciałbym ją tak samo wywołać, np.:
    > setbit(F_LED)


    Musisz stworzyć coś, co oprócz bitu będzie nisło też informację o porcie,
    np.

    #include <stdio.h>

    #define PINA1 0x01
    #define PINA2 0x02
    #define PINB2 0x02
    #define PINB3 0x03

    #define F_PINA1 (0x0000 | PINA1)
    #define F_PINA2 (0x0000 | PINA2)
    #define F_PINB2 (0x0100 | PINB2)
    #define F_PINB3 (0x0100 | PINB3)

    int porta = 0, portb = 0;

    void setpin(unsigned int fpin);

    int main() {
    setpin(F_PINA1);
    setpin(F_PINA2);
    setpin(F_PINB2);
    setpin(F_PINB3);
    printf("%x %x\n", porta, portb);
    return 0;
    }

    void setpin(unsigned int fpin){
    int port = fpin >> 8;
    int pin = 0x00ff & fpin;
    switch(port) {
    case 0x00:
    porta |= 1 << pin;
    break;
    case 0x01:
    portb |= 1 << pin;
    break;
    }
    }

    --
    Grzegorz Niemirowski
    http://www.grzegorz.net/

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: