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条评论)
登录后参与讨论