鉴于大家对机械课程设计十分关注,我们编辑小组在此为大家搜集整理了“单片机实现的多数BCD码加法器源代码”一文,供大家参考学习!
*************************************************************************
;多位BCD码加法:BCDAN
;入口:字节数在R7中,被加数在[R0],加数在[R1]
;出口:结果在[R0]
;使用寄存器:A,R7,R2,R1,C,R0
;*************************************************************************
BCDAN: MOV A, R7
MOV R2, A
ADD A, R0
MOV R0, A
MOV A, R2
ADD A, R1
MOV R1, A
CLR C ;指令1
BCDAN1: DEC R0 ;指令2
DEC R1 ;指令3
MOV A, @R1
ADDC A, @R0 ;指令6
DA A ;指令4
MOV @R0, A ;指令5
DJNZ R2, BCDAN1
RET
上述子程序出错的可能发生在子程序设计过程中,也可能发生在子程序调用时。现分别讨论如下:
指令疏漏
指令1最有可能被疏漏,此指令被疏漏的后果是该子程序的结果时对时错。错误的特征是比正确结果小1。尤其是当编写调试减法程序时,由于51单片机的减法指令只有SUBB是带进位减法,故在减法开始前不使用CLR C指令将进位清除