การจัดการหน่วยความจำและการเชื่อมต่อ
หน่วยความจำของไมโครคอนโทรเลอร์
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)
ดังนั้นในการ
ใช้งานผู้ใช้จะต้องให้ความระมัดระวังว่าต้องการรีจิสเตอร์นั้นๆ
จากแบงค์ใด กา