[実験 MikroC Pro PIC16F84A_LED_0025]
PORTBのLEDをビット単位のシフト演算を使って1bit、2bit、3bit、4bit
左へシフトまたは右へシフトするプログラムを考えなさい。
x = (x<<1 data-blogger-escaped-1bit="" data-blogger-escaped-br="">x = (x>>1); // 1bit右へシフト
x = (x<<2 data-blogger-escaped-2bit="" data-blogger-escaped-br="">x = (x>>2); // 2bit右へシフト
x = (x<<3 data-blogger-escaped-3bit="" data-blogger-escaped-br="">x = (x>>3); // 3bit右へシフト
x = (x<<4 data-blogger-escaped-4bit="" data-blogger-escaped-br="">x = (x>>4); // 4bit右へシフト
X = 0xFF で x<<2 data-blogger-escaped-br="">上図のように2Bitづつ左へシフトしていきます。
この時、右側の空いたBitには「0」が埋められていきます。
x<<2 data-blogger-escaped-0xff="" data-blogger-escaped-br="">すべて0になっています。
それ以降1になることはありません。LEDは点灯しません。
そこでif文でシフトエンド処理をして同じパターンで繰り返されるようにしています。
ビット単位のシフト演算は、
負の値のシフトやビット数以上のシフトを行ってはいけません。
mikroC PRO for PIC
0 件のコメント:
コメントを投稿