单步调试的时候发现运行到 fre_hund_buf = fre_count/1000以后就直接跳出for()了,根本不执行后面的
for(;((1200>=fre_count)&&(fre_count>=1000));) //如果cy_add=0,执行1000--1200加 { fre_count++; fre_hund_buf = fre_count/1000; fre_ten_buf = (fre_count-(fre_hund_buf*1000))/100; fre_one_buf = (fre_count-(fre_hund_buf*1000)-(fre_ten_buf*100))/10; fre_pint_buf = (fre_count-(fre_hund_buf*1000)-(fre_ten_buf*100)-(fre_one_buf*10)); fre_time =10000000/((fre_hund_buf*1000)+(fre_ten_buf*100)+(fre_one_buf*10)+fre_pint_buf); //将设置的频率值转换成时间周期,单位s fre_int_count = fre_time/250; //频率定时器中断次数 fre_start = 255-(fre_time-(fre_int_count*250)); //频率定时器初值 display(); delay(3000); if((FRE_ADD_set!=0)||(fre_count>1200)) break; } if(fre_count>1200) //如果设置值超过1200,从最低开始计数 { fre_count = 20; fre_pint_buf = 0; }
这段程序是4位的数据取显示位,分别是千位、百位、十位、个位, fre_hund_buf = fre_count/1000;这条语句执行完后,fre_hund_buf居然等于10,
|