![]() |
發布時間: 2020-7-7 12:18
正文摘要:舉個例子 temp左移一位, 最高位被移出,是不是就存在了CY里面,然后Data = CY; 但是Data并沒有進行移位, 那按照這種邏輯,是不是意味著CY每次賦值給Data都會覆蓋掉前 ... |
確實是 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 瞎扯淡的,僅供參考 |