Skip to content

Instantly share code, notes, and snippets.

@avr-programmierung
Created May 14, 2019 11:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save avr-programmierung/bd3e446801152f5bb7467c43a363047c to your computer and use it in GitHub Desktop.
Save avr-programmierung/bd3e446801152f5bb7467c43a363047c to your computer and use it in GitHub Desktop.
ATmega88 @ 8MHz Schieberegister
/* schieberegister_01.c ATmega88 @ 8MHz */
#include <avr/io.h>
void sck(void) // Die Funktion sck realisiert den Takt
{
PORTD |= (1<<PD1); // SCK = 1 (HIGH)
PORTD &= ~(1<<PD1); // SCK = 0 (LOW)
}
int main(void)
{
DDRD = 0xFF; // Richtungsregister PORTD = Ausgang
PORTD = 0x04; // PD2 = High (OE = aktive low) 0x04 = 0000 0100
while(1)
{
PORTD |= (1<<PD0); // PD0 = 1
sck(); // 1.Taktimpuls für SCK
PORTD &= ~(1<<PD0); // PD0 = 0
sck(); // 2.Taktimpuls für SCK
PORTD |= (1<<PD0); // PD0 = 1
sck(); // 3.Taktimpuls für SCK
PORTD &= ~(1<<PD0); // PD0 = 0
sck(); // 4.Taktimpuls für SCK
PORTD |= (1<<PD0); // PD0 = 1
sck(); // 5.Taktimpuls für SCK
PORTD &= ~(1<<PD0); // PD0 = 0
sck(); // 6.Taktimpuls für SCK
PORTD |= (1<<PD0); // PD0 = 1
sck(); // 7.Taktimpuls für SCK
PORTD |= (1<<PD0); // PD0 = 1
sck(); // 8.Taktimpuls für SCK
PORTD &= ~(1<<PD2); // PD2 = 0 (Takt = LOW für RCK)
PORTD |= (1<<PD2); // PD2 = 1 (Takt = HIGH für RCK -> Ausgabe Schieberegister)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment