⑴ 单片机 位左移
会保存在程序状态字psw的CY中 右移的话数据直接丢失
⑵ C51的单片机中右移指令>>为什么有时候最高位会补1
单片机右移分为算术右移和逻辑右移。(左移没有这个问题,0x01<<i就正确)
算术右移最高位是符号位,右移后符号位保持不变(如果一直右移会导致所有位都变成和最高位一样的值)。
逻辑右移才是最高位补0。
led因为是char,编译器会把">>"解释成算术右移,即最高位是符号位(0x80最高位正好是1),保持不变。最后导致结果不对。
led要定义为unsigned char就应该也对了。
⑶ 绉讳綅杩愮畻绗﹀湪绉讳綅镎崭綔涓锛屾棤璁哄乏绉昏缮鏄鍙崇Щ锛屾墍绉诲嚭镄勭┖浣崭竴寰嬭ˉ0銆傝繖鍙ヨ瘽鏄钖︽g‘锛岃疯存槑銆 璋㈣阿
绉讳綅镎崭綔鍦ㄧ▼搴忚捐′腑锛屼綅镎崭綔杩愮畻绗︾殑涓绉嶃
1.鍦╟++涓锛岀Щ浣嶈繍绠楃︽湁鍙岀洰绉讳綅杩愮畻绗︼细<<锛埚乏绉伙级鍜>>锛埚彸绉伙级銆傜Щ浣嶈繍绠楃︾粍鎴愮殑琛ㄨ揪寮忎篃灞炰簬绠楁湳琛ㄨ揪寮忥纴鍏跺间负绠楁湳鍊笺
2.宸︾Щ杩愮畻鏄灏嗕竴涓浜岃繘鍒朵綅镄勬搷浣沧暟鎸夋寚瀹氱Щ锷ㄧ殑浣嶆暟钖戝乏绉讳綅锛岀Щ鍑轰綅琚涓㈠纯锛屽彸杈圭殑绌轰綅涓寰嬭ˉ0銆3.鍙崇Щ杩愮畻鏄灏嗕竴涓浜岃繘鍒朵綅镄勬搷浣沧暟鎸夋寚瀹氱Щ锷ㄧ殑浣嶆暟钖戝彸绉诲姩锛岀Щ鍑轰綅琚涓㈠纯锛屽乏杈圭Щ鍑虹殑绌轰綅鎴栬呬竴寰嬭ˉ0锛屾垨钥呰ˉ绗﹀彿浣嶏纴杩欑敱涓嶅悓镄勬満鍣ㄨ屽畾銆
鍦ㄤ娇鐢ㄨˉ镰佷綔涓烘満鍣ㄦ暟镄勬満鍣ㄤ腑锛屾f暟镄勭﹀彿浣崭负0锛岃礋鏁扮殑绗﹀彿浣崭负1銆