5638|6

89

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于89C51的SUBB A R2这个指令的执行作用 [复制链接]

请教大家以条指令作用,程序在下列出:
1.  SUBB A,R2 即是 A的立即数8减R2的立即数0,要减去进位标志C吗?
按照89C51指令集的功能说明:含借位减法,自累加器中减去错位(即进位标志C)及源操作数,若不够减而有错位则C=1,反之则C=0,
以下这段程序用于遥控器解码,本人不理解进位标志C到底是软件或都是通过检测硬件的信号设定0\1还是依靠A减R2相减后有没有错位决定的.
如果可以软件设定我我在程序加入这句MOV  C IRIN,用仿真器仿真程序没问题,但总是不理解这句意思??


IRIN  EQU  P3.2    ;红外接收信号
I5:      MOV  R2,#0         ;0.14ms 计数
L1:      CALL  DEL
          JB  IRIN, N1       ;等 IR 变为高电平 IRIN等于1跳转
                             ;IR=0,检查R2中的计数值
          CALL DEL           ;10us
          MOV  A,#8
          ;CLR  C
          SUBB  A,R2         ;判断高低位 8-0-0=8=A
                             ;IF C=0  BIT=0
          MOV  A,@R0         ;A=20H,R0的内容不变
          RRC  A             ;00100000 \00010000 C=0 P=124 即A=10H   将C中的值0或1移入A中的最低位
          MOV  @R0,A         ;处理完一位  地址20H的内容10H,R0和A的内容都不变 P116
          INC  R3            ;R3内容加1
          CJNE  R3,#8,LL     ;需处理完8位,寄存器与立即数不相等则跳转
          MOV  R3,#0         ;8位数清0 看I3:
          INC  R0            ;20H+1
          CJNE  R0,#24H,LL   ;收集到4字节了即32位,1字节8位
          JMP  IR_COMP
N1:      INC  R2            ;R2地址内容加1
          CJNE  R2,#30,L1    ;0.14ms 计数过长则时间到自动离开

最新回复

上一楼主,我在I5:      MOV C,IRIN                        MOV  R2,#0         ;0.14ms 计数                        L1:      CALL  DEL 这段程序以经将C设为0了,我去掉CLR  C是因为加后,用HT6221发射的遥控波形按键只有4到5个键可识别,不加CLR  C会令SUBB  A,R2  作用变成怎样啊  详情 回复 发表于 2007-2-6 17:01
点赞 关注

回复
举报

82

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
可能,取到的值和时间有关...
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
上一位楼主,我想问的是这个指令集SUBB A,R2 即是 A的立即数8减R2的立即数0,要减去进位标志C吗?累加器减去进位标志C及源操作数,现在够减了即是C=0吗?,大家先回答我这两个难题吧?????
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

4
 
SUBB A,R2 就是 A的值-R2的值-C的值,如果够减 C就是0,否则为1
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

5
 
上一楼主,现在我在IRIN  EQU  P3.2   程序后加入MOV  C IRIN, P3.2脚接收红外波形信号
当JB  IRIN, N1       ;等 IR 变为高电平 IRIN等于1跳转
                     ;IR=0,检查R2中的计数值
如果IRIN 变为低电平就将0放入C, 那么执行红外解码程度的SUBB  A,R2         ;判断高低位 8-0-1=7=A 才对吧!!  我用软件设置的C=0在SUBB  A,R2运算没冲突的吗?
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

6
 
8051没有不带借位的减,所以你的第一 SUBB之前总是需要一条 CLR C

          ;CLR  C     ; 就像这样,但你为什么要去掉它?
          SUBB  A,R2         ;判断高低位 8-0-0=8=A
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

7
 
上一楼主,我在I5:      MOV C,IRIN
                       MOV  R2,#0         ;0.14ms 计数
                       L1:      CALL  DEL
这段程序以经将C设为0了,我去掉CLR  C是因为加后,用HT6221发射的遥控波形按键只有4到5个键可识别,不加CLR  C会令SUBB  A,R2  作用变成怎样啊
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表