⑴ 單片機 位左移
會保存在程序狀態字psw的CY中 右移的話數據直接丟失
⑵ C51的單片機中右移指令>>為什麼有時候最高位會補1
單片機右移分為算術右移和邏輯右移。(左移沒有這個問題,0x01<<i就正確)
算術右移最高位是符號位,右移後符號位保持不變(如果一直右移會導致所有位都變成和最高位一樣的值)。
邏輯右移才是最高位補0。
led因為是char,編譯器會把">>"解釋成算術右移,即最高位是符號位(0x80最高位正好是1),保持不變。最後導致結果不對。
led要定義為unsigned char就應該也對了。
⑶ 縐諱綅榪愮畻絎﹀湪縐諱綅鎿嶄綔涓錛屾棤璁哄乏縐昏繕鏄鍙崇Щ錛屾墍縐誨嚭鐨勭┖浣嶄竴寰嬭ˉ0銆傝繖鍙ヨ瘽鏄鍚︽g『錛岃瘋存槑銆 璋㈣阿
縐諱綅鎿嶄綔鍦ㄧ▼搴忚捐′腑錛屼綅鎿嶄綔榪愮畻絎︾殑涓縐嶃
1.鍦╟++涓錛岀Щ浣嶈繍綆楃︽湁鍙岀洰縐諱綅榪愮畻絎︼細<<錛堝乏縐伙級鍜>>錛堝彸縐伙級銆傜Щ浣嶈繍綆楃︾粍鎴愮殑琛ㄨ揪寮忎篃灞炰簬綆楁湳琛ㄨ揪寮忥紝鍏跺間負綆楁湳鍊箋
2.宸︾Щ榪愮畻鏄灝嗕竴涓浜岃繘鍒朵綅鐨勬搷浣滄暟鎸夋寚瀹氱Щ鍔ㄧ殑浣嶆暟鍚戝乏縐諱綅錛岀Щ鍑轟綅琚涓㈠純錛屽彸杈圭殑絀轟綅涓寰嬭ˉ0銆3.鍙崇Щ榪愮畻鏄灝嗕竴涓浜岃繘鍒朵綅鐨勬搷浣滄暟鎸夋寚瀹氱Щ鍔ㄧ殑浣嶆暟鍚戝彸縐誨姩錛岀Щ鍑轟綅琚涓㈠純錛屽乏杈圭Щ鍑虹殑絀轟綅鎴栬呬竴寰嬭ˉ0錛屾垨鑰呰ˉ絎﹀彿浣嶏紝榪欑敱涓嶅悓鐨勬満鍣ㄨ屽畾銆
鍦ㄤ嬌鐢ㄨˉ鐮佷綔涓烘満鍣ㄦ暟鐨勬満鍣ㄤ腑錛屾f暟鐨勭﹀彿浣嶄負0錛岃礋鏁扮殑絎﹀彿浣嶄負1銆