ระบบฝังตัว - ลงทะเบียนธนาคาร / กอง

ไมโครคอนโทรลเลอร์ 8051 มีแรม 128 ไบต์ เราจะพูดถึงการจัดสรร RAM ขนาด 128 ไบต์เหล่านี้และตรวจสอบการใช้งานเป็นสแต็กและรีจิสเตอร์

การจัดสรรพื้นที่หน่วยความจำ RAM ใน 8051

RAM ขนาด 128 ไบต์ภายใน 8051 ถูกกำหนดที่อยู่ 00 ถึง 7FH สามารถเข้าถึงได้โดยตรงเป็นตำแหน่งหน่วยความจำและแบ่งออกเป็นสามกลุ่มดังนี้ -

  • 32 ไบต์จาก 00H ถึง 1FH สถานที่ตั้งกันไว้สำหรับการลงทะเบียนธนาคารและกอง

  • 16 ไบต์จากตำแหน่ง 20H ถึง 2FH ถูกตั้งค่าไว้สำหรับหน่วยความจำอ่าน / เขียนแบบบิตแอดเดรส

  • 80 ไบต์จากตำแหน่ง 30H ถึง 7FH ใช้สำหรับการจัดเก็บแบบอ่านและเขียน เรียกว่าเป็นscratch pad. แรม 80 ตำแหน่งเหล่านี้ใช้กันอย่างแพร่หลายเพื่อวัตถุประสงค์ในการจัดเก็บข้อมูลและพารามิเตอร์โดยโปรแกรมเมอร์ 8051

ลงทะเบียนธนาคารใน 8051

RAM ทั้งหมด 32 ไบต์ถูกตั้งไว้สำหรับรีจิสเตอร์แบงค์และสแต็ก 32 ไบต์เหล่านี้แบ่งออกเป็นธนาคารลงทะเบียนสี่แห่งซึ่งแต่ละธนาคารมีการลงทะเบียน 8 รายการคือ R0 – R7 ตำแหน่ง RAM ตั้งแต่ 0 ถึง 7 จะถูกตั้งค่าไว้สำหรับ bank 0 ของ R0 – R7 โดยที่ R0 คือตำแหน่ง RAM 0, R1 คือตำแหน่ง RAM 1, R2 คือตำแหน่งที่ 2 และอื่น ๆ จนถึงตำแหน่งหน่วยความจำ 7 ซึ่งเป็นของ R7 ของธนาคาร 0.

ธนาคารแห่งที่สองของการลงทะเบียน R0 – R7 เริ่มต้นที่ตำแหน่ง RAM 08 และไปที่ตำแหน่ง OFH ธนาคารที่สามของ R0 – R7 เริ่มต้นที่ตำแหน่งหน่วยความจำ 10H และไปที่ตำแหน่ง 17H สุดท้ายตำแหน่ง RAM 18H ถึง 1FH จะถูกตั้งไว้สำหรับธนาคารที่สี่ของ R0 – R7

เริ่มต้นลงทะเบียนธนาคาร

หากตำแหน่ง RAM 00–1F ถูกตั้งไว้สำหรับธนาคารที่ลงทะเบียนทั้งสี่แห่งเราจะเข้าถึงธนาคารใดที่ลงทะเบียนของ R0 – R7 ได้เมื่อเปิดเครื่อง 8051 คำตอบคือลงทะเบียนธนาคาร 0; นั่นคือตำแหน่ง RAM ตั้งแต่ 0 ถึง 7 จะถูกเข้าถึงด้วยชื่อ R0 ถึง R7 เมื่อตั้งโปรแกรม 8051 เนื่องจากการอ้างอิงตำแหน่ง RAM เหล่านี้ด้วยชื่อเช่น R0 ถึง R7 นั้นง่ายกว่ามากแทนที่จะใช้ตำแหน่งหน่วยความจำ

วิธีการเปลี่ยนลงทะเบียนธนาคาร

ลงทะเบียนธนาคาร 0 เป็นค่าเริ่มต้นเมื่อเปิดเครื่อง 8051 เราสามารถเปลี่ยนไปใช้ธนาคารอื่นโดยใช้ PSW register D4 และ D3 บิตของ PSW ใช้เพื่อเลือกธนาคารที่ต้องการลงทะเบียนเนื่องจากสามารถเข้าถึงได้โดยคำสั่งที่กำหนดแอดเดรส SETB และ CLR ตัวอย่างเช่น "SETB PSW.3" จะตั้งค่า PSW.3 = 1 และเลือกทะเบียนธนาคาร 1

RS1 RS2 เลือกธนาคารแล้ว
0 0 ธนาคาร 0
0 1 ธนาคาร 1
1 0 ธนาคาร 2
1 1 ธนาคาร 3

กองซ้อนและการดำเนินการ

กองใน 8051

สแต็กคือส่วนของ RAM ที่ CPU ใช้เพื่อเก็บข้อมูลเช่นข้อมูลหรือที่อยู่หน่วยความจำชั่วคราว CPU ต้องการพื้นที่จัดเก็บนี้โดยพิจารณาจากจำนวนรีจิสเตอร์ที่ จำกัด

วิธีการเข้าถึง Stacks

เนื่องจากสแต็กเป็นส่วนหนึ่งของแรมจึงมีรีจิสเตอร์อยู่ภายในซีพียูเพื่อชี้ไปที่มัน รีจิสเตอร์ที่ใช้ในการเข้าถึงสแตกเรียกว่าสแต็กพอยน์เตอร์รีจิสเตอร์ ตัวชี้สแต็กใน 8051 มีความกว้าง 8 บิตและสามารถใช้ค่า 00 ถึง FFH เมื่อเริ่มต้น 8051 ทะเบียน SP จะมีค่า 07H ซึ่งหมายความว่าตำแหน่ง RAM 08 เป็นตำแหน่งแรกที่ใช้สำหรับสแต็ก การดำเนินการจัดเก็บของทะเบียน CPU ในสแต็กเรียกว่าไฟล์PUSHและการรับเนื้อหาจากสแต็กกลับเข้าสู่ทะเบียน CPU เรียกว่าไฟล์ POP.

ผลักดันเข้าไปในกอง

ใน 8051 ตัวชี้สแต็ก (SP) จะชี้ไปยังตำแหน่งที่ใช้ล่าสุดของสแต็ก เมื่อข้อมูลถูกผลักลงในสแต็กตัวชี้สแต็ก (SP) จะเพิ่มขึ้นทีละ 1 เมื่อดำเนินการ PUSH เนื้อหาของรีจิสเตอร์จะถูกบันทึกลงในสแตกและ SP จะเพิ่มขึ้นทีละ 1 ต้องใช้ที่อยู่ RAM ตัวอย่างเช่นคำสั่ง "PUSH 1" จะพุช register R1 บนสแต็ก

โผล่จากกอง

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