单片机实现的多数BCD码加法器源代码

单片机实现的多数BCD码加法器源代码

ID:47276825

大小:57.98 KB

页数:8页

时间:2019-08-26

单片机实现的多数BCD码加法器源代码_第1页
单片机实现的多数BCD码加法器源代码_第2页
单片机实现的多数BCD码加法器源代码_第3页
单片机实现的多数BCD码加法器源代码_第4页
单片机实现的多数BCD码加法器源代码_第5页
资源描述:

《单片机实现的多数BCD码加法器源代码》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、*^rT^rT^rTwrT^rlwrT^rT^r7%rlwrTwfTwrT^rTwrT^r7%rT^rT^rT^rjwrlwrT^rTwrT^rT^rT^rT^r7%r7%rT%rT^rlwrTwrT^rT^rT^r7%rT^rT^rTwrlwrT^rT^rT^r7%rT%rT^rlwrTwrT^r^rT^rT^rTwrT^r7%rT^rT^rT%;多位BCD码加法:BCDAN;入口:字节数在R7中,被加数在[R0],加数在[R1];岀口:结果在[R0];使用寄存器:A,R7,R2,R1,C,ROvl^rTwfTwrT^rlwrT^rT^

2、r7%rlwrTwfTwrT^rTwrT^rz%rT^rT^rT^rlwrlwrT^rTwrT^rT^rT^rT^r7%r7%rT%rT*rlwrTwrT^rT^rT^r7%rT^rT^rTwrlwrT^rT^rT^r7%rT%rT^rlwrTwrT^rT^rT^rTwrT^r7%rT^rT^rT%rlwBCDAN:MOVA,R7MOVR2,AADDA,ROMOVRO,AMOVA,R2ADDA,R1MOVR1,ACLRC;指令1BCDAN1:DECRO;指令2DECR1;指令3MOVA,@R1ADDCA,@R0;指令6DAA;指令4MOV

3、@R0,A;指令5DJNZR2,BCDAN1RET上述子程序出错的可能发生在子程序设计过程屮,也可能发牛在子程序调用时。现分别讨论如下:指令疏漏指令1最有可能被疏漏,此指令被疏漏的后果是该了程序的结呆吋对时错。错误的特征是比正确结果小1。尤其是当编写调试减法程序时,由于51单片机的减法指令只有SUBB是带进位减法,故在减法开始而不使用CLRC指令将进位清除,会导致类似的错误,而且更不容易发现。2・位置不妥指令2、3最可能出现这种错误。显然程序设计的思想是BCD码的高位在低地址单元,低位在高地址单元,从高到低依次存放。因此相加时必须从低位加

4、起,所以作为被加数、加数的指针RO、R1必须通过程序前的一段指令调整到指向低位,调整的方法是原指针加字节数。但实际上直接加字节数后使得RO、R1指到最低字节的后而一个字节去了,故必须首先将这1减掉,指向最低字节。从表血上看,指令2、3放在指令5后血似乎也实现了从低字节逐渐向高字节的推进作用,很多开发者一不留神就想当然的这样做了,结果前面的一层作用被疏漏掉了,导致程序错误。3.指令不当例如指令6由丁•疏忽写成ADD指令,则结果无法正确。4.非法调用按照了程序的说明,调用该了程序是非常容易的。但有时由于疏忽,没有按照入口要求送数出现非法调用现

5、象,导致出错。这类错误在调试时会使得开发者一时不知错在子程序还是调用它的程序。例如,在调用前R7必须按字节数口止确置数,如果忘了此步,显然结果是无法正常的。【例二】7135A/D转换结杲读取中断子程序。.rjwrjw•J*rjwej>

6、卜.#J*叶屯,ICL7135:CLRIEO;因为是电平触发,故必软件清屮断标志PUSHACC:保护现场PUSH02H;R2PUSH01H:R1PUSH00HPUSHDPLPUSHDPHMOVDPTR,#I8155_PA;读8155A口的A/D结果MOVXA,@DPTRMOVR2,A;万位入R2ANLA,#0F0HJNZICL7135_0;POL,OV,UN各位非0,则说明结果不正常SJMPICL7135_1ICL7135_0:LJMPPRIICL7135_1:MOVRl,#AD;结果暂存单元(始地址)MOVA,R2ANLA,#01H;存

7、万位XCHDA,@R1MOVA,R2ANLA,#00HSWAPAXCHDA,@R1MOV@R1,AINCR1WD4:MOVXA,@DPTR:读千位JNBACC.7,WD4SWAPAMOV@R1,A;千存入WD3:MOVXA,@DPTR;读百位JNBACC.6,WD3XCHDA,@R1;百位存入INCR1WD2:MOVXA,@DPTR;读十位JNBACC.5,WD2SWAPAMOV@R1,AWD1:MOVXA,@DPTR;读个位JNBACC.4,WD1XCHDA,@R1SETBEOC_AD;设置转换完成标志MOVRO,#AD_L;RO指向结

8、果单元首址MOVR1,#AD;转存结果缓冲区MOVR2,#03HYL_0:MOVA,@R1MOV@R0,AINCROINCR1DJNZR2,YL_OSJMPPR1PRI:POPDPH;恢复现场

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。