การจัดการหน่วยความจำและการเชื่อมต่อ
หน่วยความจำของไมโครคอนโทรเลอร์
8051 แบ่งเป็น 2 ประเภท คือ
1. หน่วยความจำโปรแกรม( Program Memory ) หน่วยความจำประเภทนี้
คือ ROM ใช้เก็บโปรแกรมที่ใช้
ในการควคุมระบบ ซึ่งเป็นหน่วยความจำประเภท non-volatile
2. หน่วยความจำข้อมูล ( Data Memory ) หน่วยความจำประเภทนี้ได้แก่
RAM
หน่วยความจำโปรแกรม
ใน 8051 จะแบ่งหน่วยความจำประเภทนี้เป็นอีก
2 ประเภท หน่วยความจำโปรแกรมภายนอก( external
memory ) กล่าวคือ ROM ที่มาต่อภายนอกตัว 8051 ส่วนอีกประเภทหนึ่ง คือ หน่วยความจำภายใน(
internal memory )
ได้แก่ ROM ภายในตัวไมโครคอนโทรเลอร์เอง การเลือกใช้หน่วยความจำโปรแกรมภายนอกหรือหน่วยความจำโปรแกรม
ภายในทำได้โดยการ.ให้สัญญาณทางไฟฟ้าที่ขา EA/ โดย
- สัญญาณทางไฟฟ้าที่ขา EA/ เป็นลอจิก 0 หมายถึง
หน่วยความจำโปรแกรมภายนอก
- สัญญาณทางไฟฟ้าที่ขา EA/ เป็นลอจิก 1 หมายถึง
หน่วยความจำโปรแกรมภายใน
*หมายเหตุ หน่วยความจำโปรแกรมนั้น ไมโครคอนโทรเลอร์ตระกูล 8051 สามารถอ้างข้อมูลได้
64 กิโลไบต์
พิจรณาตัวอย่างการเชื่อมต่อ 8051 กับหน่วยความจำโปรแกรมภายนอก
หน่วยความจำข้อมูล
หน่วยความจำข้อมูลมีหน้าที่สำหรับเก็บข้อมูล
หรือตัวแปรที่เกิดขึ้นในขณะที่กำลังประมวลผลโปรแกรม
ไว้เป็นการชั่วคราว โดยพื้นฐานแล้วหน่วยความจำข้อมูลจัดเป็นหน่วยความจำ RAM
แบบสแตติก ดังนั้นเมื่อไม่มีการ จ่าย
ไฟฟ้าให้กับระบบ ก็จะมีผลทำให้ข้อมูลที่จัดเก็บไว้ภายในหน่วยความจำนี้สูญหายไป
พื้นที่ของหน่วยความจำข้อมูล ของ 8051 สามารถมีได้สูงสุดไม่เกิน
64 กิโลไบต์ และแยกประเภทออกเป็น
สองลักษณะตามตำแหน่งที่ตั้งของหน่วย ความจำนั้น
-หน่วยความจำโปรแกรมภายใน (Internal Data Memory) ซึ่ง
เป็น RAM ที่อยู่ภายในตัวของไอซีไมโคร
คอนโทรลเลอร์เอง
-หน่วยความจำข้อมูลภายนอก (External Data Memory) ซึ่งเป็นการใช้ไอซีหน่วยความจำ
RAM มาเพิ่ม
เติมเข้าไปในวงจร ลักษณะเดียวกับการนำไอซี EPROM มาใช้งานเป็นหน่วยความจำโปรแกรมนั่นเอง
รูปที่ 3.1 การจัดพื้นที่หน่วยความจำข้อมูลสำหรับไมโครคอนโทรลเลอร์
หน่วยความจำข้อมูลภายใน
หน่วยความจำข้อมูลภายในของ 8051 มีจำนวนทั้งหมด
256 ไบต์ โดยจำแนกออกได้เป็นสองลักษณะ
คือพื้นที่เฉพาะสำหรับตัวประมวลผลกลาง หรือเรียกว่า รีจิสเตอร์ R0-R7 และพื้นที่ใช้งานทั่วไปสำหรับโปรแกรมใช้งาน
ที่ผู้ใช้สร้างขึ้นมา
หน่วยความจำขนาด 128 ไบต์แรก
บริเวณแอดเดรส 00H -
1FH จำนวน 32 ไบต์จำแนกออกเป็นกลุ่ม(Blank)
8 ไบต์ จำนวน 4 กลุ่ม ซึ่งมีชื่อ
เรียกว่า รีจีสเตอร์ R0 - R7 ดังตารางต่อไปนี้
__________________________________________________
แอดเดรส รีจิสเตอร์แบงค์
ชื่อรีจิสเตอร์ใช้งาน
00H-07H 0
R0-R7
08H-0FH 1 R0-R7
10H-17H 2 R0-R7
18H-1FH 3 R0-R7
จะเป็นได้ว่าชื่อของรีจิสเตอร์ไม่ว่าจะอยู่ในรีจิสเตอร์แบงค์ใด ก็จะมีชื่อ
R0 ถึง R7 เหมือนกันทั้งสิ้น (ดูรูปที่ 3.2) ดังนั้นในการ
ใช้งานผู้ใช้จะต้องให้ความระมัดระวังว่าต้องการรีจิสเตอร์นั้นๆ จากแบงค์ใด
กา