jacky82512 发表于 2012-5-22 15:30:31

马老师 看了您的测频率 侧频法 测量频率 有点疑问?

void display(void)                                        // 8位LED数码管动态扫描函数
{
    PORTC = 0xff;                     //关所有的数码管
        PORTA = led_7];   //posit0-8如果是9,怎么板呢 也许我是多疑了。

        if (posit==5)
        PORTA = PORTA | 0x80; //点亮小数点

        PORTC = position;            //开位控制
        if (++posit >=8 ) posit = 0;      //移动下一位要显示的位控制
}


void freq_to_disbuff(void)                // 将频率值转化为BCD码并送入显示缓冲区
{
        unsigned char i,j=7;
        for (i=0;i<=4;i++)
        {
                dis_buff = freq % 10;
                freq = freq / 10;
        }
        dis_buff = freq;//    这句话 是啥作用   freq 假定是多大数 如果很大呢?freq % 10;?

}//这里怎么看不懂呢?

            {        // 累计T/C0的计数值   分2种情况没有想明白是啥意思
                    if (time0_new >= time0_old) //啥意思?
                            freq = freq + (time0_new - time0_old);//
                    else //time0_new < time0_old
                            freq = freq + (256 - time0_old + time0_new);//



ba_wang_mao 发表于 2012-6-4 11:51:31

(1)、 if (++posit >=8 ) posit = 0;      //移动下一位要显示的位控制
         通过上条语句,很明显,可以知道一共有7位。

(2)、for (i=0;i<=4;i++)
      {
                dis_buff = freq % 10;
                freq = freq / 10;
      }
      很明显,通过上述语句,可以知道一共需要显示5位数据,

       dis_buff = freq % 10;每次获取数值的尾数
       freq = freq / 10;            每次获取数值的整数

       例如:一个数为12345
               i =0 时,12345% 10 =5
                              12345/ 10 =1234

               i =1 时,1234% 10 =4
                              1234/ 10 =123



Blue_oldman 发表于 2012-6-5 17:38:29

ba_wang_mao 发表于 2012-6-4 11:51 static/image/common/back.gif
(1)、 if (++posit >=8 ) posit = 0;      //移动下一位要显示的位控制
         通过上条语句,很明 ...

if (time0_new >= time0_old) //啥意思?
   freq = freq + (time0_new - time0_old);//
这句说的是计数器没有溢出的情况,下面一种是计数器溢出了一次。所以要加一个溢出的计数256.
页: [1]
查看完整版本: 马老师 看了您的测频率 侧频法 测量频率 有点疑问?