程序猿的独白 2015-01-29 13:20 采纳率: 0%
浏览 690

keil4开发中遇到的一个很奇怪的问题。

void main(){

// uchar test_i;
const uchar timp_button=0xfF; //this value is that the button havn't sticked
uchar n_delay; //delay
unsigned char j=0;
unsigned char i;

intend_initiation();
            //调用时间设定程序

while(1){


    if((hour==alarm_clock_hour)&&(alarm_clock_minute==minute)&&(flag_music==off)){
                  flag_music=on;            //flag_music 是全局变量
                  EX0=0;
                 //when havn't any key ,the program will singing incessantly.
                  while(P1==timp_button){ 
                        if(*(Mmusic+j)==0xff) j=0;
                        k_m=*(Mmusic+j)&0x0f;
                        l_m=*(Mmusic+j)>>4;
                        TH0=music[2*l_m];
                        TL0=music[2*l_m+1];
                        if((music[2*l_m]==0xff)&&(music[2*l_m+1]==0xff))
                            TR0=0;
                        else 
                            TR0=1;
                //      light=!light;
                //      delay(20000);   


                        for(i=k_m;i>0;--i){
                //          light=!light;
                //          delay(20000);
                            for(n_delay=0;n_delay<2;n_delay++)
                                display();


                        }


                        TR0=0;
                        j++;
                     }
                EX0=1;
                while((P1!=timp_button)||(alarm_clock_minute==minute))        display();


                flag_music=off;
            }
    else 
        display();
}

}

void check(uchar flag_opt){ //年月日检查函数 flag_opt是检查静态还是动态的数据
const uchar timp_button=0xfF; //this value is that the button havn't sticked
uchar n_delay=0; //delay
unsigned char j=0;
// unsigned char i;

if(flag_opt==0){




        if(secand==0){     

/*

            if((hour==alarm_clock_hour)&&(alarm_clock_minute==minute)&&(flag_music==off)){
                  flag_music=on;
                  EX0=0;
                 //when havn't any input from buttons,the program will singing incessantly.
                  while(P1==timp_button){ 
                        if(*(Mmusic+j)==0xff) j=0;
                        k_m=*(Mmusic+j)&0x0f;
                        l_m=*(Mmusic+j)>>4;
                        TH0=music[2*l_m];
                        TL0=music[2*l_m+1];
                        if((music[2*l_m]==0xff)&&(music[2*l_m+1]==0xff))
                            TR0=0;
                        else 
                            TR0=1;
                        light=!light;
                        delay(20000);   

///////////////////////////////问题所在/////////////////////////////////////////

for(i=k_m;i>0;--i){
light=!light;
delay(20000);
for(n_delay=0;n_delay<2;n_delay++)
display();

                        }

///////////////////////////////////////////////////////////////////////

                        TR0=0;
                        j++;
                     }
                     EX0=1;
                     flag_music=off;
            }

*/

        }






        if((minute>59)||(minute<0)){
            minute=0;
            ++hour;
            if((hour>23)||(hour<0)){
                hour=0;
                ++day;
                if((day>check_day(month))||(day<0)){
                    day=0;                      
                    ++month;
                    if((month>12)||(month<0)){
                        month=0;
                        ++year;
                    }
                }
            }
        }

}
else {
                if((min>59)||(min<0))       min=0;
                if((h>23)||(h<0))           h=0;
                if((d>check_day(m))||(d<0)) d=0;                        
                if((m>12)||(m<0))           m=0;

}

}
/*
上面有两个函数,两个函数中都是有判断语句
if((hour==alarm_clock_hour)&&(alarm_clock_minute==minute)&&(flag_music==off))

奇怪的是,在check()函数里面就无法正常工作,而在main()中御用这段判断程序就可以正常运行。
而且,在逻辑上面来说两者都没有错,调试过,但在check()函数里面运用这句话,问题查不出来,请大神解惑*/

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 安卓adb backup备份应用数据失败
    • ¥15 eclipse运行项目时遇到的问题
    • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
    • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
    • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
    • ¥50 成都蓉城足球俱乐部小程序抢票
    • ¥15 yolov7训练自己的数据集
    • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
    • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
    • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)