[2008/12/02] Da im Netz nicht viel auf Anhieb zu finden ist hier ein kleiner Code zur Ansteuerung eines – sollte recht portabel sein:
#include <avr/io.h>
#define SHIFT_PORT PORTB
#define SHIFT_PORT_DDR DDRB
#define SHIFT_DATA PINB0
#define SHIFT_SCK PINB1
#define SHIFT_OUT PINB2
void shift_out(int);
int main(void) {
SHIFT_PORT_DDR |= (1<<SHIFT_DATA) | (1<<SHIFT_SCK) | (1<<SHIFT_OUT);
shift_out( 0xAA );
while (1) {
}
}
void shift_out (int num) {
for(int i=1; i<=128; i*=2) {
if(num & i) {
SHIFT_PORT |= (1 << SHIFT_DATA);
} else {
SHIFT_PORT &= ~(1 << SHIFT_DATA);
}
//clock
SHIFT_PORT |= (1 << SHIFT_SCK);
SHIFT_PORT &= ~(1 << SHIFT_SCK);
}
//move to the pins
SHIFT_PORT |= (1 << SHIFT_OUT);
SHIFT_PORT &= ~(1 << SHIFT_OUT);
}