演習課題のプログラム例

PDR3とPDR6をビット単位ではなくバイト単位で扱います。

PDR3.BYTE = PDR6.BYTE;

としたいところですが、表2のように意図したものとはなりません。

PDR6
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
SW4 SW3 SW2 SW1 - - - -
PDR3
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
- - - - LED4 LED3 LED2 LED1

表2

そこでPDR6を4ビットシフトしPDR3に代入します。(表3)

PDR6
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
SW4 SW3 SW2 SW1 - - - -
→4ビットシフト
PDR6
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
0 0 0 0 SW4 SW3 SW2 SW1
PDR3
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
- - - - LED4 LED3 LED2 LED1

表3

IO.PDR3.BYTE = IO.PDR6.BYTE >> 4;

これでOKです。(リスト3)

リスト3

ディップスイッチ読み込み編 終了