原创 BK1086/88自动搜台判据AFC是一个9位的参数, 在8位单片机汇编程序中如何用最短的代码实现判断?

2012-4-6 10:47 2747 11 11 分类: 消费电子

AFC为9位. 定义域: 0<=AFC<=0x1FFH


真台的AFC范围一般为 AFC<=50或者AFC>=(0x1ff-50)


在8位的单片机中,如果不方便处理9位的参数,我们可以将第9位当成标志位.判断方法如下:

//首先AFC的数值已经通过I2C读得在寄存器R0,R1中. R0是高位.
   BTFSS R0,0     //先判断R0第0位(AFC最高位)是否为1
   GOTO LESS_FFH //如果不为1,说明AFC不高于0xFFH,不在AFC>=(0x1ff-50)范围, 只判断AFC是否<=50即可以.
   //既然已经知道第9位为1,,高位就不用判断了,只需判断AFC是否>=(0xff-50)
   MOV  A,R1     //将R1(AFC的值) 送入累加器A
   ADDA  50      //累加器A的值加上50
   BTFSS Cy     //判断是否有进位
   GOTO  FAIL_STATION_SET    //Cy=0;没有进位,说明AFC<=(0xff-50),当前台不是正频点的台.进入非真台设置.
   GOTO  TURE_STATION_SET    //Cy=1;  有进位,说明AFC>=(0xff-50),当前台是正频点,进入真台设置


LESS_FFH        //判断AFC是否<=50
   MOV  A,R1     //将R1(AFC的值) 送入累加器A
   DECA  50       //累加器A的值减去50
   BTFSS Cy      //检查是否有借位
   GOTO  FAIL_STATION_SET    //Cy=0;没有借位,说明AFC>=50,当前台不是正频点的台.进入非真台设置.
   GOTO  TURE_STATION_SET    //Cy=1;  有借位,说明AFC<=50,当前台是正频点,进入真台设置

 

 

 

相关博文:
50. BK1086/88自动搜台参数AFC最简单的运算方法
http://forum.eet-cn.com/BLOG_ARTICLE_10024.HTM


48. 有关BK1086/88自动搜台参数问题,BK1086/88自动搜台为什么会停偏.
http://forum.eet-cn.com/BLOG_ARTICLE_10022.HTM


9. BK1086/88自动搜台阀值(门限)设置多少为宜?
http://forum.analog.eet-cn.com/BLOG_ARTICLE_9200.HTM

 

39.BK1086/88自动搜台判据AFC是一个9位的参数, 在8位单片机汇编程序中如何用最短的代码实现判断?
http://forum.eet-cn.com/BLOG_ARTICLE_9865.HTM

文章评论0条评论)

登录后参与讨论
我要评论
0
11
关闭 站长推荐上一条 /2 下一条