搜索
bottom↓
回复: 6

pic12f单片机在汇编下如何判断两个数的大小?

[复制链接]

出0入0汤圆

发表于 2013-2-26 21:18:00 | 显示全部楼层 |阅读模式
pic12f的单片机汇编指令好像只有35条,没看到有比较指令的,不知道如何通过汇编语言实现两个数大小的比较判断呢?

谁知道的可否告知一下?

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2013-2-26 22:26:40 | 显示全部楼层
1. X , Y 代表两个数
2. MOVLW Y  // 把 Y 放入 W 内
3. SUBLW X   // (X-Y)-->W 及设定旗号
4. 如果 Z=1,则两数相等,完成走人,否则不相等要看步骤(5)
5. 如果 C=1,则 X>Y, 如 C=0, 则Y>X

出0入0汤圆

 楼主| 发表于 2013-2-27 11:22:52 | 显示全部楼层
eblc1388 发表于 2013-2-26 22:26
1. X , Y 代表两个数
2. MOVLW Y  // 把 Y 放入 W 内
3. SUBLW X   // (X-Y)-->W 及设定旗号

谢谢,明白了,就是现在是想判断计数器1的TMR1H及TMR1L的计数值与某个数比较大小,不知道该如何处理计数值,在汇编中怎么把TMR1H及TMR1L转换成一个整体的数,然后再与某数值比较,35条指令没有乘法指令好麻烦啊

出0入0汤圆

发表于 2013-2-27 16:27:26 | 显示全部楼层
>> 汇编中怎么把TMR1H及TMR1L转换成一个整体的数

那不是汇编的问题而是楼主思路的问题。你可以先比较 TMR1H 与另一16位元数的高8位,相等时再比较 TMR1L 与整数的低8位。

注意如果比较时 TMR1 是运行的话,有机会 TMR1L 会溢出,令 TMR1H 增加而导至先前的比较失效。解决办法是:

1. 先停止 TMR1 然後再比较,或
2. 比较 TMR1L 后再一次比较 TMR1H,确保先前的比较并未失效。

出0入0汤圆

 楼主| 发表于 2013-2-28 08:30:26 | 显示全部楼层
eblc1388 发表于 2013-2-27 16:27
>> 汇编中怎么把TMR1H及TMR1L转换成一个整体的数

那不是汇编的问题而是楼主思路的问题。你可以先比较 TMR1 ...

之前想过,但是现在做的是红外遥控解码,高低宽度需要一个上下限,比如说引导码9ms,假设需要一个区间8.8ms到9.5ms的话,对应的计数器为0x2260~0x251c,那如果再通过先比较TMR1H再比较TMR1L的话,TMR1H对应的就会有0x22\0x23\0x24\0x25,这个还好比较,但是TMR1L就不好计算了,范围就会是0x00~0xFF了,现在就是纠结在这个点,常温下遥控识别正常,低温零度这样就会出现部分不灵,问题就是定位到解码时间界限上了

出0入0汤圆

 楼主| 发表于 2013-2-28 09:58:07 | 显示全部楼层
看来只能丢弃第八位,高八位再判大一点

出0入0汤圆

发表于 2013-2-28 15:57:59 | 显示全部楼层
>> 常温下遥控识别正常,低温零度这样就会出现部分不灵

如使用内部 RC 为时钟,那定时计数就要考虑 PIC 时钟低温工作时的实际频率。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-17 11:52

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表