Archiv verlassen und diese Seite im Standarddesign anzeigen : Erläuterung von sbi/cbi etc.
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.?
Ich kann die nur empfehlen, dir das "Instruction Set" von Atmel runterzuladen.
Da findest du das alles ganz genau
vklaffehn
19.07.2008, 12:25
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
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 :^o :
/* __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)) \
)
sbi(port, bit) -> port |= (1<<bit);
cbi(port, bit) -> port &= ~(1<<bit);
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.