-         

Ergebnis 1 bis 5 von 5

Thema: Erläuterung von sbi/cbi etc.

  1. #1
    Erfahrener Benutzer Begeisterter Techniker Avatar von Jacob2
    Registriert seit
    26.05.2007
    Ort
    Berlin
    Beiträge
    345

    Erläuterung von sbi/cbi etc.

    Anzeige

    Hallo,
    Ich sehe häufiger in Codes Funktionen wie sbi cbi u.ä. Googlesuche bringt aber nicht viel! Gibts irgendwo eine Erklärung zu den funktionen oder kann sie mir erklären? sind sie nur eine alternative zu z.B. PORTA = ...; DDRA = ...; usw.?
    Roboter, CNC Fräse, Elektronik und Basteleien stelle ich auf meiner Website vor...

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Ich kann die nur empfehlen, dir das "Instruction Set" von Atmel runterzuladen.
    Da findest du das alles ganz genau
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2005
    Ort
    Braunschweig
    Alter
    41
    Beiträge
    685
    Moin!
    sbi und cbi sind Assemblerbefehle zum Setzen und Löschen einzelner Portbits, in C gibt es die eigentlich nicht, es werden aber häufig Makros verwendet, die dann, wie Du schon vermutest, sowas wie PORTA |= (1<<bit) machen.
    MfG
    Volker
    Meine kleine Seite
    http://home.arcor.de/volker.klaffehn
    http://vklaffehn.funpic.de/cms
    neuer Avatar, meine geheime Identität

  4. #4
    Erfahrener Benutzer Begeisterter Techniker Avatar von Jacob2
    Registriert seit
    26.05.2007
    Ort
    Berlin
    Beiträge
    345
    Danke!
    Kann mir jemand sagen was dann folgende Makros für cbi(...) und sbi(...) in einfachen PORTx-Zuweisungen etc. wäre ich blick die nämlich nicht :
    Code:
    /* __cbi / __sbi require constant port < 0x20 and constant bit */
    
    #define __cbi(port, bit)				\
    	__asm__ __volatile__ (				\
    		"cbi %0,%1"				\
    		: /* no outputs */			\
    		: "I" ((uint8_t)(port)),		\
    		  "I" ((uint8_t)(bit))			\
    	)
    
    #define __sbi(port, bit)				\
    	__asm__ __volatile__ (				\
    		"sbi %0,%1"				\
    		: /* no outputs */			\
    		: "I" ((uint8_t)(port)),		\
    		  "I" ((uint8_t)(bit))			\
    	)
    Roboter, CNC Fräse, Elektronik und Basteleien stelle ich auf meiner Website vor...

  5. #5
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    sbi(port, bit) -> port |= (1<<bit);
    cbi(port, bit) -> port &= ~(1<<bit);
    MfG
    Stefan

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •