Page 41 - ArduinoและPOP-BOT
P. 41

 41


               4.6.2 ตั วกระทํ าระดั บบิ ต OR (|)


                       คํ าสั่ งระดั บบิ ต OR ของภาษาซี เขี ยนได โดยใช เครื่ องหมาย |หนึ่ งตั ว  โดยต องเขี ยนระหว างนิ พจน หรื อตั วแปร
               ที่ เป นเลขจํ านวนเต็ ม การทํ างานจะนํ าข อมู ลแต ละบิ ตของตั วแปรทั้ งสองตั วมากระทํ าทางตรรกะหรื อ โดยมี กฎดั งนี้

                       ถ าอิ นพุ ตตั วใดตั วหนึ่ งหรื อทั้ งสองตั วเป น “1” เอาต พุ ตเป น “1”  กรณี ที่ อิ นพุ ตเป น “0” ทั้ งคู เอาต พุ ตจึ งจะเป น

               “0” ดั งตั วอย างต อไปนี้

                          0  0  1  1        Operand1
                          0  1  0  1        Operand2
                          ——————————
                          0  1  1  1        Returned result
                       ตั วอย างที่  4-16

                       ส วนของโปรแกรมแสดงการใช ตั วกระทํ าระดั บบิ ต OR

                       int a =  92;      // in binary: 0000000001011100
                       int b = 101;      // in binary: 0000000001100101
                       int c = a | b; // result:    0000000001111101 or 125 in decimal.
                       ตั วอย างที่  4-17

                       โปรแกรมแสดงการใช ตั วกระทํ าระดั บบิ ต AND และ OR
                       ตั วอย างงานที่ ใช ตั วกระทํ าระดั บบิ ต AND และ OR เป นงานที่ โปรแกรมเมอร เรี ยกว า Read-Modify-Write

               on a port  สํ าหรั บไมโครคอนโทรลเลอร  8 บิ ต ค าที่ อ านหรื อเขี ยนไปยั งพอร ตมี ขนาด 8 บิ ต ซึ่ งแสดงค าอิ นพุ ตที่ ขา
               ทั้ ง 8 ขา การเขี ยนค าไปยั งพอร ตจะเขี ยนค าครั้ งเดี ยวได ทั้ ง 8 บิ ต

                       ตั วแปรชื่ อ PORTD เป นค าที่ ใช แทนสถานะของขาดิ จิ ตอลหมายเลข 0,1,2,3,4,5,6,7 ถ าบิ ตใดมี ค าเป น 1

               ทํ าให ขานั้ นมี ค าลอจิ กเป น HIGH (อย าลื มกํ าหนดให ขาพอร ตนั้ นๆ ทํ างานเป นเอาต พุ ตด วยคํ าสั่ ง pinMode()
               ก อน)  ดั งนั้ นถ ากํ าหนดค าให  PORTD = B00110001; ก็ คื อต องการให ขา 2,3 และ 7 เป น HIGH  ในกรณี นี้ ไม
               ต องเปลี่ ยนค าสถานะของขา 0 และ 1 ซึ่ งปกติ แล วฮาร ดแวร ของ Arduino ใช ในการสื่ อสารแบบอนุ กรม ถ าไปเปลี่ ยน
               ค าแล วจะกระทบต อการสื่ อสารแบบอนุ กรม


                       อั ลกอริ ธึ มสํ าหรั บโปรแกรมเป นดั งนี้
                           อ านค าจาก PORTD แล วล างค าเฉพาะบิ ตที่ ต องการควบคุ ม (ใช ตั วกระทํ าแบบบิ ต AND)

                           นํ าค า PORTD ที่ แก ไขจากข างต นมารวมกั บค าบิ ตที่ ต องการควบคุ ม (ใช ตั วกระทํ าแบบบิ ต OR)

                       ซึ่ งเขี ยนเป นโปรแกรมได ดั งนี้
   36   37   38   39   40   41   42   43   44   45   46