Hallo zusammen.

Ich versuche ein Schieberegister 74HC595 gerade mit daten zu füllen.
Ich treibe damit eine 7 Segment Anzeige.
Meine Schaltung ist IO mit Bascom funktioniert sie.
Soviel mal vorab.
Da ich mich momentan in C einarbeite benutze ich das Beispiel aus Rn Wissen für Soft SPI.
Und wie Ihr euch sicher denken könnt habe ich so meine Probleme.
Code hänge ich mal an, würde mich freuen wenn mal einer darauf schauen könnte und mir die Fehler veranschaulicht
Code:
#include <avr/io.h>
#include "serpa.h"

unsigned char serpa[SERPA_SIZE];

int main(void){
	
void serpa_init (void)
{
	
//**********************************************

	DDRB |= (1<<DDB0) |(1<<DDB1)|(1<<DDB2);
	
//**********************************************

	PORTB |=(1<<PINB1); //SCK auf Hi_Level
	PORTB |=(1<<PINB2);	//RCK auf HI_Level
	
//**********************************************
}

void serpa_out (void)
{
    unsigned char anz = SERPA_SIZE;
    unsigned char* serp = serpa+SERPA_SIZE;
	serpa[0] = 0xFF;
	
	do 
	{
        unsigned char bits;
        unsigned char data = *--serp;
		
		 for (bits = 8; bits > 0; bits--)
		 {
			PORTB &= ~(1<<PINB0);//SER Reset
			if (data & 0x80)
			{
				PORTB |=(1<<PINB0);//SER Set
			}
			data<<1; 
				PORTB &= ~(1<<PINB1);//Strobe an SCK schiebt Daten im Gaensemarsch 
				PORTB |=(1<<PINB1); //um 1 Position weiter durch alle Schieberegister			
		 }
	}
	 while (--anz > 0);

	PORTB &= ~(1<<PINB2);
	PORTB |=(1<<PINB2);

}
}
Grüße Flo