8bit shift register (74HC595)

#define SPI_DDR 	DDRB
#define SPI_PORT	PORTB
#define SPI_MOSI    DDB3
#define SPI_MISO	DDB6
#define SPI_SCK 	DDB5
#define SPI_SS_DISPLAY   	DDB2 
#define SPI_CS_DISPLAY   	PINB2
#define SPI_SS_CONTROL   	DDB1 
#define SPI_CS_CONTROL   	PINB1
void init_spi(void)
{
/**** Set MOSI,SS, SCK as output and MISO as input ****/
SPI_DDR =(1<<SPI_MOSI)|(1<<SPI_SCK)|(1<<SPI_SS_CONTROL)|(1<<SPI_SS_DISPLAY);
SPI_DDR&=~(1<<SPI_MISO);
/******************************************************/
SPI_PORT&=~(1<<SPI_CS_DISPLAY);  //enable latch dsplay
SPI_PORT&=~(1<<SPI_CS_CONTROL);  //enable latch control
SPCR|=(1<<SPE)|(1<<MSTR);
SPSR|=(1<<SPI2X);
}
void SPIWrite_display(unsigned char datain)
{
SPDR=datain;
	while(!(SPSR&(1<<SPIF)))
		{
		;//// Wait for transmission complete
		}
SPI_PORT |= (1<<SPI_CS_DISPLAY);
_delay_us(2); // Hold pulse
// Disable Latch
SPI_PORT &= ~(1<<SPI_CS_DISPLAY);
// Return Serial In Value in MISO
}
void SPIWrite_control(unsigned char datain)
{
SPDR=datain;
	while(!(SPSR&(1<<SPIF)))
		{
		;//// Wait for transmission complete
		}
SPI_PORT |= (1<<SPI_CS_CONTROL);
_delay_us(2); // Hold pulse
// Disable Latch
SPI_PORT &= ~(1<<SPI_CS_CONTROL);
// Return Serial In Value in MISO
}
unsigned long int digits[MAX_DIGIT],i,digit[MAX_DIGIT];
uint8_t control;
void print(unsigned long int num)
{
for(i=0;num!=0;i++)
	{
	digits[i]=num%10;
	digit[i]=seven_segment(digits[i]);
	num=num/10;
	}
	/* main part display number*/
	for(i=0;i<MAX_DIGIT;i++)
	{	
	    control=pow(2,MAX_DIGIT)-1;
	    SPIWrite_control(control);
		_delay_ms(1);
		SPIWrite_display(digit[i]);
		control&=~(1<<i);
		SPIWrite_control(control);
		_delay_ms(1);
		control=pow(2,MAX_DIGIT)-1;
		SPIWrite_control(control);
		_delay_ms(1);
		
	}
}
#include<avr/io.h>
#include<util/delay.h>
#include"spi.h"
#include"segment.h"
int main(void)
{
init_spi();
while(1)
	{
	print(3221);
	}
return 0;
}