确实是 CY每次赋值给Data都会覆盖掉前一次的值。 |
一般, DATA = CY 的话, DATA 应该是一个Bit, 而你DATA 是 unsigned char, 其实做的事,就是 把 CY 复制到 ACC的0位,然后把 ACC复制给DATA.即,会强制把CY,先补全成一个 unsigned char。再赋值给DATA. 所以,不管DATA中原先存的是什么的,最后DATA 要么 = 0x01, 要么 = 0x00 |
个人认为像是存在里面,实际意思还是这个CY进位标志本身功能来解释。 temp<<=1 , 我就看成temp=temp<<1,temp=temp*2,temp=temp+temp,这样就回归到 ADD功能,那CY在进行ADD操作时,如果发生进位就会变成1,没有进位就是0,这边CY没有被覆盖意思,只有CY每次变化的值会覆盖Data,这样就能达到你的输出目的了,无非就是0 1 变化。 EX: 1010+1010 = 1 0100 CY=1 0100+0100 = 0 1000 CY=0 1000+1000 = 1 0000 CY=1 0000+0000 = 0 0000 CY=0 这样就用CY完成了 发送 1 0 1 0 瞎扯淡的,仅供参考 |