กลับไปหน้ารวมไฟล์
8-bit-binary-counter.md

แกนไมโครโปรเซสเซอร์: 8-Bit Counter

ก่อนที่จะมี seven-segment displays หรือ หน้าจอ LCD คอมพิวเตอร์สื่อสารกันด้วยรหัส Binary ล้วนๆ โปรเจกต์ 8-Bit Binary Counter นี้ใช้ LED ง่ายๆ 8 ดวงเรียงกันเพื่อแสดงให้เห็นด้วยภาพอย่างชัดเจนว่าชิป 8-bit ATmega328P (Arduino Uno) คิดและคำนวณตัวเลขอย่างไรในแบบพื้นฐานของมัน

joystick_controller_setup_1772682035221.png

การจัดการ Register

ผู้เริ่มต้นจะเขียนโค้ด digitalWrite() 8 บรรทัดเพื่อเปิดและปิด LED

  • มืออาชีพจะใช้ Direct Port Manipulation
  • แทนที่จะจัดการแต่ละ pin แยกกัน คุณจะจัดการกลุ่มของ pins ทั้งหมดในฐานะ "Port" ขนาด 8-bit เดียวกัน เช่น PORTD (pins 0 ถึง 7)
  • คุณสร้างตัวแปร integer: int counter = 0;
  • ภายใน loop() คุณเขียน: PORTD = counter; และ counter++;
  • Arduino จะแปลงตัวเลขเป็นรูปแบบ Binary ทันที (เช่น ถ้า counter เป็น 5 จะกลายเป็น 0b00000101 และเปิด LED ดวงที่ 1 และ 3 พร้อมกัน)

เกิน 255 (The Overflow)

register แบบ 8-bit มีได้เพียง 8 ช่องเท่านั้น

  • ตัวเลขสูงสุดที่สามารถเก็บได้คือ 11111111 ในรูปแบบ Binary ซึ่งเท่ากับตัวเลข 255 ในระบบ decimal
  • เมื่อตัวแปร counter ถึง 255 และ loop() รัน counter++ อีกครั้ง พื้นที่หน่วยความจำจริงก็จะหมดลง
  • register จะเกิด Overflows กลับไปที่ 00000000 (ปิด LED ทั้ง 8 ดวงทันที) และเริ่มนับจากศูนย์ใหม่อีกครั้ง นี่เป็นแนวคิดที่สำคัญอย่างยิ่งในการจัดการหน่วยความจำ

ส่วนประกอบที่ต้องใช้

  • Arduino Uno/Nano
  • LED 8 ดวง (สีใดก็ได้) และ Resistors 8 ตัว (220-Ohm)
  • Breadboard หนึ่งอัน และสาย jumper wiring จำนวนมาก
  • (อัปเกรดเสริม): 74HC595 Shift Register เพื่อควบคุม LED ทั้ง 8 ดวงโดยใช้ data pins เพียง 3 pin แทนที่จะใช้ 8 pin บนบอร์ด!

ข้อมูล Frontmatter ดั้งเดิม

title: "8 Bit Binary Counter"
description: "Count to 255 with logic! Use shift registers and basic bitwise programming to build a 8-LED line that visually demonstrates binary mathematics."
category: "Basic Electronics"
difficulty: "Easy"