怎么使红外控制执行的同时背景音乐可以一直响

取红外遥控上任意4个按键,分别代表:左移,右移,上移和下移。点阵在初始状态下有一个点是亮的。通过上述4个按键来控制点阵上这个灯完成上,下,左,右移动。通过蜂鸣器取任意一首曲子作为背景音乐。

void music()
{
    unsigned char k,j;
    j = 0;
        Time = 1; 
        while(Time) 
        {
            k = sszymmh[j] + 7 * sszymmh[j + 1] - 1;
            //第i个是音符, 第i+1个是第几个八度
            timer0h = FREQH[k]; //从数据表中读出频率数值
            timer0l = FREQL[k]; //实际上, 是定时的时间长度
            Time = sszymmh[j+2]; //读出时间长度数值
            j+=3;
            song(); //发出一个音符
        }     
}
void main()
{            
    TMOD = 1; //置T0定时工作方式1
    ET0 = 1; //开T0中断
    EA = 1; //开CPU中断
    music();
    IrInit();
    while(1)
    {    
        
        KeyDown();           //按键判断函数        
        if(KeyFlag == 1)
        {
            KeyFlag = 0;
            modifiedShowData();
        }  
        displayPixel();        
    }            
}

bit enmusic=0;
void main()
{    
    
       Timer0Init(); // 定时器0初始化,设置为高优先级
    Timer1Init(); // 定时器1初始化,设置为高优先级 
    IrInit();     // 红外初始化            
    EA = 1; //开CPU中断
    music();
    initLocation(x,y);
    while(1)
    {    
        
        KeyDown();           //按键判断函数        
        if(KeyFlag == 1)
        {
            KeyFlag = 0;
            modifiedShowData();
            Beep(pwm[KeyValue]);
        }  
        displayPixel(); 
       if(enmusic==1)
       {
           muscic();
           enmusic=0;
       }  
    }            
}

在需要放音乐的时候把enmusic置1就好了

把把按键扫描处理以及displayPixel()丢定时器里让他自动刷新 ,音乐放主循环里