แสดงบทความที่มีป้ายกำกับ BITWISE แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ BITWISE แสดงบทความทั้งหมด

วันศุกร์ที่ 20 พฤษภาคม พ.ศ. 2559

AVR C: Bitwise กลับค่า I/O

ในบางครั้งเรามีความจำเป็นต้องกลับค่าใน PORT ใดๆ สักพอร์ตหนึ่ง เราสามารถทำได้หลายแบบ แม้กระทั่งการกลับโดยระบุ 0xFF และ 0x00 โดยตรงก็ได้ เช่น

PORTB = 0xFF; //กำหนดให้ PORTB มีค่าเป็น 1 ทั้งหมด
PORTB = 0x00; //กำหนดให้ PORTB มีค่าเป็น 0 ทั้งหมด

วิธีการนี้ก็ง่ายๆ ตรงไปตรงมาดี แต่บางครั้งการเขียนโปรแกรมเราไม่สนใจว่าขณะนั้น PORTx มีค่าเป็นอะไร แต่เราต้องการสลับค่าภายใน จึงเปลี่ยนไปใช้คำสั่งระดับบิตในการสลับจะง่ายกว่า เช่น

PORTB = ~PORTB

คำสั่งนี้จะสั่งให้โปรแกรมสลับค่าใน PORTB จากเดิมที่เป็นให้เป็นตรงกันข้าม ถ้าเดิมเป็น 1 ให้กลับเป็น 0 ถ้าเดิมเป็น 0 ก็ให้เป็น 1 ซึ่งวิธีนี้จะง่ายและเหมาะสำหรับการกลับค่าที่ไม่เหมือนกันทั้งหมด เช่น

...
PORTB = 0b10101010;
while(1){
  PORTB = ~PORTB;
}
...

คำสั่งสองสามบรรทัดข้างบนนี้จะทำให้ PORTB มีค่าระหว่าง 0b10101010 กับ 0b01010101 นั่นเอง
ตัวอย่างการสลับค่า I/O


วันพฤหัสบดีที่ 19 พฤษภาคม พ.ศ. 2559

AVR C การทำงานระดับบิต

การเขียนโปรแกรมในไมโครคอนโทรลเลอร์หลีกเลี่ยงการใช้งานระดับบิตไม่ได้ และมีความสำคัญเป็นอย่างยิ่งที่ต้องเรียนรู้หลักการให้เข้าใจ

วิธีการเรียนรู้ที่เข้าใจง่าย คือ การลงมือสร้างตัวอย่างขึ้นเพื่อให้เกิดความเข้าใจอย่างถ่องแท้

การเรียนรู้ที่ง่ายที่สุดก็เริ่มจาก LED โดยจะต่อ LED 8 ดวง เข้ากับขา I/O ให้ครบ 8bit คือ ต่อตั้งแต่ PINx0 - PINx7 ในบทความนี้ใช้ LED แบบแพ็ก 10 แต่ใช้เพียง 8 ดวงเท่านั้น และอย่าลืมต่อ R ค่า 220 หรือ 330 โอห์มพ่วงไว้สักนิดจะได้ช่วยปกป้องทั้ง IC และ LED

อุปกรณ์เรียนรู้การทำงานระดับบิต

Gtk4 ตอนที่ 6 Defining a Child object

Defining a Child object A Very Simple Editor ในบทความที่ผ่านมาเราสร้างโปรแกรมอ่านไฟล์ชนิดข้อความ และในบทความนี้ก็จะมาปรับแต่งโปรแกรมกันสักหน...