Ich kann die nur empfehlen, dir das "Instruction Set" von Atmel runterzuladen.
Da findest du das alles ganz genau
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...
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.
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
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...
sbi(port, bit) -> port |= (1<<bit);
cbi(port, bit) -> port &= ~(1<<bit);
MfG
Stefan
Lesezeichen