首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

关于89C51的SUBB A R2这个指令的执行作用,该如何处理

2012-03-05 
关于89C51的SUBB AR2这个指令的执行作用请教大家以条指令作用,程序在下列出:1.SUBBA,R2即是A的立即数8减R2

关于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   计数过长则时间到自动离开

[解决办法]
8051没有不带借位的减,所以你的第一 SUBB之前总是需要一条 CLR C

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

热点排行