怎么让这个点阵循环显示啊


#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar i = 0, DZ = 255;
uchar code hz[] = {0x3F,0xF8,0x01,0x00,0x7F,0xFE,0x41,0x02,0x9D,0x74,0x01,0x00,0x1D,0x70,0x00,0x00,0x3F,0xF8,0x00,0x00,0x00,0x00,0xFF,0xFE,0x08,0x20,0x10,0x10,0x3F,0xF8,0x00,0x08,};    
void main()
    {        
P3 = 0x00;
        TMOD = 0x02;    
    TH0 = 256 - 250;
        TL0 = 6;
        TR0 = 1;
        IE = 0x82;
        while(1);
    }
void Show_Name() interrupt 1
    {        
if( ++DZ == 4 )    
    {
            DZ = 0;
            if( ++i == 8) i = 0;
            }
        P2 = 0x00;
            switch(DZ)
            {
                case 0: P3 = 0x01;
                   P2 = 1 << i;
                  P0 = ~hz[ 2*i ];
                  break;
                case 1: P3 = 0x02;
                  P2 = 1 << i;
                   P0 = ~hz[ 2*i + 1 ];    
              break;
                case 2: P3 = 0x04;
                  P2 = 1 << i;
                  P0 = ~hz[ 2*i + 16 ];
                  break;
                case 3: P3 = 0x08;
                  P2 = 1 << i;
                  P0 = ~hz[ 2*i + 17 ];            }    
    }

img


}

img

让你给P0的值弄个逻辑周期转起来