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

การจัดการ 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 บนบอร์ด!