```c
void Time_init(void)
{
TMOD|=0x01; //使用T0方式1定时,16位定时,需重新赋初值
TH0=0x3C;
TL0=0xB0;
EA=1; //打开中断的总开关
ET0=1; //打开定时器T0中断开关
}
void X0_isr(void) interrupt 0
{
TH0=0x3C; //重新赋初值
TL0=0xB0;
count++;
if(count==10)
{
count=0;
TR0=0;
TF0 = 0;
}
}
void main(void)
{
Time_init();
while(1)
{
u8 a=1;
u8 b=1;
u8 key=0;
key=key_matrix_flip_scan();
while(key!=0)
{
LEDDZ_COL_PORT=one_col[key-1];//传送列选数据
hc595_write_data(one_row[key-1]);//传送行选数据
TR0=1;
hc595_write_data(0x00);//消影
LEDDZ_COL_PORT=0x00;
}
}
}
```