Difference between revisions of "U23 2007/Inhalt Abend 2/Schieberegister"
< U23 2007 | Inhalt Abend 2
(→Datenblatt) |
(→Programm) |
||
Line 30: | Line 30: | ||
DDRA = 0xFF; | DDRA = 0xFF; | ||
PORTA = 0x00; | PORTA = 0x00; | ||
− | PORTA |= (1<<STROBE)|(1<<OE); | + | PORTA |= (1<<STROBE)|(1<<OE); //Setz Ausgänge auf aus! |
+ | |||
PORTA |= (1<<DATA); | PORTA |= (1<<DATA); | ||
PORTA |= (1<<CP); | PORTA |= (1<<CP); | ||
− | PORTA &= ~(1<<CP); | + | PORTA &= ~(1<<CP); //Wert 1 ins Register geschoben |
+ | |||
PORTA &= ~(1<<DATA); | PORTA &= ~(1<<DATA); | ||
PORTA |= (1<<CP); | PORTA |= (1<<CP); | ||
− | PORTA &= ~(1<<CP); | + | PORTA &= ~(1<<CP); //Wert 0 ins Register geschoben |
return 0; | return 0; | ||
} | } |
Revision as of 18:15, 21 May 2007
Datenblatt
Bits Setzten
Setze Bit an Stelle x
PORTA |= (1<<x);
lösche Bit an Stelle x
PORTA &= ~(1<<x);
[<< schifftet 1 um Anzahl von x Stellen! Achtung Anfang zu zählen bei 0]
Unsere Ansteuerung
A0 - CP A1 - Data A2 - Strobe A3 - OE
Programm
Schieberegister - Ansteuerung schiebe 1 0 rein und Ausgabe aktiv.
#include <avr/io.h> #define CP 0 #define DATA 1 #define STROBE 2 #define OE 3 int main(void) { DDRA = 0xFF; PORTA = 0x00; PORTA |= (1<<STROBE)|(1<<OE); //Setz Ausgänge auf aus! PORTA |= (1<<DATA); PORTA |= (1<<CP); PORTA &= ~(1<<CP); //Wert 1 ins Register geschoben PORTA &= ~(1<<DATA); PORTA |= (1<<CP); PORTA &= ~(1<<CP); //Wert 0 ins Register geschoben return 0; }
Schieberegister - Ansteuerung
setzte 1 rein und Ausgabe an!
int main(void) { DDRA = 0xFF; PORTA = 0x0E; PORTA = 0x0F; PORTA = 0x0E; return 0; }