error in led chaser code using shift register

this code is supposed to light up 16 leds connected to 2 daisy chained shift register one by one and then repeat the sequence but it only runs one time and all leds stop, this is my first post on this forum and am a new to coding so please forgive me if the question is dumb.

#include <SPI.h>// SPI Library used to clock data out to the shift registers

#define latch_pin 2// can use any pin you want to latch the shift registers
#define blank_pin 4// same, can use any pin you want for this, just make sure you pull up via a 1k to 5V
#define data_pin 11// used by SPI, must be pin 11
#define clock_pin 13// used by SPI, must be 13
int level=0;
byte anode[32];

void setup() {
Serial.begin(9600);
SPI.setBitOrder(MSBFIRST);//Most Significant Bit First
SPI.setDataMode(SPI_MODE0);// Mode 0 Rising edge of data, keep clock low
SPI.setClockDivider(SPI_CLOCK_DIV2);//Run the data in at 16MHz/2 - 8MHz
//finally set up the Outputs
pinMode(latch_pin, OUTPUT);//Latch
pinMode(data_pin, OUTPUT);//MOSI DATA
pinMode(clock_pin, OUTPUT);//SPI Clock
pinMode(blank_pin, OUTPUT);
PORTD |= 1<<blank_pin;
PORTD &= ~(1<<latch_pin);//Latch pin LOW
SPI.begin();//start up the SPI library
anode[0]=B00000001;
anode[1]=B00000000;
anode[2]=B00000010;
anode[3]=B00000000;
anode[4]=B00000100;
anode[5]=B00000000;
anode[6]=B00001000;
anode[7]=B00000000;
anode[8]=B00010000;
anode[9]=B00000000;
anode[10]=B00100000;
anode[11]=B00000000;
anode[12]=B01000000;
anode[13]=B00000000;
anode[14]=B10000000;
anode[15]=B00000000;
anode[16]=B00000000;
anode[17]=B00000001;
anode[18]=B00000000;
anode[19]=B00000010;
anode[20]=B00000000;
anode[21]=B00000100;
anode[22]=B00000000;
anode[23]=B00001000;
anode[24]=B00000000;
anode[25]=B00010000;
anode[26]=B00000000;
anode[27]=B00100000;
anode[28]=B00000000;
anode[29]=B01000000;
anode[30]=B00000000;
anode[31]=B10000000;
}

void loop() {
PORTD |= 1<<blank_pin;//Blank pin HIGH
SPI.transfer(&anode[2*level],2);
Serial.println(level);
PORTD |= 1<<latch_pin;//Latch pin HIGH
PORTD &= ~(1<<latch_pin);//Latch pin LOW
PORTD &= ~(1<<blank_pin);//Blank pin LOW
delay(500);
level++;
if(level==16)
level=0;
}

i think its something to so with the

SPI.transfer(&anode[2*level],2);

because if i replace it with

SPI.transfer(anode[2level]);
SPI.transfer(anode[2
level+1]);

it works fine.can anybody tell me why is this happening..

I really do not understand using direct port manipulation (for speed) in code that uses delay().