请问在单片机中,怎样用左移(右移)与简单逻辑运算实现循环左移(右移) 单片机C语言怎么通过位移指令与逻辑运算实现循环左移
\u8bf7\u95eeC51\u5355\u7247\u673a\u7684\u5faa\u73af\u5de6\u79fb\u548c\u5faa\u73af\u53f3\u79fb\u51fd\u6570\u4e2d\u7684\u201c\u5faa\u73af\u201d\u662f\u6307\u4ec0\u4e48\uff1fC51\u5355\u7247\u673a\u7684\u5faa\u73af\u5de6\u79fb\u51fd\u6570\u662f\uff0c_crol_(\u53d8\u91cf\u540d\uff0cn)\uff0c\u5faa\u73af\u53f3\u79fb\u51fd\u6570\u662f\uff0c_cror_(\u53d8\u91cf\u540d\uff0cn)\uff0c\u51fd\u6570\u4e2d\u7684\u201c\u5faa\u73af\u201d\u662f\u6307\u53d8\u91cf\u76848\u4f4d\u4e8c\u8fdb\u5236\u6570\u4f9d\u6b21\u5411\u5de6\u79fb\u4e00\u4f4d\uff0c\u6216\u5411\u53f3\u79fb\u4e00\u4f4d\u3002
\u4f60\u6bd4\u5982\u7684\uff0c\u53d68\u4f4d\u6570\uff0c\u8ba91111 1110\u5faa\u73af\u5de6\u79fb\u4e00\u4f4d\uff0c\u5c31\u662f\u57281111 1110\u30011111 1101\u30011111 1011\u30011111 0111\u30011110 1111\uff0c\u7b49\u7b49\uff0c\u6bcf\u79fb\u4f4d\u4e00\u6b21\uff0c8\u4f4d\u6570\u5411\u5de6\u6216\u5411\u53f3\u79fb\u4e00\u4f4d\u3002\u7ee7\u7eed\u79fb\u4f4d\uff0c\u5c31\u4f1a\u5faa\u73af\u91cd\u590d\u7684\u3002
unsigned char tmp=0xa0;
tmp=(tmp>7);
\u56e0\u4e3a\u8981\u5faa\u73af\u5de6\u79fb\uff0c\u6240\u4ee5\u8981\u8865\u4e0a\u7684\u662f\u539f\u6765\u7684\u6700\u9ad8\u4f4d\uff0c\u4e5f\u5c31\u662f\u6700\u5de6\u8fb9\u7684\u90a3\u4e2a\u4f4d\u6570\uff0c\u800c\u4e0d\u662f\u6bcf\u6b21\u90fd\u8865\u4e00\u3002
b=a>>(8-2);// 用来得到正常左移丢失的位和循环移位后其正确位置
a=a<<2; // 左移
a=a|b;
=> a=(a<<2)|(a>>(8-2));
C=(A&B)<<N
绛旓細51鍗曠墖鏈鏁扮爜绠″惊鐜乏绉绘槸鎸囧皢涓涓浣嶆暟鐨勪簩杩涘埗鏁版嵁鍦ㄤ簩杩涘埗鏁扮爜绠′腑杩涜宸︾Щ鎿嶄綔锛屼粠鑰屽疄鐜版暟瀛楃殑寰幆绉讳綅銆傚叿浣撴潵璇达紝鍙互鎸夌収浠ヤ笅鍑犱釜姝ラ瀹炵幇锛1瀹氫箟涓涓彉閲忓瓨鍌ㄥ緟绉讳綅鐨勬暟鍊硷紝骞跺皢鍏惰浆鎹负浜岃繘鍒舵暟褰㈠紡銆2灏嗕簩杩涘埗鏁扮爜绠$殑瀵瑰簲绔彛杈撳嚭鍏ㄩ儴娓呴浂銆3鍒╃敤浣嶈繍绠楃 << 灏嗘暟鍊煎悜宸︾Щ鍔涓浣嶏紝骞跺皢...
绛旓細宸︾Щ 鍙崇Щ閮芥槸浣嶈繍绠 a<<=1鐩稿綋浜巃=a<<1 a>>=1鐩稿綋浜巃=a>>1 宸︾Щ涓浣嶇浉褰撲簬鎵鏈変簩杩涘埗渚濇宸︾Щ涓浣 鏈浣庝綅琛0 鏈楂樹綅鎶瑰幓 姣斿3<<1 浜岃繘鍒11宸︾Щ鍚庝负110=6 瀵逛簬鏃犵鍙锋暟 鍙崇Щ涓浣嶇被浼煎乏绉 鏈浣庝綅鎶瑰幓 鏈楂樹綅琛0 濡3>>1 涓 1 瀵逛簬鏈夌鍙锋暟鍙崇Щ 褰撲负姝(鏈楂樹綅涓0) 鍚...
绛旓細濡傛灉鏄敤C璇█缂栫▼鐨勮瘽锛屽彲浠鐢ㄥ乏绉鎴栨槸鍙崇Щ鎸囦护 宸︾Щ锛<< 鍙崇Щ锛>> 璇︾粏璇峰弬闃匔璇█鐩稿叧绫讳功绫嶃
绛旓細杩欎釜闂寰堢畝鍗曪紝鍥犱负寰幆宸︾Щ鍜屽惊鐜鍙崇Щ骞朵笉鐩镐簰鎺掓枼锛屽彲浠ュ崟鐙瓨鍦紝涓嶄粎浠呭湪涓涓伐绋涓紝鍦ㄧ敤涓涓枃浠舵垨鑰呭悓涓涓▼搴忔涓兘鏄彲浠ョ殑銆傛瘮濡傘俰nclude<reg51.h> include<intrins.h> void delay(int a){ int i,j;for(i=0;i<a;i++)for(j=0;j<110;j++);} main(){ unsigned char led1...
绛旓細鍗曠墖鏈鏁扮爜绠¤兘澶熸寜涓嬪紑鍏冲彸绉伙紝鍐嶆寜涓宸︾Щ锛p2鍙h緭鍑0锛宲1鍙e疄鐜宸︾Щ鍙崇Щ锛p3.2瀹炵幇杈规部瑙﹀彂 妤间富璇磋繖浜涳紝骞插槢锛焗ttp://blog.163.com/asm_c/blog/static/24820311320111122423064/ 鍙傝冦
绛旓細寤鸿妤间富璁ょ湡璇讳竴涓媝2=_crol_(p2,1)涓殑宸︾Щ鍑芥暟锛岃寰楀ぇ姒傛槸鏁翠綋宸︾Щ锛屽彸杈鏈楂樹綅琛ュ埌宸﹁竟鏈浣庝綅锛屽尯鍒簬鈥<<鈥
绛旓細鎶婃暟鎹瓨鍦ㄤ釜瀵勫瓨鍣ㄩ噷闈傝鏁版嵁鍦ㄧ疮鍔犲櫒涓垹鍘婚珮4浣嶏紙鍙互鐢ㄩ昏緫杩愮畻锛夈傚啀绉诲姩4浣嶃傚瓨鍏ヤ竴涓崟鍏冩牸a锛屽啀璋冨嚭璇ユ暟鎹垹鍘讳綆4浣嶃傚湪鎶婄疮鍔犲櫒涓庡崟鍏冩牸a鐨勬暟鎹浉鍔犲嵆鍙
绛旓細a = 0xfe;while(1) { for (i = 0; i < 8; i++) { //寰幆8娆.P1 = a; delay(900);a = _crol_(a, 1); //宸︾Щ1浣.} for (i = 0; i < 8; i++) { //寰幆8娆.P1 = a; delay(900);a = _cror_(a, 1); //鍙崇Щ1浣.} } } ...
绛旓細{ {case 0: for(i=7;i>=0;i--) //鍏寰幆 { P1=xianshi[i]; //鎺у埗娴佹按鐏宸︾Щ for(a=0;a<30000;a++);//寤舵椂 }break; {case 1: for(i=0;i<8;i++)//鍏寰幆 { P1=xianshi[i]; //鎺у埗娴佹按鐏鍙崇Щ for(a=0;a<30000;a++);//寤舵椂 }break; } } } } ...
绛旓細P1= ~ j锛 // 瀵瑰彉閲廽 涓殑鍊兼寜浣嶅彇鍙嶅悗锛屼粠P1鍙h緭鍑 delay02s( )锛 // 寤舵椂0.2s j= j<<1锛 // 宸︾Щ1浣 } j=0x80锛 // 璁剧疆鍙崇Щ鍒濆鍊糺涓0x80 for (i=0锛沬<8锛沬++){ P1= ~ j锛沝elay02s( )锛沯= j>>1锛 // 鍙崇Щ1浣 } } } ...