51单片机中的进位标志位Cy的问题。

[复制链接]
查看11 | 回复8 | 2011-9-26 12:19:40 | 显示全部楼层 |阅读模式
如果在进行ADD之前,Cy=1,进行ADD或者ADDC过程中,最高位加完以后没有进位,那么结果是Cy继续保持1还是Cy会被置0?同样疑问,换成辅助进位标志位AC,ADD或者ADDC前,AC=1,ADD或者ADDC过程中,D3没有达到向D4进位的情况,那么AC是保持1还是会被置0?谢谢达人相助
回复

使用道具 举报

千问 | 2011-9-26 12:19:40 | 显示全部楼层
在进行ADD之前,Cy=1,进行ADD或者ADDC过程中,最高位加完以后没有进位,那么结果是Cy继续保持1还是Cy会被置0?如果运算完后最高位没有进位,Cy会被置0,因为add或者addc命令的执行会影响Cy,有进位就置1,无进位就置0,跟Cy的初值无关。ac也是一样,执行完命令后ac的状态和ac的初值无关。其实与其上来发帖问,不如你自己写两行代码运行一下,结果一目了然,yyh001123的回答是错误的。追问我明白了。因为我不会用代码调试,AVR_fighter.exe里面有没有这样的调试功能,能推荐一下用什么来调试吗?谢谢
回复

使用道具 举报

千问 | 2011-9-26 12:19:40 | 显示全部楼层
保持1。追问那为什么在定义Cy时是这样说的?CY:进位标志,有进位或借位时,Cy=1,否则Cy=0。如果按照你的回答,那就是:CY:进位标志,有进位或借位时,Cy=1,否则Cy保持不变。?到底哪个对啊!??
回复

使用道具 举报

千问 | 2011-9-26 12:19:40 | 显示全部楼层
第二个对。我去找个程序试下。
回复

使用道具 举报

千问 | 2011-9-26 12:19:40 | 显示全部楼层
那就有另外一个问题了,如果Cy=1,AC=1,在用BCD码做加法时,比如01D02D=03D,单片机中是01H02H=03H,再用DAA,按照DAA的定义,这样的情况下,高4和低4位都不需要06H,但是如果Cy是继续保持的话,那么就要06H了,不就出错了吗?
回复

使用道具 举报

千问 | 2011-9-26 12:19:40 | 显示全部楼层
sorry我刚说错了,非常抱歉!应该是第一种正确。CY:进位标志,有进位或借位时,Cy=1,否则Cy=0。
回复

使用道具 举报

千问 | 2011-9-26 12:19:40 | 显示全部楼层
11FA=1FH,CY=1,OV=0。2.SUBBA,30H7A-A5-1--,30HA=4AHCY=0OV=0其中CY是8位11111111再加1后的溢出位,CY
回复

使用道具 举报

千问 | 2011-9-26 12:19:40 | 显示全部楼层
进位标志,有进位或借位时,Cy=1,否则Cy=0。
回复

使用道具 举报

千问 | 2011-9-26 12:19:40 | 显示全部楼层
呵呵,keilc里就可以调试,写段代码,步进跟踪,监视寄存器,自己实践出来的结果印象比较深刻
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行