คอมพิวเตอร์ Windows อินเทอร์เน็ต

ไมโครคอนโทรลเลอร์ MCS-51: โมเดลซอฟต์แวร์ โครงสร้าง คำสั่ง ไมโครคอนโทรลเลอร์ MCS-51: รูปแบบโปรแกรม โครงสร้าง คำสั่ง ไมโครคอนโทรลเลอร์ของตระกูล mcs 51

พื้นฐานของไมโครคอนโทรลเลอร์ (ดูรูปที่ 1) คือหน่วยลอจิกเลขคณิต 8 บิต (ALU) ความทรงจำของ MK มีสถาปัตยกรรมฮาร์วาร์ดเช่น แบ่งตามตรรกะ: เป็นหน่วยความจำโปรแกรม - PP (ภายในหรือภายนอก) ระบุโดยตัวนับคำสั่ง 16 บิต (SC) และหน่วยความจำข้อมูล - ภายใน (หน่วยความจำข้อมูลที่อยู่อาศัย - RPD) 128 (หรือ 256) ไบต์ เช่นเดียวกับภายนอก (ภายนอก) หน่วยความจำข้อมูล – VPD) สูงสุด 64 KB ทางกายภาพ หน่วยความจำโปรแกรมถูกใช้งานบน ROM (อ่านอย่างเดียว) และหน่วยความจำข้อมูลถูกใช้งานบน RAM (สามารถเขียนและอ่านข้อมูลได้)

การรับและส่งสัญญาณภายนอกดำเนินการผ่านพอร์ต 8 บิต 4 พอร์ต Р0..Р3 เมื่อเข้าถึงหน่วยความจำโปรแกรมภายนอก (EPM) หรือหน่วยความจำข้อมูล (VPD) พอร์ต P0 และ P2 จะถูกใช้เป็นแอดเดรส/บัสข้อมูลภายนอกแบบมัลติเพล็กซ์ สายพอร์ต P3 ยังสามารถทำหน้าที่อื่นได้ (ดูตารางที่ 1)

การลงทะเบียน DPTR 16 บิตจะสร้างที่อยู่ VPD หรือที่อยู่พื้นฐานของหน่วยความจำโปรแกรมในคำแนะนำการแปลงสะสม รีจิสเตอร์ DPTR ยังสามารถใช้เป็นรีจิสเตอร์ 8 บิตอิสระ 2 ตัว (DPL และ DPH) เพื่อจัดเก็บตัวถูกดำเนินการ

รีจิสเตอร์คำสั่งภายใน 8 บิต (RK) รับรหัสของคำสั่งที่กำลังดำเนินการ รหัสนี้ถูกถอดรหัสโดยวงจรควบคุมซึ่งสร้างสัญญาณควบคุม (ดูรูปที่ 1)

การเข้าถึงการลงทะเบียนฟังก์ชั่นพิเศษ - RSF (SFR - ในรูปที่ 1 พวกมันถูกวงกลมด้วยเส้นประ) ทำได้โดยใช้การกำหนดที่อยู่แบบไบต์ตรงในช่วงที่อยู่ตั้งแต่ 128 (80h) ขึ้นไปเท่านั้น


หน่วยความจำข้อมูลที่อยู่อาศัย (RDD) ในไมโครคอนโทรลเลอร์รุ่นแรกของตระกูล MCS-51 มีความจุ 128 ไบต์ RPD ขนาด 32 ไบต์ที่ต่ำกว่านั้นเป็นรีจิสเตอร์เอนกประสงค์เช่นกัน - RON (4 แบงค์ละ 8 RONs) โปรแกรมสามารถนำไปใช้กับหนึ่งใน 8 RON ของธนาคารที่ใช้งานอยู่ การเลือกธนาคารที่ใช้งานอยู่ของ RON นั้นดำเนินการโดยการเขียนโปรแกรมสองบิตในการลงทะเบียนสถานะโปรเซสเซอร์ - PSW


ตารางที่ 1 - การกำหนดพิน MCS-51

หมายเลขพิน การกำหนด วัตถุประสงค์
1..8 P1 พอร์ต I/O กึ่งสองทิศทาง 8 บิต
9 RST

รีเซ็ตสัญญาณ (ระดับที่ใช้งาน - สูง);

สัญญาณ RST ถูกรีเซ็ต: พีซีและ Special Function Registers (SFRs) ส่วนใหญ่ ปิดใช้งานการขัดจังหวะและตัวจับเวลาทั้งหมด เลือก RON Bank 0; เขียน "ทั้งหมด" ลงในพอร์ต P0_P3 เตรียมสำหรับอินพุต เขียนรหัส 07H ไปยังตัวชี้สแต็ก (SP);

10..17

พอร์ต I/O กึ่งสองทิศทาง 8 บิต; หลังจากเขียนไปยังบิตที่สอดคล้องกัน "1" - ทำหน้าที่เพิ่มเติม (ทางเลือก):

อินพุตพอร์ตอนุกรม - RxD;

เอาต์พุตพอร์ตอนุกรม - TxD;

อินพุตขัดจังหวะภายนอก 0 - ~INT0;

อินพุตขัดจังหวะภายนอก 1 - ~INT1;

ตัวจับเวลา/อินพุตตัวนับ 0 - T0;

ตัวจับเวลา/อินพุตตัวนับ 1 - T1;

เอาต์พุตแฟลช สัญญาณเมื่อเขียนถึง VPD - ~ WR;

เอาต์พุตแฟลช สัญญาณเมื่ออ่านจาก VPD - ~ RD;

18, 19 X1, X2 ข้อสรุปสำหรับการเชื่อมต่อเครื่องสะท้อนเสียงควอตซ์หรือวงจร LC
20 GND ข้อสรุปทั่วไป
21..28 P2 พอร์ต I/O กึ่งสองทิศทาง 8 บิต; หรือที่อยู่เอาต์พุต A ในโหมดหน่วยความจำภายนอก (VPP หรือ VPD)
29 PME หน่วยความจำโปรแกรมภายนอกอ่านแฟลช ออกเมื่อเข้าถึง ROM ภายนอกเท่านั้น
30 เบียร์ แฟลชแอดเดรสหน่วยความจำภายนอก (VPP หรือ VPD);
31 EA การปิดใช้งาน RPP ระดับ "0" ที่อินพุตนี้จะเปลี่ยน MK เป็นคำสั่งที่เลือก จากรันเวย์เท่านั้น ;
39..32 P0 พอร์ต I/O แบบสองทิศทาง 8 บิต; เมื่อเข้าถึงหน่วยความจำภายนอก จะออกที่อยู่ A (ซึ่งเขียนไปยังการลงทะเบียนภายนอกโดยสัญญาณ ALE) จากนั้นจึงแลกเปลี่ยนไบต์แบบซิงโครนัสกับสัญญาณ ~PME (สำหรับคำสั่ง) หรือ ~WR,~RD (สำหรับข้อมูลใน VPD) เมื่อเข้าถึงหน่วยความจำภายนอก หน่วยทั้งหมดจะถูกเขียนไปยังพอร์ตรีจิสเตอร์ P0 ทำลายข้อมูลที่เก็บไว้ที่นั่น
40 Ucc เอาท์พุทแรงดันไฟฟ้า

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

การเข้าถึง RPD สามารถทำได้โดยใช้การกำหนดที่อยู่ไบต์ทางอ้อมหรือโดยตรง (การกำหนดที่อยู่ไบต์ตรงช่วยให้เข้าถึงได้เฉพาะ 128 ไบต์แรกของ RPD)

พื้นที่ RPD แบบขยาย (สำหรับไมโครคอนโทรลเลอร์ของตระกูล MCS-52 และตระกูลที่ตามมา) จากที่อยู่ 128 (80h) ถึง 255 (FFh) สามารถแก้ไขได้โดยใช้วิธีการระบุที่อยู่ทางอ้อมเท่านั้น

ตารางที่ 2 - บล็อกรีจิสเตอร์ของฟังก์ชันพิเศษ (s f r)

รหัส Mnemo ชื่อ
0E0h *ACC แบตเตอรี่
0F0h *B ลงทะเบียนเครื่องขยายแบตเตอรี่
0D0h *PSW คำสถานะโปรเซสเซอร์
0B0h *P3 พอร์ต3
0A0h *P2 พอร์ต2
90ชม *P1 พอร์ต 1
80 ชม *P0 พอร์ต0
0B8h * IP การลงทะเบียนลำดับความสำคัญขัดจังหวะ
0A8h *เช่น ลงทะเบียนหน้ากากขัดจังหวะ
99 ชม SBUF บัฟเฟอร์ตัวรับส่งสัญญาณอนุกรม
98 ชม * สคอน การควบคุมพอร์ตอนุกรม/การลงทะเบียนสถานะ
89 ชม TMOD ตัวตั้งเวลา/ตัวนับโหมดลงทะเบียน
88 ชม * TCON จับเวลา/ควบคุมเคาน์เตอร์/ลงทะเบียนสถานะ
8 วัน TH1 ตัวจับเวลา 1 (ไบต์สูง)
8bh TL1 ตัวจับเวลา 1 (ไบต์ต่ำ)
8ch TH0 ตัวจับเวลา 0 (ไบต์สูง)
8ah TL0 ตัวจับเวลา 0 (ไบต์ต่ำ)
83 ชม DPH Data Pointer Register (DPTR) (ไบต์สูง)
82 ชม DPL Data Pointer Register (DPTR) (ไบต์ต่ำ)
81h SP การลงทะเบียนตัวชี้สแต็ค
87 ชม PCON ความต้องการลงทะเบียนควบคุมพลังงาน

2. รุ่นซอฟต์แวร์ MCS–51


ประเภทคำสั่ง MCS–51

เกือบครึ่งหนึ่งของคำสั่งดำเนินการใน 1 รอบเครื่อง (MC) ด้วยความถี่คริสตัลออสซิลเลเตอร์ 12 MHz เวลาดำเนินการสำหรับคำสั่งดังกล่าวคือ 1 μs คำสั่งที่เหลือจะดำเนินการใน 2 รอบเครื่อง กล่าวคือ เป็นเวลา 2 มิลลิวินาที คำสั่งการคูณ (MUL) และการหาร (DIV) เท่านั้นที่จะดำเนินการใน 4 รอบเครื่อง

ระหว่างรอบเครื่องหนึ่งรอบ มีการเข้าถึงหน่วยความจำโปรแกรมสองครั้ง (ภายในหรือภายนอก) เพื่ออ่านคำสั่งสองไบต์ หรือเข้าถึงหน่วยความจำข้อมูลภายนอก (EDM) หนึ่งครั้ง

3. วิธีการ (วิธีการ) ของที่อยู่ MCS–51

1. ที่อยู่การลงทะเบียน - ตัวถูกดำเนินการ 8 บิตตั้งอยู่ใน RON ของธนาคาร (ใช้งานอยู่) ของการลงทะเบียนที่เลือก

2 ที่อยู่ตรง (ระบุโดยเครื่องหมาย - #) - ตัวถูกดำเนินการตั้งอยู่ในไบต์ที่สอง (และสำหรับตัวถูกดำเนินการ 16 บิตและในลำดับที่สาม) ของคำสั่ง

3 ที่อยู่ทางอ้อม (ระบุโดยเครื่องหมาย - @) - ตัวถูกดำเนินการตั้งอยู่ใน Data Memory (RPD หรือ VPD) และที่อยู่ของเซลล์หน่วยความจำมีอยู่ใน RON ของการกำหนดที่อยู่ทางอ้อม (R0 หรือ R1) ในคำสั่ง PUSH และ POP ที่อยู่จะอยู่ในตัวชี้สแต็ก SP การลงทะเบียน DPTR สามารถมีที่อยู่ VPD ได้ถึง 64K;

4 DIRECT BYTE ADDRESSING – (dir) – ใช้เพื่อเข้าถึงเซลล์ RPD (ที่อยู่ 00h…7Fh) และฟังก์ชันพิเศษลงทะเบียน SFR (ที่อยู่ 80h…0FFh);

5 DIRECT BIT ADDRESSING - (บิต) - ใช้เพื่อระบุที่อยู่แยกกันได้ 128 บิตที่อยู่ในเซลล์ RPD ที่ที่อยู่ 20H ... 2FH และไปยังบิตที่กำหนดแอดเดรสได้ของรีจิสเตอร์ฟังก์ชันพิเศษ (ดูตารางที่ 3 และรุ่นโปรแกรม)

6 ที่อยู่ดัชนีทางอ้อม (แสดงด้วยเครื่องหมาย @) - ทำให้การดูตารางในหน่วยความจำโปรแกรมง่ายขึ้น ที่อยู่ PP ถูกกำหนดโดยผลรวมของการลงทะเบียนฐาน (PC หรือ DPTR) และการลงทะเบียนดัชนี (แบตเตอรี่)

7 IMPLICIT (ในตัว) ที่อยู่ - รหัสคำสั่งมีการอ้างอิงโดยนัย (โดยค่าเริ่มต้น) ไปยังตัวถูกดำเนินการตัวใดตัวหนึ่ง (ส่วนใหญ่มักจะอยู่ที่ตัวสะสม)

4. รูปแบบสถานะตัวประมวลผล (PSW)

C - Carry (CARY) หรือขอยืมแฟล็ก ยังทำหน้าที่เป็น "ตัวสะสมบูลีน" ในคำสั่งแบบใช้บิต

AC – แฟล็กการพกพาเสริม (เพิ่มเติม) – ตั้งค่าเป็น "1" หากคำสั่งเพิ่มเติม (ADD, ADDC) มีการพกพาจาก tetrad ลำดับต่ำไปยังลำดับสูง (เช่น จากบิตที่ 3 ถึงบิตที่ 4)

F0 - การตั้งค่าสถานะผู้ใช้ - ตั้งค่า รีเซ็ต และตรวจสอบโดยซอฟต์แวร์

RS1 RS0 ธนาคาร ที่อยู่ (ผบ.)
0 0 0 00h..07h
0 1 1 08h..0Fh
1 0 2 10h..17h
1 1 3 18h..1Fh

RS1,RS0 – ลงทะเบียนการเลือกธนาคาร:

OV - แฟล็กล้นเลขคณิต; ค่าของมันถูกกำหนดโดยการทำงานของ XOR ของสัญญาณอินพุตและเอาต์พุตของบิตที่สำคัญที่สุดของ ALU ค่าเดียวของแฟล็กนี้บ่งชี้ว่าผลลัพธ์ของการดำเนินการเลขคณิตในโค้ดเสริมของทั้งสองอยู่นอกช่วง: –128…+127; เมื่อทำการหาร แฟล็ก OV จะถูกรีเซ็ต และในกรณีที่หารด้วยศูนย์ จะถูกตั้งค่า เมื่อคูณ แฟล็ก OV จะถูกตั้งค่าหากผลลัพธ์มากกว่า 255 (0FFH);

Bit PSW - สงวนไว้ มีทริกเกอร์ สำหรับเขียนหรืออ่าน

P - parity flag - คือการเพิ่มจำนวนบิตเดี่ยวในตัวสะสมเป็นจำนวนคู่ เกิดขึ้นจากวงจรเชิงผสม (มีทางโปรแกรมสำหรับการอ่านเท่านั้น)

ไมโครคอนโทรลเลอร์ MCS-51 ไม่มีแฟล็ก "Z" แต่ในคำแนะนำการข้ามแบบมีเงื่อนไข (JZ, JNZ) วงจรเชิงผสมจะตรวจสอบเนื้อหาปัจจุบัน (ศูนย์หรือไม่ใช่ศูนย์) ของ Accumulator

คำสั่งการถ่ายโอนและการแลกเปลี่ยนตัวถูกดำเนินการทั้งหมดสามารถทำได้ผ่าน Accumulator (ดูรูปที่ 3) นอกจากนี้ การถ่ายโอนจาก / ไปยังหน่วยความจำภายนอก (Program Memory หรือ Data Memory) สามารถทำได้ผ่านแบตเตอรี่เท่านั้น

การถ่ายโอนส่วนใหญ่สามารถทำได้โดยใช้ฟอร์เวิร์ดไบต์ (dir) มีแม้กระทั่งการถ่ายโอน dir-to-dir (ดูรูปที่ 3)

การถ่ายโอนที่หายไปจาก RON เป็น RON สามารถทำได้โดยการถ่ายโอนจาก RON ไปยัง dir ไบต์ไปข้างหน้า (เนื่องจาก RON จะอยู่ในพื้นที่เริ่มต้นของ Resident Data Memory ซึ่งเซลล์ดังกล่าวสามารถระบุเป็น dir ได้)

คำสั่งแลกเปลี่ยน XCH ช่วยให้คุณสามารถส่งไบต์ได้โดยไม่ทำลายตัวถูกดำเนินการทั้งสอง

คำสั่งเลขคณิตจะดำเนินการใน Accumulator เท่านั้น ดังนั้น ตัวถูกดำเนินการแรกต้องอยู่ใน Accumulator ก่อน แล้วจึงบวกหรือลบตัวถูกดำเนินการที่สอง ผลลัพธ์จะถูกวางไว้ใน Accumulator


คำสั่งการลบ SUBB จะดำเนินการด้วยการยืมเท่านั้น (เช่น แฟล็ก Cary จะถูกลบออกจากผลลัพธ์ด้วย) ดังนั้น เพื่อดำเนินการคำสั่งการลบโดยไม่ต้องยืม จำเป็นต้องดำเนินการคำสั่ง Clear Flag C (CLRC) ก่อน

คำแนะนำสำหรับการคูณตัวถูกดำเนินการหนึ่งไบต์ - MULAB - วางผลลัพธ์แบบสองไบต์ (16 บิต): ไบต์ต่ำอยู่ใน Accumulator ไบต์สูงอยู่ในรีจิสเตอร์ B

ผลลัพธ์ของการดำเนินการคำสั่งสำหรับการแบ่งตัวถูกดำเนินการหนึ่งไบต์ - DIVAB - ถูกวางไว้: ผลหาร - ตัวสะสม, ส่วนที่เหลือ - ในรีจิสเตอร์ B

คำสั่งเลขคณิตของ INC จะเพิ่มหนึ่งไปยังตัวถูกดำเนินการที่เลือก คำสั่งเลขคณิต DEC จะลบหนึ่งตัวออกจากตัวถูกดำเนินการที่เลือก คำสั่ง Accumulator Decimal Correction (DAA) ช่วยให้คุณเพิ่มเลขฐานสองทศนิยม (BCD) โดยไม่ต้องแปลงเป็นรูปแบบเลขฐานสิบหก (ฐานสิบหก) ตัวถูกดำเนินการต้นทางต้องอยู่ในรูปแบบ BCD นั่นคือ ในแต่ละ tetrad ของหนึ่งไบต์มีเพียงตัวเลขตั้งแต่ 0 ถึง 9 (ต้องไม่มีเลขฐานสิบหก: A, B, C, D, E, F) ดังนั้น หนึ่งไบต์สามารถมีตัวเลขตั้งแต่ 00 ถึง 99 สำหรับหมายเลข BCD ที่แพ็ก หรือตัวเลขตั้งแต่ 0 ถึง 9 สำหรับหมายเลข BCD ที่คลายการแพ็ก

คำสั่ง DA A - การแก้ไขทศนิยมดำเนินการกับเนื้อหาของ Accumulator หลังจากเพิ่มหมายเลข BCD ในตัวประมวลผล (ตัวเลขถูกเพิ่มตามกฎหมายของเลขคณิตฐานสิบหก) ดังนี้ (ดูตัวอย่าง):

· หากเนื้อหาของ tetrad ลำดับต่ำของ Accumulator มากกว่า 9 หรือมีการตั้งค่าแฟล็กเสริม (AC = 1) แล้ว 6 จะถูกเพิ่มเข้าไปในเนื้อหาของ Accumulator (นั่นคือตัวเลขหกหลักที่หายไปในหน่วยฐานสิบหก รูปแบบ);

· หากหลังจากนั้นเนื้อหาของลำดับสูงของ Accumulator มากกว่า 9 หรือตั้งค่าสถานะ C แล้ว หมายเลข 6 จะถูกเพิ่มไปยังลำดับสูงของ Accumulator

คำสั่งแก้ไขทศนิยม DA A ไม่ได้ใช้หลังจากคำสั่งเพิ่มค่า (INC) เนื่องจากคำสั่งเพิ่มค่าไม่มีผล (เปลี่ยน) แฟล็ก C และ AC

คำสั่งลอจิก:

ตรรกะ "และ" - ANL

ตรรกะ "OR" - ORL

คำสั่งตรรกะ XOR - XRL - ดำเนินการในตัวสะสม (เช่นเดียวกับเลขคณิต) แต่เป็นไปได้ที่จะดำเนินการคำสั่งเชิงตรรกะในไบต์ที่อยู่โดยตรง (dir) ในกรณีนี้ ตัวถูกดำเนินการที่สองสามารถเป็น:

ในแบตเตอรี่หรือ

ตัวถูกดำเนินการทันทีในคำสั่ง

คำแนะนำการหมุน (RR A, RL A) และคำแนะนำการหมุนผ่านแฟล็ก CARY (RRC A, RLC A) หมุนเนื้อหาของ Accumulator 1 บิต ตัวถูกดำเนินการบิตจะถูกส่งผ่านแฟล็ก C เท่านั้น

สถาปัตยกรรมของตระกูล MCS-51 ถูกกำหนดไว้ล่วงหน้าโดยส่วนใหญ่ตามวัตถุประสงค์ - การสร้าง กะทัดรัดและ ราคาถูกอุปกรณ์ดิจิทัล ฟังก์ชั่นทั้งหมดของไมโครคอมพิวเตอร์ถูกใช้งานโดยใช้ไมโครเซอร์กิตเดียว ตระกูล MCS-51 มีวงจรไมโครทั้งหมดตั้งแต่ไมโครคอนโทรลเลอร์ที่ง่ายที่สุดไปจนถึงไมโครคอนโทรลเลอร์ที่ค่อนข้างซับซ้อน ไมโครคอนโทรลเลอร์ของตระกูล MCS-51 ช่วยให้คุณสามารถควบคุมอุปกรณ์ต่าง ๆ และใช้แต่ละโหนดของวงจรแอนะล็อกได้ microcircuits ทั้งหมดของครอบครัวนี้ทำงานเหมือนกัน ระบบคำสั่ง MCS-51ส่วนใหญ่ดำเนินการในกรณีเดียวกันกับ pinout ที่ตรงกัน(จำนวนขาสำหรับเคส) สิ่งนี้ทำให้คุณสามารถใช้ชิปจากบริษัทต่างๆ สำหรับอุปกรณ์ที่พัฒนาแล้ว - Maxim, Atmel, NXP เป็นต้น (catalog..php?page=components_list&id=39"> s.m. ค้นหาตามพารามิเตอร์) โดยไม่ต้องเปลี่ยนไดอะแกรมวงจรของอุปกรณ์และโปรแกรม.

รูปที่ 1 บล็อกไดอะแกรมของคอนโทรลเลอร์ I8751

บล็อกไดอะแกรมของคอนโทรลเลอร์แสดงในรูปที่ 1 และประกอบด้วยหน่วยการทำงานหลักต่อไปนี้: หน่วยควบคุม หน่วยลอจิกเลขคณิต หน่วยจับเวลา/หน่วยนับ อินเทอร์เฟซแบบอนุกรมและหน่วยอินเตอร์รัปต์ ตัวนับโปรแกรม หน่วยความจำข้อมูล และ หน่วยความจำโปรแกรม การแลกเปลี่ยนทวิภาคีดำเนินการโดยใช้ทางหลวงข้อมูล 8 บิตภายใน

มาดูจุดประสงค์ของแต่ละบล็อคกัน ตัวแทนของตระกูล MCS-51 เกือบทั้งหมดถูกสร้างขึ้นตามโครงการนี้. microcircuits ต่างๆ ของตระกูลนี้แตกต่างกันเฉพาะในทะเบียนวัตถุประสงค์พิเศษ (รวมถึงจำนวนพอร์ต) ระบบคำสั่งของผู้ควบคุมทั้งหมดของตระกูล MCS-51มี 111 คำสั่งพื้นฐานที่มีรูปแบบ 1, 2 หรือ 3 ไบต์และไม่เปลี่ยนแปลงเมื่อย้ายจากชิปหนึ่งไปยังอีกชิปหนึ่ง ทำให้สามารถพกพาโปรแกรมต่างๆ จากชิปตัวหนึ่งไปยังอีกตัวหนึ่งได้อย่างดีเยี่ยม

หน่วยควบคุมและซิงโครไนซ์

ชุดควบคุมและซิงโครไนซ์ (Timing and Control) ได้รับการออกแบบมาเพื่อสร้างสัญญาณการซิงโครไนซ์และควบคุมที่รับรองการประสานงานของการทำงานร่วมกันของหน่วย OEVM ในโหมดการทำงานที่อนุญาตทั้งหมด ชุดควบคุมประกอบด้วย:

  • - อุปกรณ์สำหรับสร้างช่วงเวลา
  • - ตรรกะ I/O
  • - การลงทะเบียนคำสั่ง
  • - ทะเบียนการจัดการปริมาณการใช้ไฟฟ้า
  • - ตัวถอดรหัสคำสั่งตรรกะการควบคุมคอมพิวเตอร์

เครื่องบอกเวลามีไว้สำหรับการสร้างและส่งออกสัญญาณการซิงโครไนซ์ภายในของเฟส รอบ และรอบ จำนวนรอบเครื่องกำหนดระยะเวลาของการดำเนินการคำสั่ง คำสั่ง OEVM เกือบทั้งหมดดำเนินการในรอบเครื่องหนึ่งหรือสองรอบ ยกเว้นคำสั่งการคูณและหาร ซึ่งมีระยะเวลาสี่รอบเครื่อง ให้เราระบุความถี่ของออสซิลเลเตอร์หลักผ่าน F ก. จากนั้นระยะเวลาของรอบเครื่องคือ 12/F ก. หรือ 12 คาบของสัญญาณของออสซิลเลเตอร์หลัก ลอจิกอินพุต-เอาต์พุตได้รับการออกแบบมาเพื่อรับและออกสัญญาณเพื่อให้แน่ใจว่ามีการแลกเปลี่ยนข้อมูลกับอุปกรณ์ภายนอกผ่านพอร์ตอินพุต/เอาต์พุต P0-P3

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

ทะเบียนควบคุมความต้องการ (PCON)ให้คุณหยุดการทำงานของไมโครคอนโทรลเลอร์เพื่อลดการใช้พลังงานและลดระดับการรบกวนจากไมโครคอนโทรลเลอร์ การสิ้นเปลืองพลังงานและการลดสัญญาณรบกวนที่มากขึ้นสามารถทำได้โดยการหยุดออสซิลเลเตอร์หลักของไมโครคอนโทรลเลอร์ สามารถทำได้โดยการสลับบิตในการลงทะเบียนควบคุมความต้องการ PCON สำหรับตัวเลือกการผลิต n-MOS (1816 ซีรีส์หรือชิปต่างประเทศที่ไม่มี "c" ตรงกลางชื่อ) การลงทะเบียนควบคุมพลังงาน PCON มีเพียงหนึ่งบิตที่ควบคุมอัตราบอดของพอร์ตอนุกรม SMOD และ ไม่มีบิตควบคุมการใช้พลังงาน

หน่วยลอจิกเลขคณิต (ALU)เป็นอุปกรณ์แปดบิตคู่ขนานที่ให้การดำเนินการทางคณิตศาสตร์และตรรกะ ALU ประกอบด้วย:

  • - รีจิสเตอร์สะสม, รีจิสเตอร์ที่เก็บข้อมูลชั่วคราว TMP1 และ TMP2
  • - ค่าคงที่ ROM
  • - แอดเดอร์
  • - ทะเบียนเพิ่มเติม (ทะเบียน B)
  • - ตัวสะสม (ACC)
  • - การลงทะเบียนสถานะโปรแกรม (PSW)

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

ค่าคงที่ ROMรับรองการพัฒนารหัสแก้ไขสำหรับการแสดงข้อมูลฐานสองทศนิยม รหัสมาสก์สำหรับการดำเนินการบิต และรหัสคงที่

ตัวบวก 8 บิตแบบขนานเป็นวงจรเชิงผสมที่มีการถ่ายโอนตามลำดับ ซึ่งออกแบบมาเพื่อดำเนินการคำนวณของการบวก การลบ และการดำเนินการทางตรรกะของการบวก การคูณ ความไม่เท่าเทียมกัน และเอกลักษณ์

ลงทะเบียน B- การลงทะเบียนแปดบิตที่ใช้ระหว่างการคูณและการหาร สำหรับคำแนะนำอื่น ๆ ถือได้ว่าเป็นการลงทะเบียนแผ่นเพิ่ม

แบตเตอรี่- การลงทะเบียนแปดบิตที่ออกแบบมาเพื่อรับและจัดเก็บผลลัพธ์ที่ได้รับเมื่อดำเนินการดำเนินการทางคณิตศาสตร์หรือตรรกะหรือกะ

อินเทอร์เฟซแบบอนุกรมและบล็อกขัดจังหวะ (SIP)ออกแบบมาเพื่อจัดระเบียบอินพุต-เอาต์พุตของกระแสข้อมูลตามลำดับและจัดระเบียบระบบขัดจังหวะของโปรแกรม บล็อกประกอบด้วย:

  1. - บัฟเฟอร์ PIP
  2. - ตรรกะการควบคุม
  3. - ทะเบียนควบคุม
  4. - บัฟเฟอร์เครื่องส่งสัญญาณ
  5. - บัฟเฟอร์ตัวรับ
  6. - ตัวรับส่งสัญญาณพอร์ตอนุกรม
  7. - ขัดจังหวะการลงทะเบียนลำดับความสำคัญ
  8. - ขัดจังหวะเปิดใช้งานการลงทะเบียน
  9. - ตรรกะสำหรับการประมวลผลแฟล็กขัดจังหวะและรูปแบบการสร้างเวกเตอร์

โปรแกรมเคาน์เตอร์ได้รับการออกแบบเพื่อสร้างที่อยู่ 16 บิตปัจจุบันของหน่วยความจำโปรแกรมภายในและที่อยู่ 8/16 บิตของหน่วยความจำโปรแกรมภายนอก ตัวนับโปรแกรมประกอบด้วยบัฟเฟอร์พีซี 16 บิต การลงทะเบียนพีซี และวงจรเพิ่ม (เนื้อหาที่เพิ่มขึ้นทีละ 1)

หน่วยความจำข้อมูล (RAM)มีไว้สำหรับจัดเก็บข้อมูลชั่วคราวที่ใช้ระหว่างการทำงานของโปรแกรม

พอร์ต P0, P1, P2, P3เป็นพอร์ตอินพุต-เอาท์พุตกึ่งสองทิศทาง และได้รับการออกแบบมาเพื่อให้แน่ใจว่ามีการแลกเปลี่ยนข้อมูลระหว่าง OEVM และอุปกรณ์ภายนอก โดยสร้างเส้นอินพุต-เอาต์พุต 32 เส้น

อุปกรณ์จับเวลารุ่นพื้นฐานของตระกูลนี้มีตัวจับเวลา/ตัวนับ 16 บิตที่ตั้งโปรแกรมได้สองตัว (T/C0 และ T/C1) ที่สามารถใช้ได้ทั้งเป็นตัวจับเวลาและเป็นตัวนับเหตุการณ์ภายนอก

การลงทะเบียนสถานะโปรแกรม (PSW)ออกแบบมาเพื่อเก็บข้อมูลเกี่ยวกับสถานะของ ALU ระหว่างการทำงานของโปรแกรม

หน่วยความจำโปรแกรม (EPROM)ออกแบบมาเพื่อจัดเก็บโปรแกรมและเป็นหน่วยความจำแบบอ่านอย่างเดียว (ROM) microcircuits ต่างๆ ใช้ ROM ที่ปิดบังซึ่งถูกลบโดยรังสีอัลตราไวโอเลตหรือ แฟลชรอม.

การลงทะเบียนตัวชี้ข้อมูล (DPTR)ออกแบบมาเพื่อเก็บที่อยู่ 16 บิตของหน่วยความจำข้อมูลภายนอกหรือหน่วยความจำโปรแกรม

ตัวชี้สแต็ก (SP)เป็นรีจิสเตอร์แปดบิตที่ออกแบบมาเพื่อจัดระเบียบพื้นที่หน่วยความจำข้อมูลพิเศษ (สแต็ก) ซึ่งเซลล์หน่วยความจำใด ๆ สามารถเก็บไว้ชั่วคราวได้



สถานะของระบบขัดจังหวะจะถูกสำรวจเมื่อสิ้นสุดแต่ละรอบเครื่องในเฟส S5P2 ยกเว้นคำสั่ง RETI และคำแนะนำใดๆ ที่เข้าถึงการลงทะเบียน IE และ IP ความถี่ fOSC จะใช้เวลา 38 ถึง 86 ช่วงนับจากช่วงเวลาที่คำขอขัดจังหวะมุ่งมั่นที่จะให้บริการการขัดจังหวะ ขึ้นอยู่กับเฟสของคำขอและจำนวนรอบเครื่องของคำสั่งในระหว่างที่ได้รับคำขอ

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

ที่อยู่เริ่มต้น (เวกเตอร์ขัดจังหวะ):

INT0 อินเตอร์รัปต์ภายนอก

ตัวจับเวลา/ตัวนับขัดจังหวะ TC0

อินเตอร์รัปต์ภายนอก INT1

ตัวจับเวลา/ตัวนับขัดจังหวะ TC1

พอร์ตอนุกรมขัดจังหวะ

2.7. ระบุวิธีการและระบบคำสั่งของตระกูล MCS-51

ระบบคำสั่งของตระกูล MCS-51 มุ่งเน้นไปที่การจัดระเบียบข้อมูลเข้า/ส่งออกที่ยืดหยุ่นผ่านพอร์ตสากล P0...P3 และการประมวลผลข้อมูลหลัก ให้ความสนใจเป็นพิเศษกับการดำเนินการด้วยบิตและการถ่ายโอนการควบคุมตามค่าของมัน คำสั่งที่ดำเนินการดังกล่าวเป็นกลุ่มใหญ่ และเมื่อรวมกับฮาร์ดแวร์ที่เกี่ยวข้อง จะเรียกว่า "ตัวประมวลผลบูลีน" ซึ่งเป็นส่วนหนึ่งของสถาปัตยกรรม MCS-51

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

2.7.1. วิธีการระบุที่อยู่

แต่ละคำสั่งจะบอกโปรเซสเซอร์ว่าต้องดำเนินการอย่างไร และวิธีการเข้าถึงตัวถูกดำเนินการ รหัสคำสั่งมีหลายฟิลด์ที่มีจุดประสงค์ในการใช้งานเฉพาะ ฟิลด์ที่สำคัญที่สุดของคำสั่งใดๆ คือ รหัสการทำงาน (COP) ซึ่งกำหนดการทำงานของคำสั่ง และส่วนของที่อยู่ ฟิลด์ของส่วนที่อยู่ประกอบด้วยข้อมูลเกี่ยวกับที่อยู่ของตัวถูกดำเนินการและผลลัพธ์ของการดำเนินการ และในบางกรณี ข้อมูลเกี่ยวกับที่อยู่ของคำสั่งถัดไป

หากที่อยู่ชี้ไปที่จำนวนเซลล์หน่วยความจำที่ตัวถูกดำเนินการอยู่หรือตำแหน่งที่ป้อน จะเรียกว่าที่อยู่โดยตรง

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

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

ต่อไปนี้เป็นวิธีการกำหนดที่อยู่หลักที่ใช้ใน MCS-51 Family Command System

การระบุที่อยู่โดยนัย. คำสั่งไม่มีข้อบ่งชี้ที่ชัดเจนเกี่ยวกับที่อยู่ของตัวถูกดำเนินการที่เข้าร่วมในการดำเนินการหรือที่อยู่ที่วางผลลัพธ์ของการดำเนินการ แต่ที่อยู่นี้มีความหมายโดยนัย ในคำสั่ง ตัวสะสมมักจะระบุโดยปริยายว่าเป็นปลายทางของผลลัพธ์ของการดำเนินการ ตัวอย่างเช่น ผลลัพธ์ของการเพิ่มเนื้อหาของตัวสะสม (A) และการลงทะเบียน R1 ของคลังข้อมูลปัจจุบันโดยคำสั่ง ADD A,R1 จะถูกเขียนไปยังตัวสะสมที่ระบุโดยปริยาย คำสั่งที่ระบุทั้งหมดใช้หนึ่งไบต์ในหน่วยความจำ ในขณะที่ที่อยู่ของตัวสะสมเท่านั้น (8Eh ของพื้นที่ SFR) ที่มีหนึ่งไบต์

ที่อยู่โดยตรง. ในช่องที่อยู่ของคำสั่งมี

ไม่ใช่ที่อยู่ของตัวถูกดำเนินการที่มีชีวิตอยู่ แต่ตัวถูกดำเนินการเอง การระบุที่อยู่โดยตรงจะระบุด้วยอักขระพิเศษ # ก่อนตัวเลข ตัวอย่างเช่น คำสั่ง MOV A,#15h จะโหลดเลขฐานสิบหก 15 (ไบต์ที่สองของคำสั่ง) ลงในตัวสะสม ในระบบคำสั่ง การกำหนดแอดเดรสโดยตรงจะแสดงเป็น #data โดยที่ data เป็นตัวเลข

(ข้อมูล = 00h...FFh)

ที่อยู่โดยตรง. ฟิลด์ที่อยู่คำสั่งระบุที่อยู่โดยตรงของตำแหน่งหน่วยความจำข้อมูลที่ตัวถูกดำเนินการอยู่หรือตำแหน่งที่เขียน ตัวอย่างเช่น คำสั่ง MOV A,15h จะโหลดเนื้อหาของเซลล์ DSEG ตามที่อยู่ 15h ลงในตัวสะสม เซลล์หน่วยความจำสามารถระบุแอดเดรสได้โดยตรง ในขณะที่ตัวสะสมถูกระบุโดยปริยาย ขึ้นอยู่กับตำแหน่งของตัวถูกดำเนินการที่ถูกระบุ การกำหนดแอดเดรสโดยตรงจะแบ่งออกเป็นการลงทะเบียนที่อยู่โดยตรงและการกำหนดแอดเดรสแบบสัมบูรณ์

ที่อยู่ลงทะเบียนโดยตรง. ฟิลด์ที่อยู่คำสั่งประกอบด้วยที่อยู่การลงทะเบียนโดยตรงของธนาคารการลงทะเบียนปัจจุบัน แต่ละธนาคารมีการลงทะเบียนแปดแห่ง และจำเป็นต้องมีที่อยู่ตรงสามบิตเพื่อจัดการกับมัน ในคำสั่งช่วยจำ รีจิสเตอร์ที่สามารถระบุตำแหน่งได้จะแสดงด้วย Rn โดยที่ n=0...7 ฟิลด์ทั้งหมดของคำสั่งมีขนาดพอดีในหนึ่งไบต์ ที่อยู่ดังกล่าวเรียกว่าสั้น ตัวอย่างเช่น MOV R4, R1

การระบุที่อยู่โดยตรงช่วยให้คุณเข้าถึงเซลล์ DSEG และพื้นที่ SFR ได้ ที่อยู่ตรงในกรณีนี้ใช้หนึ่งไบต์และคำสั่งใช้สองไบต์ ในระบบคำสั่ง ไบต์ที่อยู่ตรงจะแสดงด้วยคำว่า direct (โดยตรง) (direct = 00h ... FFh) ตัวอย่างเช่น คำสั่ง MOV 80h,R2 (หรือ MOV P0,R2) จะโหลดเนื้อหาของ register R2 ของ databank ปัจจุบันลงในพอร์ต P0 (ตำแหน่ง 80h ของ SFR) หากตัวถูกดำเนินการทั้งสองนั้นกำหนดแอดเดรสแบบสัมบูรณ์โดยตรงได้ คำสั่งนั้นจะกลายเป็นคำสั่งแบบสามไบต์ (เช่น MOV 80h,15h)

การระบุที่อยู่ทางอ้อม. ฟิลด์ที่อยู่ประกอบด้วยที่อยู่ของตำแหน่งหน่วยความจำที่มีที่อยู่ตรงของตัวถูกดำเนินการ ในระบบคำสั่ง การกำหนดแอดเดรสทางอ้อมจะแสดงด้วยอักขระพิเศษ @ คุณสมบัติ

การลงทะเบียน R0 และ R1 (@Ri, i = 0.1) ของแต่ละธนาคารที่ลงทะเบียนจะต้องจัดเก็บที่อยู่โดยตรง ตัวอย่างเช่น หากเนื้อหาของรีจิสเตอร์ R1 ของธนาคารรีจิสเตอร์ปัจจุบันคือ 15h คำสั่ง MOV A,@R1 จะดำเนินการเหมือนกับคำสั่ง MOV A,15h ด้านบน - มันจะโหลดเนื้อหาของตำแหน่งหน่วยความจำ DSEG ด้วยที่อยู่ 15h ในตัวสะสม อย่างไรก็ตาม คำสั่ง MOV A, @ R1 เป็นหนึ่งไบต์ แต่ที่สำคัญที่สุด คุณสามารถเปลี่ยนที่อยู่โดยทางโปรแกรมได้โดยการเปลี่ยนเนื้อหาของการลงทะเบียน R1

ที่อยู่ญาติ. ด้วยการกำหนดแอดเดรสแบบสัมพันธ์ ที่อยู่โดยตรงถูกสร้างขึ้นโดยการเพิ่มที่อยู่ฐานลงในฟิลด์แอดเดรสของคำสั่ง เนื้อหาของตัวนับโปรแกรมถูกใช้เป็นที่อยู่พื้นฐาน และฟิลด์ที่อยู่ของคำสั่งคือออฟเซ็ต rel (ญาติ) แปดบิต หมายเลข rel ถูกตีความโดยคำสั่งเป็นจำนวนเต็มที่ลงนามซึ่งแสดงในส่วนเสริมของสอง ช่วงการนำเสนอคือ (-128...+127) เมื่อกำหนดหมายเลข rel โปรดจำไว้ว่าตัวนับโปรแกรมชี้ไปที่คำสั่งถัดไปที่จะดำเนินการ การกำหนดแอดเดรสสัมพัทธ์ใช้กันอย่างแพร่หลายในคำสั่งถ่ายโอนการควบคุม ซึ่งช่วยให้สามารถสร้างโมดูลโปรแกรมที่ย้ายได้ คำสั่งถ่ายโอนการควบคุมด้วยการกำหนดแอดเดรสสัมพัทธ์ช่วยให้สามารถแยกสาขาสัมพันธ์กับตำแหน่งปัจจุบันของตัวนับโปรแกรม PC ในทั้งสองทิศทางได้ (-128...+127) ไบต์

ในโปรแกรมภาษาแอสเซมบลี สามารถใช้ฟิลด์ออฟเซ็ตเพื่อระบุเลเบลที่จะข้ามไป จากผลการแปล แอสเซมเบลอร์จะคำนวณค่าออฟเซ็ตถ้าไม่เกิน (-128…+127) มิฉะนั้น จะมีการออกข้อความแสดงข้อผิดพลาด

การระบุที่อยู่พื้นฐานแสดงถึงชนิดของที่อยู่สัมพันธ์ ที่อยู่ตรงในกรณีนี้ถูกสร้างขึ้นโดยการเพิ่มที่อยู่ที่ระบุในคำสั่งไปยังเนื้อหาของการลงทะเบียนฐานซึ่งเก็บที่อยู่ฐาน ฟังก์ชั่นของการลงทะเบียนฐานในตระกูล MCS-51 ดำเนินการโดยการลงทะเบียนตัวชี้ข้อมูล DPTR หรือตัวนับโปรแกรม PC การกำหนดแอดเดรสประเภทนี้มีประโยชน์อย่างยิ่งเมื่อประมวลผลตารางและอาร์เรย์ข้อมูล ในคำสั่ง MOVC A,@A+DPTR และ MOVC A,@A+PC ที่อยู่ตรง 16 บิตจะถูกสร้างขึ้นเป็นผลรวมของเนื้อหาของรีจิสเตอร์ DPTR และ A หรือ PC และ A

การกำหนดที่อยู่เพจ. เมื่อใช้การกำหนดที่อยู่หน้า หน่วยความจำจะถูกแบ่งออกเป็นจำนวนหน้าที่มีความยาวเท่ากัน การกำหนดที่อยู่หน้าดำเนินการโดยการลงทะเบียนหน้าแยกต่างหาก และเซลล์หน่วยความจำภายในหน้าจะระบุที่อยู่ตามที่อยู่ในคำแนะนำ ที่อยู่ตรงเกิดจากการเชื่อม (แนบ) ที่อยู่ของหน้าและที่อยู่ของเซลล์หน่วยความจำภายในหน้า ในคำสั่ง MOVX A,@Ri พอร์ต P2 (ไบต์สูงของที่อยู่) ทำหน้าที่ของการลงทะเบียนหน้า และเนื้อหาของรีจิสเตอร์ Ri (ไบต์ต่ำของที่อยู่) จะระบุที่อยู่ภายในหน้า ในกรณีนี้ หน่วยความจำแบ่งออกเป็น 256 หน้า 256 เซลล์ในแต่ละเซลล์

สแต็คที่อยู่ใช้ในคำสั่งที่ไม่มีที่อยู่และเป็นการรวมกันของวิธีการเพิ่มอัตโนมัติและการลดตำแหน่งอัตโนมัติซึ่งทำงานบนหลักการของ LIFO (L ast I nput - F irst O utput) - "เข้าก่อน - ออกก่อน" สแต็กตั้งอยู่ใน DSEG และเติบโตไปในทิศทางของการเพิ่มที่อยู่ ที่อยู่ด้านบนของสแต็กมีอยู่ในตัวชี้สแต็ก SP เมื่อมีการพุชไบต์ไปยังสแต็ก เนื้อหาของ SP จะเพิ่มขึ้นก่อน จากนั้นจึงเขียนที่อยู่ลงไป เมื่ออ่านไบต์จากสแต็ก ให้อ่านตามที่อยู่ที่ระบุโดย SP ก่อน แล้วจึงลด SP เมื่อใช้สแต็ก โปรดจำไว้ว่าความลึกของสแต็ก (จำนวนเซลล์หน่วยความจำสูงสุดที่สแต็กครอบครอง) ไม่ได้ถูกควบคุมโดยฮาร์ดแวร์ ด้วยสแต็กที่เพิ่มขึ้นมากเกินไป เซลล์หน่วยความจำที่ไม่ได้มีไว้สำหรับเซลล์จึงสามารถถูกครอบครองโดยสูญเสียข้อมูลในนั้น สแต็กฮาร์ดแวร์ใช้เพื่อเก็บที่อยู่ผู้ส่งเมื่อให้บริการการขัดจังหวะ

2.7.2. MCS-51 ระบบบัญชาการครอบครัว

ระบบคำสั่งแสดงในตาราง A2.1...A2.6 ของภาคผนวก 2 ตารางระบุชื่อของคำสั่ง ตัวช่วยจำ รหัสการทำงานไบนารี ผลของคำสั่งที่ดำเนินการบนแฟล็ก C, OV, AC และ P ความยาวของคำสั่งเป็นไบต์ (B) และเวลาดำเนินการในรอบเครื่อง (C) ตลอดจนเนื้อหาของการแปลงที่ดำเนินการโดยคำสั่ง ใช้เครื่องหมายจุลภาคเป็นตัวคั่นสำหรับฟิลด์ที่อยู่ในคำสั่ง เพื่อเพิ่มความสามารถในการอ่าน คุณสามารถเพิ่มช่องว่างหลังเครื่องหมายจุลภาคหากใช้แอสเซมเบลอร์สนับสนุน

ชุดคำสั่งทั้งหมดสามารถแบ่งออกเป็น 5 กลุ่ม: การดำเนินการถ่ายโอนข้อมูล การดำเนินการทางคณิตศาสตร์ การดำเนินการทางลอจิคัล การดำเนินการกับบิต และการดำเนินการควบคุมการถ่ายโอน

กลุ่มคำสั่งการดำเนินการถ่ายโอนข้อมูล(ตาราง ก2.1) ร่วม

เก็บ MOV (การถ่ายโอนข้อมูลระหว่าง DSEG และ RSEG), MOVC (ระหว่าง CSEG และ A), MOVX (ระหว่าง XSEG และ A), คำสั่งการเข้าถึงสแต็ก PUSH และ POP และคำสั่งแลกเปลี่ยน XCH และ XCHD สองคำสั่ง คำแนะนำการถ่ายโอนข้อมูลทั้งหมดที่ปลายทางเป็นตัวสะสมตั้งค่าสถานะพาริตี P ของเนื้อหาของตัวสะสมและคำแนะนำที่อยู่ตรงที่มีปลายทางคือการลงทะเบียน PSW จะเปลี่ยนแฟล็กทั้งหมด ความจุมากที่สุดคือคำสั่ง MOV ซึ่งใช้วิธีการระบุที่อยู่สี่วิธี: การลงทะเบียนโดยตรง (A, Rn, DPTR), โดยตรง (โดยตรง), ทางอ้อม (@Ri), โดยตรง (#data, #data16) ตัวถูกดำเนินการที่สองของคำสั่งคือต้นทาง ตัวถูกดำเนินการแรกคือปลายทาง การระบุที่อยู่มีสามวิธี (ยกเว้นโดยตรง) สำหรับการระบุปลายทาง และสี่วิธีสำหรับการระบุแหล่งที่มา คำสั่งโดยตรงของ MOV แบบสามไบต์โดยตรงให้การถ่ายโอนระหว่างเซลล์หน่วยความจำสองเซลล์ (DSEG และ SFR) รวมถึง RSEG สำหรับการแลกเปลี่ยนกับ RSEG จะมีการจัดรูปแบบพิเศษสองและหนึ่งไบต์:

คำสั่งพิเศษ MOV DPTR#data16 โหลดตัวชี้ DPTR 16 บิตพร้อมค่า data16

คำสั่ง MOVC อนุญาตให้คุณอ่านข้อมูลจากหน่วยความจำโปรแกรม CSEG ไม่ใช่ในรีจิสเตอร์คำสั่งของอุปกรณ์ควบคุม แต่ลงในตัวสะสมของอุปกรณ์ปฏิบัติการ คำสั่งใช้วิธีการกำหนดที่อยู่สองวิธี: ตาม DPTR และสัมพันธ์กับพีซี ในทั้งสองกรณี ออฟเซ็ตของจำนวนเต็ม (ดัชนี) ที่ไม่ได้ลงนามจะถูกเก็บไว้ในตัวสะสม ตัวสะสมยังทำหน้าที่เป็นผู้รับผลลัพธ์ คำสั่งอนุญาตให้คุณทำการบันทึกอย่างรวดเร็วตามตาราง

หน่วยความจำภายนอกเข้าถึงได้โดยใช้คำสั่ง MOVX การแลกเปลี่ยนดำเนินการโดยไบต์ระหว่างตัวสะสมและ XSEG ภายนอก สามารถระบุเซลล์ XSEG ได้สองวิธี: ทางอ้อมผ่าน DPTR ของตัวชี้ 16 บิต และแบบหน้าโดยอ้อมผ่านตัวชี้ 8 บิต Ri, i=0,1 ในกรณีหลัง การลงทะเบียนเพจคือ P2

คำสั่ง PUSH และ POP ที่ไม่ได้ระบุให้การถ่ายโอนข้อมูล

ระหว่าง DSEG, RSEG และ SFR

คำสั่ง XCH exchange จัดเตรียมการแลกเปลี่ยนไบต์แบบสองทาง และคำสั่ง XCHD จัดเตรียม tetrads ที่ต่ำกว่าของตัวถูกดำเนินการแบบไบต์

กลุ่มคำสั่งสำหรับการดำเนินการเลขคณิต(ตาราง ก2.2) ร่วม

ถือ Add ADD, Carry Add ADDC, Borrow Subtract SUBB, Increment and Decrement โดย One INC และ DEC, Packed BCD Decimal Correction, Multiply MUL และ Divide DIV ดำเนินการกับจำนวนเต็มที่ไม่ได้ลงนาม ในการบวกและการลบ ตัวสะสมคือตัวถูกดำเนินการแรกและปลายทางของผลลัพธ์ การลงทะเบียนโดยตรง การกำหนดที่อยู่โดยตรงแบบสัมบูรณ์โดยตรงและโดยอ้อมใช้เพื่อกำหนดตัวถูกดำเนินการที่สอง การดำเนินการ INC และ DEC ใช้กับตัวสะสม การลงทะเบียนที่แอดเดรสได้โดยตรง ตำแหน่งหน่วยความจำที่สามารถระบุแอดเดรสได้โดยตรงหรือโดยอ้อม นอกจากนี้ การดำเนินการ INC ยังใช้กับเนื้อหาของการลงทะเบียนพอยน์เตอร์ DPTR 16 บิต

การคูณจำนวนเต็มและการหารที่ไม่ได้ลงนามเกี่ยวข้องกับตัวสะสมและรีจิสเตอร์ B การคูณจะคูณค่า 8 บิตของ A ด้วยค่า 8 บิตของ B และเขียนผลลัพธ์ 16 บิตเพื่อจับคู่ BA ในกรณีนี้ ทะเบียน B จะเก็บส่วนที่สูงที่สุดของผลิตภัณฑ์ แฟล็ก OV ถูกตั้งค่าหากผลิตภัณฑ์มีค่ามากกว่า 255 เมื่อค่า 8 บิต A ถูกหารด้วยค่า 8 บิต B ผลหารจะถูกเขียนไปที่ A และส่วนที่เหลือเป็น B ความพยายามที่จะหารด้วย 0 จะตั้งค่า ธงโอเวอร์โฟลว์ OV

คำสั่งแก้ไขทศนิยมของตัวสะสม DA จะอยู่หลังคำสั่งบวก เงื่อนไขจะต้องแสดงในรหัส BCD การแก้ไขจะดำเนินการในลักษณะมาตรฐาน

กลุ่มคำสั่งลอจิก(ตาราง A2.3 ) มีการดำเนินการทั่วไปสามอย่าง: ANL - ตรรกะ AND, ORL - ตรรกะ OR, XRL - ตรรกะพิเศษ OR ที่มาของตัวถูกดำเนินการแรก

เป็นเซลล์สะสม A หรือเซลล์หน่วยความจำที่สามารถระบุแอดเดรสได้โดยตรง ตัวถูกดำเนินการที่สองถูกระบุโดยหนึ่งในสี่วิธีการกำหนดแอดเดรสพื้นฐาน กลุ่มนี้ยังรวมถึง ปฏิบัติการเดี่ยวเหนือเนื้อหาของตัวสะสม: CLR - clears, CPL - inversions เช่นเดียวกับ RL, RLC, RR และ RRC - การทำงานของ cyclic และ Extended shift ไปทางขวาและซ้าย ซึ่งรวมถึงการดำเนินการแลกเปลี่ยน tetrads ใน SWAP accumulator ซึ่งสามารถตีความได้ว่าเป็นการเปลี่ยนแปลงแบบวนรอบของไบต์ทีละสี่บิต

กลุ่มคำสั่งการใช้งานบิต(ตาราง A2.6) ประกอบด้วย co-

คำสั่ง SETB - ตั้งค่าบิตเป็น 1, CLR - รีเซ็ตบิตเป็น 0, CPL - การผกผันบิต, ANL และ ORL - ตรรกะ AND และตรรกะ OR ของเนื้อหาของแฟล็ก C และบิตที่ระบุโดยตรง, MOV - การส่งต่อบิต

วี ในการดำเนินการระดับบิต แฟล็ก C จะทำหน้าที่เป็นตัวสะสมบูลีน เนื้อหาของแฟล็ก C หรือบิตที่กำหนดแอดเดรสได้โดยตรงของพื้นที่ BSEG ถูกใช้เป็นตัวถูกดำเนินการ ในการดำเนินการ ANL และ ORL คุณสามารถใช้เนื้อหาของบิต (บิต) ที่ระบุโดยตรงหรือผกผันของเนื้อหา (/บิต)

วี กลุ่มนี้ยังรวมถึงคำแนะนำการข้ามแบบมีเงื่อนไขกับญาติค่าชดเชย 8 บิต สาขาเงื่อนไขสามารถดำเนินการได้เมื่อมีการตั้งค่าบิต (คำสั่ง JB) หรือเคลียร์ (คำสั่ง JNB) สิ่งที่ควรทราบเป็นพิเศษคือคำสั่ง JBC ซึ่งเมื่อตั้งค่าบิต ใช้งานสาขา และในเวลาเดียวกันจะรีเซ็ตบิตเป็น 0

กลุ่มคำสั่งโอนการควบคุม(ตาราง A2.4 และ A2.5)

ถือคำสั่งกระโดดแบบไม่มีเงื่อนไข AJMP, LJMP, SJMP, JMP, การข้ามแบบมีเงื่อนไข JZ, JNZ, CJNE, เรียก ACALL, LCALL, ส่งคืน RET, RETI และอัปเดตด้วยการกระโดดแบบมีเงื่อนไข DJNZ คำสั่ง NOP ที่ว่างเปล่าจะรวมอยู่ที่นี่ด้วย

วี การกำหนดแอดเดรสสัมพัทธ์ใช้กันอย่างแพร่หลายในคำสั่งถ่ายโอนการควบคุม เพื่อสร้างโมดูลโปรแกรมที่ย้ายตำแหน่งได้ ที่อยู่สัมพัทธ์คือ rel ออฟเซ็ต 8 บิตเป็นไบต์ที่ลงนามแล้วซึ่งให้การเปลี่ยนแปลงเป็นไบต์ (-128… +127) สัมพันธ์กับตำแหน่งปัจจุบันของพีซี สามารถใช้ addr16 โดยตรงหรือแอดเดรส @A+DPTR ทางอ้อมเพื่อข้ามไปยังจุดอื่นในพื้นที่ที่อยู่ 64 KB ในกรณีหลัง เนื้อหาของ A จะถูกตีความว่าเป็นจำนวนเต็มที่ไม่ได้ลงนาม มีการแนะนำแอดเดรสแอดเดรสแอดเดรสสั้นแบบสั้นภายในหน้าปัจจุบัน 2K เพื่อความเข้ากันได้กับตระกูล MCS-48

การกำหนดแอดเดรสประเภทนี้ทั้งหมดใช้ในคำแนะนำการข้าม คำสั่งการโทรใช้เฉพาะวิธีการกำหนดแอดเดรสแอดเดรสแอดเดรสแอดเดรสแอดเดรสและแอดเดรส คำสั่งแบบมีเงื่อนไขทั้งหมดใช้การกำหนดแอดเดรสแบบสัมพัทธ์เท่านั้น

เมื่อไมโครคอนโทรลเลอร์รู้จักคำขอขัดจังหวะ ไมโครคอนโทรลเลอร์จะออกคำสั่ง LCALL addr16 ซึ่งจะจัดเก็บที่อยู่ที่ส่งกลับบนสแต็กโดยอัตโนมัติ ข้อมูลสถานะของโปรแกรม (เนื้อหาของการลงทะเบียน PSW) จะไม่ถูกบันทึกโดยอัตโนมัติ โดยที่

UDC 681.5, 681.325.5 (075.8)

BBK 32.973.202-018.2 ผม 73

Shcherbina A.N.เครื่องคอมพิวเตอร์ ระบบ และเครือข่าย ไมโครคอนโทรลเลอร์และไมโครโปรเซสเซอร์ในระบบควบคุม:เชฟ. เบี้ยเลี้ยง / อ.น. Shcherbina, P.A. Nechaev-SPb.: จากโปลีเทคนิค. un-ta, 2555.-226 น.

สอดคล้องกับเนื้อหาของมาตรฐานการศึกษาของรัฐสำหรับพื้นที่ของการฝึกอบรมและความเชี่ยวชาญพิเศษในด้านการจัดการในระบบทางเทคนิค, พลังงานไฟฟ้าและวิศวกรรมไฟฟ้าและเนื้อหาของหลักสูตรที่เป็นแบบอย่างของสาขาวิชา "คอมพิวเตอร์ระบบและเครือข่าย"

คำถามพื้นฐานของการจัดระเบียบเชิงตรรกะของระบบไมโครโปรเซสเซอร์ได้รับการพิจารณาจากตัวอย่างสถาปัตยกรรมพื้นฐานของตระกูลไมโครคอนโทรลเลอร์ MCS-51 จาก Intel มีการอธิบายเทคโนโลยีของการเขียนโปรแกรมไมโครคอนโทรลเลอร์ในภาษา Assembler และ SI

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

นอกจากนี้ยังสอดคล้องกับเนื้อหาของมาตรฐานการศึกษาของรัฐในสาขาวิชา "ไมโครคอนโทรลเลอร์และไมโครโปรเซสเซอร์ในระบบควบคุม" และ "อุปกรณ์อิเล็กทรอนิกส์ของระบบอัตโนมัติ" สำหรับปริญญาตรีวิศวกรรมศาสตร์และการฝึกอบรมระดับปริญญาโทในทิศทาง 140400 "พลังงานไฟฟ้าและวิศวกรรมไฟฟ้า"

จัดพิมพ์โดยคำวินิจฉัยของกองบรรณาธิการและสำนักพิมพ์

มหาวิทยาลัยโพลีเทคนิคแห่งรัฐเซนต์ปีเตอร์สเบิร์ก

© Shcherbina A. N. , Nechaev P. A., 2012

© St. Petersburg State

มหาวิทยาลัยโปลีเทคนิค 2555

ไอ 978-5-7422-3553-8


บทนำ..7

บทที่ 1 สถาปัตยกรรมของตระกูล MCS51 10

1.1 ลักษณะทั่วไป 10

1.2 บล็อกไดอะแกรม11



1.3 8051 การกำหนดพินไมโครคอนโทรลเลอร์ 15

1.4 หน่วยความจำองค์กร 17

1.4.1 หน่วยความจำโปรแกรม (ROM) 18

1.4.2 หน่วยความจำข้อมูล (RAM) 19

1.4.3 การลงทะเบียนฟังก์ชั่นพิเศษ ยี่สิบ

1.4.4 ธงทะเบียน (PSW) 23

1.5 อุปกรณ์ควบคุมและซิงโครไนซ์ 26

1.6 การจัดพอร์ต I/O 27

1.6.1 ข้อมูลทั่วไป 27

1.6.2 ฟังก์ชันทางเลือก 27

1.7. ตัวจับเวลา / ตัวนับไมโครคอนโทรลเลอร์ของตระกูล 8051 28

1.7.1. โครงสร้างตัวนับ-ตัวนับ 28

1.7.2 โหมดการทำงานของตัวนับเวลา สามสิบ

1.8. พอร์ตอนุกรม32

1.8.1. โครงสร้างของพอร์ตอนุกรม 32

1.8.2. ควบคุมเครื่องรับส่งสัญญาณ/ลงทะเบียนสถานะ SCON.. 34

1.8.3. ทะเบียนควบคุมไฟ PCON.. 36

1.9. ระบบขัดจังหวะ37

1.9.1. โครงสร้างของระบบอินเตอร์รัปต์ 37

1.9.2 การดำเนินการของรูทีนขัดจังหวะ 40

บทที่ 2 คุณสมบัติของ 80C51GB.. ไมโครคอนโทรลเลอร์ 42

2.1 คุณสมบัติ 42

2.2 พอร์ต I/O P0-P5 43

2.2.1 การทำงานของพอร์ต I/O 43

2.2.2 การเขียนลงพอร์ต.. 46

2.3 คุณสมบัติของ 8XC51GB.. ระบบอินเตอร์รัปต์ 49

เปิด/ปิดการขัดจังหวะ 50

ขัดจังหวะการจัดการลำดับความสำคัญ 51

การขัดจังหวะภายนอก 54

2.3. โหนด ADC 56

2.4. สุนัขเฝ้าบ้าน 61

2.5. การตรวจจับความล้มเหลวของนาฬิกา63

2.6. เมทริกซ์ของตัวนับที่ตั้งโปรแกรมได้ RSA 64

2.6.1. โครงสร้าง PCA.. 64

2.6.2. PCA Counter Mode Register (CMOD) 66

2.6.3. PCA เคาน์เตอร์ควบคุมรีจิสเตอร์ (CON) 67

2.6.4. เปรียบเทียบ/แก้ไขโมดูล 68

2.7. ปรับปรุงพอร์ตอนุกรม76

2.8. ตัวจับเวลา/ตัวนับ 79

การกำหนดพินของไมโครคอนโทรลเลอร์กลุ่ม 8XC51GB.. 86

บทที่ 3 การเขียนโปรแกรม MK 8051GB.. 89

3.1. ซอฟต์แวร์รุ่น 89

3.2 ชนิดข้อมูล 93

3.3 วิธีการระบุข้อมูล 93

3.4 ระบบคำสั่ง 95

3.4.1 ลักษณะทั่วไป 95

3.4.2 ประเภทคำสั่ง 96

3.4.3 ประเภทของตัวถูกดำเนินการ 97

3.4.4 คำสั่งถ่ายโอนข้อมูลไมโครคอนโทรลเลอร์ 98

3.4.5 คำแนะนำเลขคณิต 8051.101

3.4.6 8051 คำสั่งลอจิก MCU 104

3.4.7 8051 คำสั่งการทำงานบิต 106

3.5 โปรแกรมดีบัก111

บทที่ 4 ASM-51 ภาษาการเขียนโปรแกรม 112

4.2 เขียนโปรแกรมข้อความ113

4.3 ตัวอักษรภาษา 114

4.4 ตัวระบุ 115

4.5 หมายเลข 117

4.6 คำสั่ง 118

4.7 การใช้รูทีนย่อยใน ASM51 122

4.7.1 โครงสร้างของขั้นตอนย่อยในภาษา ASM51 122

4.7.2 การส่งตัวแปรพารามิเตอร์ไปยังรูทีนย่อย 123

4.7.3 การใช้งานโปรแกรมย่อย-ฟังก์ชั่นในภาษา ASM51 123

4.7.4 การใช้รูทีนการจัดการอินเตอร์รัปต์ในภาษา ASM51 124

4.8 การเขียนโปรแกรมแบบมีโครงสร้างในภาษาแอสเซมบลี 125

4.9 ลักษณะเฉพาะของการแปลโปรแกรมหลายโมดูล.. 126

4.10 การใช้กลุ่ม 128

4.10.1 การแบ่งหน่วยความจำ MK ออกเป็นส่วน ๆ .. 128

4.10.2 ส่วนหน่วยความจำแบบสัมบูรณ์ 129

4.10.2 ส่วนหน่วยความจำที่ย้ายได้ 131

บทที่ 5 ภาษาการเขียนโปรแกรม C-51 134

5.1 ลักษณะทั่วไปของภาษา134

5.3 โครงสร้างของโปรแกรม C-51 136

5.3. องค์ประกอบของภาษาโปรแกรม C-51 138

5.3.1. สัญลักษณ์.. 138

5.3.2. หน่วยศัพท์ ตัวคั่น และการใช้ช่องว่าง 141

5.3.3 ตัวระบุ.. 142

5.3.4 คีย์เวิร์ด 143

5.3.5 ค่าคงที่.. 143

5.4. นิพจน์ในภาษางบ 146

การเขียนโปรแกรม C-51 146

5.5. ลำดับความสำคัญในการดำเนินงาน 148

5.6. คำสั่งภาษาโปรแกรม C-51 149

5.6.1. ตัวดำเนินการประกาศ 150

5.6.2 คำสั่งปฏิบัติการ.. 150

5.6.3 ผู้ดำเนินการมอบหมาย 151

5.6.4 คำสั่งแบบมีเงื่อนไข 151

5.6.5 ตัวดำเนินการโครงสร้าง () 152

5.6.6 คำสั่ง for loop 152

5.6.7 คำสั่งวนรอบพร้อมตรวจสอบเงื่อนไขจนถึงเนื้อความวนรอบ 153

5.6.8 คำสั่งวนรอบพร้อมการตรวจสอบเงื่อนไขหลังจากวนรอบร่างกายทำในขณะที่ 154

5.6.9 คำสั่งแบ่ง 155

5.6.10 คำสั่งดำเนินการต่อ 155

5.6.11 คำสั่งสลับการเลือก 155

5.6.12 โอเปอเรเตอร์ goto 157

5.6.13 นิพจน์โอเปอเรเตอร์ 158

5.6.14 ส่งคืนคำสั่งจากการส่งคืนรูทีนย่อย 158

5.6.15 ข้อความว่างเปล่า 158

5.7. การประกาศตัวแปรในภาษาการเขียนโปรแกรม C-51 159

5.7.1. การประกาศตัวแปร 159

5.7.3 ชนิดข้อมูลจำนวนเต็ม 161

5.7.4 เลขทศนิยม 162

5.7.5 ตัวแปรประเภทที่แจกแจง 162

5.7.6. ประกาศอาร์เรย์ในภาษาการเขียนโปรแกรม C-51 164

5.7.7. โครงสร้าง.. 165

5.7.8. สมาคม (ผสม) 166

5.8. การใช้พอยน์เตอร์ใน C-51 167

5.8.1. ประกาศตัวชี้. 167

5.8.2. พอยน์เตอร์ที่ไม่ได้พิมพ์ 168

5.8.3. ตัวชี้ขึ้นอยู่กับหน่วยความจำ 169

5.9. ประกาศตัวแปรชนิดใหม่ 169

5.10. การเริ่มต้นข้อมูล 170

5.11. การใช้รูทีนย่อยในภาษาการเขียนโปรแกรม C-51 170

5.11.1. คำจำกัดความของรูทีนย่อย.. 171

5.11.2. พารามิเตอร์โปรแกรมย่อย .. 173

5.11.3. ประกาศรูทีนย่อยล่วงหน้า.. 174

5.11.4 การเรียกรูทีนย่อย.. 176

5.11.5 โปรแกรมย่อยเรียกซ้ำ.. 176

5.11.6 รูทีนขัดจังหวะ 177

5.11.7 ขอบเขตของตัวแปรและรูทีนย่อย.. 178

5.12. โปรแกรมหลายโมดูล 179

บทที่ 6 การเตรียมโปรแกรมในสภาพแวดล้อมการพัฒนาแบบบูรณาการ Keil μVision2 182

6.1 การสร้างโครงการ ASM-51 182

6.2 ตัวอย่างการสร้างโปรเจ็กต์ C สำหรับตัวควบคุมการฝึกใน Keil μVision2 IDE 188

บทที่ 7 คำอธิบายตัวควบคุมการเรียนรู้ .. 199

7.1. โครงสร้างตัวควบคุม 199

7.2. พื้นที่ที่อยู่ 200

7.2.1. การจัดสรรหน่วยความจำ 200

7.2.2 หน่วยความจำภายนอก 201

7.2.3. หน่วยความจำข้อมูลภายใน 202

7.3. การจัดสรรพอร์ต I/O 202

7.4. พอร์ตอนุกรม………………………………...203

7.5. การทำงานกับ LCD 205

7.6. แผงควบคุม…………………………………………………… 213

ภาคผนวก P2โครงสร้างรายงานการปฏิบัติงานห้องปฏิบัติการ……..217

ภาคผนวก P3 รหัสคำสั่งเครื่อง 217

อ้างอิง... 224


บทนำ

ในการพัฒนาความเชี่ยวชาญพิเศษที่เกี่ยวข้องกับระบบอัตโนมัติของกระบวนการทางเทคโนโลยีและการผลิต การศึกษาไมโครคอนโทรลเลอร์เป็นหนึ่งในส่วนที่สำคัญ

มีการพัฒนาอย่างต่อเนื่องและการเกิดขึ้นของไมโครคอนโทรลเลอร์และไมโครโปรเซสเซอร์แบบ 16 และ 32 บิตมากขึ้นเรื่อยๆ ในโลก แต่ส่วนแบ่งที่ใหญ่ที่สุดในโลกของตลาดไมโครโปรเซสเซอร์ยังคงเป็นอุปกรณ์ 8 บิต ตามการคาดการณ์ของบริษัทวิเคราะห์ทั้งหมดในอนาคตอันใกล้ ตำแหน่งผู้นำของไมโครคอนโทรลเลอร์ 8 บิตในตลาดโลกจะดำเนินต่อไป

ในปัจจุบัน ในบรรดาไมโครคอนโทรลเลอร์ 8 บิตทั้งหมด ตระกูล MCS-51 เป็นผู้นำในด้านจำนวนพันธุ์และจำนวนบริษัทที่ผลิตการปรับเปลี่ยนอย่างไม่มีข้อโต้แย้ง ได้ชื่อมาจากตัวแทนคนแรกของตระกูลนี้ - ไมโครคอนโทรลเลอร์ 8051 ชุดอุปกรณ์ต่อพ่วงที่ประสบความสำเร็จความเป็นไปได้ในการเลือกหน่วยความจำโปรแกรมภายนอกหรือภายในที่ยืดหยุ่นและราคาที่เหมาะสมทำให้มั่นใจได้ว่าไมโครคอนโทรลเลอร์นี้ประสบความสำเร็จในตลาด

ข้อดีของตระกูล MCS-51:

สถาปัตยกรรมซึ่งเป็นมาตรฐานโดยพฤตินัย

ความกว้างสุดขีดของครอบครัวและโอกาสที่หลากหลาย

ความพร้อมใช้งานของโปรเซสเซอร์ประสิทธิภาพสูงและรุ่นขยาย;

มีการพัฒนาซอฟต์แวร์และฮาร์ดแวร์อย่างเสรีจำนวนมาก

ความง่ายในการเขียนโปรแกรมฮาร์ดแวร์ รวมถึงการตั้งโปรแกรมในวงจร

ต้นทุนต่ำและความพร้อมใช้งานของชิปพื้นฐาน

ความพร้อมใช้งานของคอนโทรลเลอร์รุ่นเฉพาะสำหรับเงื่อนไขการใช้งานพิเศษ

ความพร้อมใช้งานของคอนโทรลเลอร์รุ่นที่มีระดับการรบกวนทางแม่เหล็กไฟฟ้าลดลง

· ความนิยมอย่างกว้างขวางในหมู่นักพัฒนารุ่นเก่า ทั้งในโลกและในประเทศ CIS

สนับสนุนสถาปัตยกรรมโดยสถาบันการศึกษาชั้นนำของโลก

และในที่สุด ข้อได้เปรียบหลัก: เมื่อเข้าใจชิปพื้นฐานของตระกูลแล้ว มันง่ายที่จะเริ่มทำงานกับ "สัตว์ประหลาด" ในการคำนวณเช่น Cygnal, Dallas Semiconductor, Analog Devices, ไมโครคอนโทรลเลอร์ Texas Instruments

ตระกูล MCS-51 มีวงจรไมโครทั้งหมดตั้งแต่ไมโครคอนโทรลเลอร์ที่ง่ายที่สุดไปจนถึงไมโครคอนโทรลเลอร์ที่ค่อนข้างซับซ้อน จนถึงปัจจุบัน มีการดัดแปลงไมโครคอนโทรลเลอร์มากกว่า 200 รายการในตระกูล 8051 ซึ่งผลิตโดยบริษัทเกือบ 20 แห่ง ทุกปีมีตัวแทนของครอบครัวนี้มากขึ้นเรื่อย ๆ

พื้นที่หลักของการพัฒนาคือ:

เพิ่มความเร็ว (เพิ่มความถี่สัญญาณนาฬิกาและออกแบบสถาปัตยกรรมใหม่);

การลดแรงดันไฟและการใช้พลังงาน

· เพิ่มจำนวน RAM และหน่วยความจำ FLASH บนชิปที่มีความเป็นไปได้ของการเขียนโปรแกรมในวงจร

· การแนะนำอุปกรณ์ที่ซับซ้อน เช่น ระบบควบคุมไดรฟ์ อินเทอร์เฟซ CAN และ USB เป็นต้น สู่ขอบไมโครคอนโทรลเลอร์

ไมโครคอนโทรลเลอร์ของตระกูล MCS-51 ช่วยให้คุณสามารถควบคุมอุปกรณ์ต่าง ๆ และใช้แต่ละโหนดของวงจรแอนะล็อกได้ ไมโครเซอร์กิตทั้งหมดในตระกูลนี้ทำงานด้วยระบบคำสั่งเดียวกัน ส่วนใหญ่ดำเนินการในกรณีเดียวกันกับพินเดียวกัน (หมายเลขของขาสำหรับเคส) ทำให้สามารถใช้ชิปจากผู้ผลิตหลายรายสำหรับอุปกรณ์ที่พัฒนาแล้วโดยไม่ต้องเปลี่ยนแผนภาพวงจรของอุปกรณ์และโปรแกรม

ผู้ผลิตหลักของตระกูลที่ 51 ในโลก ได้แก่ Philips, Siemens, Intel, Atmel, Dallas, Temic, Oki, AMD, MHS, Gold Star, Winbond, Silicon Systems และอื่น ๆ อีกมากมาย

ลักษณะของแอนะล็อกของไมโครคอนโทรลเลอร์ของตระกูล MCS-51 (Intel 8XC51FA, 8XC51GB, 80C152) พร้อมคุณสมบัติขั้นสูงแสดงไว้ในตาราง ใน 1

ตาราง ข.1

แกะ รอม SAR ADC WDT ที/ซี รก. ช่อง ลักษณะเฉพาะ
Atmel: AT89C2051
- - - - UART แฟลช 2 Kb
AT89C4051 - - - - UART แฟลช 4 Kb
AT89S4D12 128K - - - UART, SPI แฟลช 4 Kb
ดัลลาส เซมิคอนดักเตอร์: DS5000FP
- - - + UART บูตสแตรปโหลดเดอร์
DS5001FP - - - + UART บูตสแตรปโหลดเดอร์
DS8xC520 16K - - + 2xUART 2DPTR
ซีเมนส์: C505C
16K - + + UART, CAN 8DPTR
C515C 64K - + + UART+SSC+CAN 4 PWM, 8 DPTR
ฟิลิปส์: *89C51RA+
- + - + UART 2 DPTR เลเวล 4 ขัดจังหวะ, หมดเวลา, แฟลช 8K
P51XAG1x 8K - - + 2 UART
อินเทล: 8xC51RA
8K - + + UART IRQ 4 ระดับ, หมดเวลา
8XC196KC 64K 16K - + - UART 3 PWM
80C196KB 64K 8K - + - UART PWM

บทที่ 1 MCS51 สถาปัตยกรรมของครอบครัว

ไมโครคอนโทรลเลอร์ชิปเดี่ยว 8 บิตของตระกูล MCS-51 ได้รับความนิยมอย่างมากในหมู่นักพัฒนาระบบควบคุมไมโครโปรเซสเซอร์เนื่องจากสถาปัตยกรรมที่ออกแบบมาอย่างดี สถาปัตยกรรมไมโครคอนโทรลเลอร์คือชุดของทรัพยากรฮาร์ดแวร์ที่เข้าถึงได้ของซอฟต์แวร์ทั้งภายในและภายนอก และระบบคำสั่ง สถาปัตยกรรมของตระกูล MCS-51 ถูกกำหนดไว้ล่วงหน้าโดยส่วนใหญ่ตามวัตถุประสงค์ - การสร้างอุปกรณ์ดิจิทัลขนาดกะทัดรัดและราคาประหยัด ไมโครคอนโทรลเลอร์ที่ทำหน้าที่ทั้งหมดของไมโครคอมพิวเตอร์โดยใช้ไมโครเซอร์กิตตัวเดียวเรียกว่าคอมพิวเตอร์ชิปเดียว (OEVM)

Intel ได้เปิดตัวโมเดลประมาณ 50 รุ่นโดยอิงตามแกนปฏิบัติการของไมโครคอนโทรลเลอร์ Intel 8051 ในเวลาเดียวกัน บริษัทอื่นๆ มากมาย เช่น Atmel, Philips ได้เริ่มผลิตไมโครคอนโทรลเลอร์ที่พัฒนาขึ้นในมาตรฐาน MCS-51

ลักษณะทั่วไป

ลักษณะสำคัญของครอบครัว:

· หน่วยประมวลผลกลาง (CPU) 8 บิตที่เน้นการควบคุมอุปกรณ์สำหรับผู้บริหาร

· CPU มีวงจรในตัวของการคูณฮาร์ดแวร์ 8 บิตและการหารตัวเลข

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

หน่วยความจำโปรแกรมภายใน (บนชิป) ของมาสก์หรือประเภทที่สามารถตั้งโปรแกรมใหม่ได้ซึ่งมีปริมาตร 4 ถึง 32 Kb สำหรับคริสตัลต่างๆ ในบางเวอร์ชันไม่มี

· RAM ที่มีข้อมูลอย่างน้อย 128 ไบต์ ซึ่งใช้สำหรับองค์กร การลงทะเบียนธนาคาร สแต็ค และการจัดเก็บข้อมูลผู้ใช้

· อย่างน้อย 32 สายเชื่อมต่อแบบสองทิศทาง (พอร์ต) ซึ่งกำหนดค่าแยกกันสำหรับอินพุตหรือเอาต์พุตของข้อมูล

· ตัวนับ/ตัวจับเวลาแบบมัลติโหมด 16 บิตสองตัวที่ใช้นับเหตุการณ์ภายนอก จัดระเบียบการหน่วงเวลา และนาฬิกาพอร์ตการสื่อสาร

· ตัวรับส่งสัญญาณอะซิงโครนัสสองทิศทางแบบสองทิศทาง (UART) ออกแบบมาเพื่อจัดระเบียบช่องทางการสื่อสารระหว่างไมโครคอนโทรลเลอร์และอุปกรณ์ภายนอกด้วยอัตราการถ่ายโอนข้อมูลที่หลากหลาย มีวิธีการรวมฮาร์ดแวร์-ซอฟต์แวร์ของไมโครคอนโทรลเลอร์เข้ากับระบบที่เชื่อมต่อ

· ระบบอินเตอร์รัปต์ที่มีลำดับความสำคัญสองระดับที่รองรับเวกเตอร์อินเทอร์รัปต์อย่างน้อย 5 ตัวจากแหล่งเหตุการณ์ภายใน 4 แหล่งและแหล่งเหตุการณ์ภายนอก 2 แหล่ง

เครื่องกำเนิดนาฬิกาในตัว

แบบแผนโครงสร้าง

บล็อกไดอะแกรมของคอนโทรลเลอร์แสดงในรูปที่ 1.1 และประกอบด้วยหน่วยการทำงานหลักต่อไปนี้: หน่วยควบคุม หน่วยลอจิกเลขคณิต หน่วยจับเวลา/หน่วยนับ อินเทอร์เฟซอนุกรมและหน่วยอินเตอร์รัปต์ ตัวนับโปรแกรม หน่วยความจำข้อมูล และ หน่วยความจำโปรแกรม การแลกเปลี่ยนทวิภาคีดำเนินการโดยใช้ทางหลวงข้อมูล 8 บิตภายใน ตัวแทนของตระกูล MCS-51 เกือบทั้งหมดถูกสร้างขึ้นตามโครงการนี้ microcircuits ต่างๆ ของตระกูลนี้แตกต่างกันเฉพาะในทะเบียนวัตถุประสงค์พิเศษ (รวมถึงจำนวนพอร์ต)

หน่วยควบคุมและซิงโครไนซ์ (เวลาและการควบคุม)- ออกแบบมาเพื่อสร้างสัญญาณซิงโครไนซ์และควบคุมเพื่อให้แน่ใจว่ามีการประสานงานของการทำงานร่วมกันของหน่วย OEVM ในโหมดการทำงานที่อนุญาตทั้งหมด หน่วยควบคุมประกอบด้วย:

อุปกรณ์สำหรับสร้างช่วงเวลา

ตรรกะอินพุต - เอาต์พุต

การลงทะเบียนคำสั่ง;

ทะเบียนการจัดการปริมาณการใช้ไฟฟ้า

ตัวถอดรหัสคำสั่ง ตรรกะการควบคุมคอมพิวเตอร์

ข้าว. 1.1. แผนภาพโครงสร้างของตัวควบคุม I8051

เครื่องบอกเวลามีไว้สำหรับการสร้างและส่งออกสัญญาณการซิงโครไนซ์ภายในของเฟส รอบ และรอบ จำนวนรอบเครื่องกำหนดระยะเวลาของการดำเนินการคำสั่ง คำสั่ง OEVM เกือบทั้งหมดดำเนินการในรอบเครื่องหนึ่งหรือสองรอบ ยกเว้นคำสั่งการคูณและหาร ซึ่งมีระยะเวลาสี่รอบเครื่อง ให้เราระบุความถี่ของออสซิลเลเตอร์หลักผ่าน F ก. ระยะเวลาของรอบเครื่องคือ 12/F ก. หรือ 12 คาบของสัญญาณของออสซิลเลเตอร์หลัก ลอจิกอินพุต-เอาต์พุตได้รับการออกแบบมาเพื่อรับและออกสัญญาณเพื่อให้แน่ใจว่ามีการแลกเปลี่ยนข้อมูลกับอุปกรณ์ภายนอกผ่านพอร์ตอินพุต/เอาต์พุต P0-P3

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

ทะเบียนควบคุมความต้องการ (PCON)ให้คุณหยุดการทำงานของไมโครคอนโทรลเลอร์เพื่อลดการใช้พลังงานและลดระดับการรบกวนจากไมโครคอนโทรลเลอร์ การสิ้นเปลืองพลังงานและการลดสัญญาณรบกวนที่มากขึ้นสามารถทำได้โดยการหยุดออสซิลเลเตอร์หลักของไมโครคอนโทรลเลอร์ สามารถทำได้โดยการสลับบิตในการลงทะเบียนควบคุมความต้องการ PCON สำหรับตัวเลือกการผลิต n-MOS (1816 ซีรีส์หรือชิปต่างประเทศที่ไม่มี "c" ตรงกลางชื่อ) การลงทะเบียนควบคุมพลังงาน PCON มีเพียงหนึ่งบิตที่ควบคุมอัตราบอดของพอร์ตอนุกรม SMOD และ ไม่มีบิตควบคุมการใช้พลังงาน

หน่วยลอจิกเลขคณิต (ALU)เป็นอุปกรณ์แปดบิตคู่ขนานที่ให้การดำเนินการทางคณิตศาสตร์และตรรกะ ALU ประกอบด้วย:

รีจิสเตอร์สะสม, รีจิสเตอร์ถือ TMP1 และ TMP2;

ค่าคงที่ ROM;

แอดเดอร์;

ทะเบียนเพิ่มเติม (ลงทะเบียน B);

แบตเตอรี่ (ACC);

การลงทะเบียนสถานะโปรแกรม (PSW)

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

ค่าคงที่ ROMรับรองการพัฒนารหัสแก้ไขสำหรับการแสดงข้อมูลฐานสองทศนิยม รหัสมาสก์สำหรับการดำเนินการบิต และรหัสคงที่

ตัวบวก 8 บิตแบบขนานเป็นวงจรประเภทผสมที่มีการถ่ายโอนตามลำดับ ซึ่งออกแบบมาเพื่อดำเนินการคำนวณของการบวก การลบ และการดำเนินการทางตรรกะของการบวก การคูณ ความไม่เท่าเทียมกัน และเอกลักษณ์

ลงทะเบียน B- การลงทะเบียนแปดบิตที่ใช้ระหว่างการคูณและการหาร สำหรับคำแนะนำอื่น ๆ ถือได้ว่าเป็นการลงทะเบียนแผ่นเพิ่ม

แบตเตอรี่- การลงทะเบียนแปดบิตที่ออกแบบมาเพื่อรับและจัดเก็บผลลัพธ์ที่ได้รับเมื่อดำเนินการดำเนินการทางคณิตศาสตร์หรือตรรกะหรือกะ

อินเทอร์เฟซแบบอนุกรมและบล็อกขัดจังหวะ (SIP)ออกแบบมาเพื่อจัดระเบียบอินพุต - เอาต์พุตของกระแสข้อมูลตามลำดับและการจัดระเบียบของระบบขัดจังหวะของโปรแกรม บล็อกประกอบด้วย:

บัฟเฟอร์ PIP;

ตรรกะการควบคุม

ทะเบียนควบคุม;

บัฟเฟอร์เครื่องส่งสัญญาณ

บัฟเฟอร์ตัวรับ;

ตัวรับส่งสัญญาณพอร์ตอนุกรม

ขัดจังหวะการลงทะเบียนลำดับความสำคัญ;

ขัดจังหวะเปิดใช้งานการลงทะเบียน;

ตรรกะการประมวลผลแฟล็กขัดจังหวะและรูปแบบการสร้างเวกเตอร์

โปรแกรมเคาน์เตอร์ได้รับการออกแบบเพื่อสร้างที่อยู่ 16 บิตปัจจุบันของหน่วยความจำโปรแกรมภายในและที่อยู่ 8/16 บิตของหน่วยความจำโปรแกรมภายนอก ตัวนับโปรแกรมประกอบด้วยบัฟเฟอร์พีซี 16 บิต การลงทะเบียนพีซี และวงจรเพิ่ม (เนื้อหาที่เพิ่มขึ้นทีละ 1)

หน่วยความจำข้อมูล (RAM)มีไว้สำหรับจัดเก็บข้อมูลชั่วคราวที่ใช้ระหว่างการทำงานของโปรแกรม

พอร์ต P0, P1, P2, P3เป็นพอร์ตอินพุต-เอาท์พุตกึ่งสองทิศทาง และได้รับการออกแบบมาเพื่อให้แน่ใจว่ามีการแลกเปลี่ยนข้อมูลระหว่าง OEVM และอุปกรณ์ภายนอก โดยสร้างเส้นอินพุต-เอาต์พุต 32 เส้น

การลงทะเบียนสถานะโปรแกรม (PSW)ออกแบบมาเพื่อเก็บข้อมูลเกี่ยวกับสถานะของ ALU ระหว่างการทำงานของโปรแกรม

หน่วยความจำโปรแกรม (EPROM)ออกแบบมาเพื่อจัดเก็บโปรแกรมและเป็นหน่วยความจำแบบอ่านอย่างเดียว (ROM) microcircuits ต่างๆ ใช้ masked, UV-erasable หรือ FLASH ROMs

การลงทะเบียนตัวชี้ข้อมูล (DPTR)ออกแบบมาเพื่อเก็บที่อยู่ 16 บิตของหน่วยความจำข้อมูลภายนอก

ตัวชี้สแต็ก (SP)เป็นรีจิสเตอร์แปดบิตที่ออกแบบมาเพื่อจัดระเบียบพื้นที่หน่วยความจำข้อมูลพิเศษ (สแต็ก) ซึ่งเซลล์หน่วยความจำใด ๆ สามารถเก็บไว้ชั่วคราวได้

1.3 8051 การกำหนดพินไมโครคอนโทรลเลอร์(รูปที่ 1.2)

· U ss - ศักยภาพของสายสามัญ ("โลก");

U cc - แรงดันไฟหลัก +5 V;

· X1,X2 - ข้อสรุปสำหรับการเชื่อมต่อตัวสะท้อนควอตซ์

· RST - อินพุตของการรีเซ็ตทั่วไปของไมโครคอนโทรลเลอร์

PSEN - การอนุญาตหน่วยความจำโปรแกรมภายนอกออกเมื่อเข้าถึง ROM ภายนอกเท่านั้น

· ALE - แฟลชที่อยู่หน่วยความจำภายนอก

· EA - ปิดการใช้งานหน่วยความจำโปรแกรมภายใน ระดับ 0 ที่อินพุตนี้ทำให้ไมโครคอนโทรลเลอร์รันโปรแกรมจาก ROM ภายนอกเท่านั้น ละเว้นภายใน (ถ้ามีอยู่อย่างหลัง);

ข้าว. 1.2. การกำหนดพิน 8051

· P1 - พอร์ตอินพุต/เอาต์พุตกึ่งสองทิศทางแปดบิต แต่ละบิตของพอร์ตสามารถตั้งโปรแกรมได้ทั้งอินพุตและเอาต์พุตของข้อมูล โดยไม่คำนึงถึงสถานะของบิตอื่นๆ

· P2 - พอร์ตกึ่งสองทิศทางแปดบิต คล้ายกับ P1 พินของพอร์ตนี้ใช้เพื่อออกข้อมูลที่อยู่เมื่อเข้าถึงโปรแกรมภายนอกหรือหน่วยความจำข้อมูล (หากใช้แอดเดรส 16 บิตของตัวหลัง) นอกจากนี้ พินพอร์ตยังใช้เมื่อตั้งโปรแกรมเพื่อป้อนบิตลำดับสูงของแอดเดรสลงในไมโครคอนโทรลเลอร์

R3 - พอร์ตกึ่งสองทิศทางแปดบิตซึ่งคล้ายกับ P1 พินของพอร์ตนี้สามารถทำหน้าที่ทางเลือกหลายอย่างที่ใช้ในการดำเนินการจับเวลา พอร์ต I / O อนุกรมตัวควบคุมขัดจังหวะและโปรแกรมภายนอก และหน่วยความจำข้อมูล

· P0 - พอร์ตอินพุตและเอาต์พุตข้อมูลแบบสองทิศทางแบบมัลติเพล็กซ์แบบมัลติเพล็กซ์ ผ่านพอร์ตนี้ในเวลาที่ต่างกัน ไบต์ต่ำของที่อยู่และข้อมูลจะถูกส่งออก

องค์กรหน่วยความจำ

ซีรีส์ MCS-51 ทั้งหมดมีสถาปัตยกรรมฮาร์วาร์ด เช่น พื้นที่ที่อยู่โปรแกรมและข้อมูลหน่วยความจำแยกจากกัน โครงสร้างหน่วยความจำแสดงในรูปที่ 1.3.

จำนวนหน่วยความจำโปรแกรมภายใน (แบบประจำ) (ROM, EPROM หรือ OTP ROM) ที่อยู่บนชิป ขึ้นอยู่กับประเภทของไมโครเซอร์กิต อาจเป็น 0 (ไม่มี ROM), 4K (ชิปฐาน), 8K, 16K หรือ 32K หากจำเป็น ผู้ใช้สามารถขยายหน่วยความจำของโปรแกรมโดยติดตั้ง ROM ภายนอก การเข้าถึง ROM ภายในหรือภายนอกนั้นพิจารณาจากค่าของสัญญาณที่พิน EA (External Access):

EA=V cc (แรงดันไฟจ่าย) - เข้าถึง ROM ภายใน;

EA=V ss (ศักย์กราวด์) - เข้าถึง ROM ภายนอก

สำหรับชิป ROMless พิน EA จะต้องเชื่อมต่อกับ V ss อย่างถาวร

ข้าว. 1.3. การจัดระเบียบหน่วยความจำของตระกูล MCS-51

แฟลชสำหรับอ่าน ROM ภายนอก - (Program Store Enable) ถูกสร้างขึ้นเมื่อเข้าถึงหน่วยความจำโปรแกรมภายนอก และจะไม่มีการใช้งานระหว่างการเข้าถึง ROM ที่อยู่บนชิป พื้นที่ที่อยู่หน่วยความจำโปรแกรมเหลือน้อยถูกใช้โดยระบบอินเตอร์รัปต์ สถาปัตยกรรมชิปพื้นฐาน 8051 รองรับแหล่งอินเทอร์รัปต์ห้าแหล่ง:

สองอินเตอร์รัปต์ภายนอก;

สองขัดจังหวะจากตัวจับเวลา;

ขัดจังหวะจากพอร์ตอนุกรม

ในรูป 1.4 แสดงแผนที่พื้นที่ด้านล่างของหน่วยความจำโปรแกรม

ข้าว. 1.4. แผนที่ส่วนล่างของหน่วยความจำโปรแกรม

หน่วยความจำโปรแกรม (ROM)

สำหรับไมโครคอนโทรลเลอร์ตระกูล 8051 หน่วยความจำโปรแกรมและหน่วยความจำข้อมูลเป็นอุปกรณ์ที่เป็นอิสระและเป็นอิสระ ซึ่งระบุด้วยคำสั่งและสัญญาณควบคุมต่างๆ

จำนวนหน่วยความจำโปรแกรมในตัวที่อยู่บนชิปไมโครคอนโทรลเลอร์ 8051 คือ 4 KB (ในตระกูลสูงสุด 32) เมื่อเข้าถึงหน่วยความจำโปรแกรมภายนอก ไมโครคอนโทรลเลอร์ 8051 ทั้งหมดจะใช้ที่อยู่ 16 บิตเสมอ ซึ่งทำให้เข้าถึง ROM ขนาด 64 KB ได้ ไมโครคอนโทรลเลอร์เข้าถึงหน่วยความจำของโปรแกรมเมื่ออ่าน opcode และตัวถูกดำเนินการ (โดยใช้ตัวนับโปรแกรม PC) เช่นเดียวกับเมื่อดำเนินการตามคำแนะนำในการคัดลอกไบต์จากหน่วยความจำของโปรแกรมไปยังตัวสะสม เมื่อดำเนินการคำสั่งคัดลอกข้อมูล การกำหนดแอดเดรสของเซลล์หน่วยความจำโปรแกรมที่จะอ่านข้อมูลสามารถทำได้โดยใช้ทั้งตัวนับ PC และ DPTR รีจิสเตอร์ตัวชี้ข้อมูลสองไบต์พิเศษ

หน่วยความจำข้อมูล (RAM)

จำนวนหน่วยความจำข้อมูลบนชิปคือ 128 ไบต์ หน่วยความจำข้อมูลภายนอกสามารถมีได้ถึง 64 KB 32 ไบต์แรกจัดเป็นธนาคารสี่แห่งของการลงทะเบียนวัตถุประสงค์ทั่วไป กำหนดตามลำดับธนาคาร 0 - ธนาคาร 3 แต่ละธนาคารประกอบด้วยแปดการลงทะเบียน R0-R7 ทุกเวลา โปรแกรมพร้อมใช้งาน ด้วยการลงทะเบียนที่อยู่ เพียงหนึ่งธนาคารของการลงทะเบียน ซึ่งจำนวนที่มีอยู่ในบิตที่สามและสี่ของคำสถานะโปรแกรม PSW

ที่อยู่พื้นที่บิตไมโครคอนโทรลเลอร์ 8051

ตาราง 1.1

ที่อยู่ไบต์ (ฐานสิบหก) บิตแอดเดรสทีละบิต
D7 D6 D5 D4 D3 D2 D1 D0
2F 7F 7E 7D 7C 7B 7A
2E
2D 6F 6E 6D 6C 6B 6A
2C
2B 5F 5E 5D 5C 5B 5A
2A
4F 4E 4D 4C 4B 4A
3F 3E 3D 3C 3B 3A
2F 2E 2D 2C 2B 2A
1F 1E 1D 1C 1B 1A
0F 0E 0D 0C 0B 0A
20 ชม

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

ในการเข้าถึงหน่วยความจำข้อมูลภายนอก เฉพาะการกำหนดแอดเดรสทางอ้อมเท่านั้นที่ใช้กับรีจิสเตอร์ R0 และ R1 หรือใช้ DPTR รีจิสเตอร์ตัวชี้ 16 บิต

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

กระทรวงศึกษาธิการและอาชีวศึกษาแห่งสหพันธรัฐรัสเซีย มหาวิทยาลัยเทคนิคแห่งรัฐโนโวซีบีร์สค์ V.N. เวปริก, V.A. อาฟานาซีฟ, เอ.ไอ. Druzhinin, A.A. เซมสคอฟ อาร์.อาร์. Isaev, O.V. Malyavko MICROCONTROLLERS ของ MCS-51 FAMILY ตำราในหลักสูตร "ระบบไมโครโปรเซสเซอร์" และ "การออกแบบระบบไมโครโปรเซสเซอร์" สำหรับนักศึกษาอาวุโสของคณะอัตโนมัติและวิศวกรรมคอมพิวเตอร์ทุกรูปแบบการศึกษา Novosibirsk 1997 V.N. เวปริก, V.A. อาฟานาซีฟ, เอ.ไอ. Druzhinin, A.A. เซมสคอฟ อาร์.อาร์. Isaev, O.V. มาลีฟโก. ไมโครคอนโทรลเลอร์ของตระกูล MCS-51: บทช่วยสอน - โนโวซีบีสค์ หนังสือเรียนที่คุณสนใจมีคำอธิบายทั่วไปเกี่ยวกับสถาปัตยกรรม ฟังก์ชันการทำงาน และระบบคำสั่งของตระกูลไมโครคอนโทรลเลอร์ชิปเดี่ยว (ไมโครคอนโทรลเลอร์แบบฝัง) MCS-51 ที่ผลิตโดย INTEL ส่วนที่สองของคู่มือนี้อธิบายถึงตัวควบคุมไมโครโปรเซสเซอร์เพื่อการศึกษา UMPC-51 ซึ่งเสนอให้นักเรียนเป็นเป้าหมายของการศึกษาเมื่อทำวงจรการทำงานในห้องปฏิบัติการ วัสดุของคู่มือนี้สามารถนำมาใช้ในการออกแบบหลักสูตรและประกาศนียบัตร และยังเป็นประโยชน์สำหรับวิศวกรวงจรที่เกี่ยวข้องกับการพัฒนาและการทำงานของอุปกรณ์อิเล็กทรอนิกส์ ผู้เขียนขอแสดงความขอบคุณอย่างสุดซึ้งต่อ CJSC "New Technologies" ผู้จัดจำหน่ายอย่างเป็นทางการของ INTEL สำหรับการจัดหาวัสดุบนพื้นฐานของงานนี้ ตารางที่ 15 ป่วย 25 รายการของจุด 12 ชื่อเรื่อง ผู้วิจารณ์: E.D. บารัน, จี.จี. มาตุชกิน. งานนี้จัดทำขึ้นที่ Department of Computer Engineering Novosibirsk State © Technical University 2 INTRODUCTION ตระกูลไมโครคอนโทรลเลอร์ไมโครชิป 8 บิตแบบ 8 บิต MCS-51 ปรากฏในตลาดโลกในช่วงต้นทศวรรษที่แปด การดัดแปลงคริสตัลครั้งแรก (ประมาณ 7) นั้นทำขึ้นโดยใช้เทคโนโลยี n-MOS (HMOS) คุณภาพสูง และใช้ไมโครคอมพิวเตอร์ชิปตัวเดียวที่ใช้งานได้จริงของสถาปัตยกรรมฮาร์วาร์ด ซึ่งเป็นหนึ่งในหลักการหลักในการแยกโปรแกรมและข้อมูล ช่องว่างที่อยู่หน่วยความจำ ด้วยการพัฒนาเทคโนโลยีเซมิคอนดักเตอร์ ไมโครเซอร์กิตรุ่นต่อมาของ MCS-51 จึงเริ่มผลิตโดยใช้เทคโนโลยี CMOS (CHMOS) ขั้นสูงและใช้พลังงานต่ำ (ในโหมดแอ็คทีฟ ปริมาณการใช้คริสตัลเพิ่มขึ้นเป็น 1050 mA) ระบบคำสั่ง MCS-51 ซึ่งมุ่งเน้นไปที่การใช้งานอัลกอริธึมการควบคุมแบบดิจิทัลต่างๆ ในขณะที่ยังคงรักษาความคล้ายคลึงภายนอกบางอย่างกับระบบคำสั่งของตระกูล MCS-48 รุ่นก่อน ได้ขยายในเชิงคุณภาพ มีนวัตกรรมพื้นฐานปรากฏอยู่ในนั้น: การดำเนินงานเชิงบิตและ ฟิลด์บิตที่กล่าวถึงในหน่วยความจำข้อมูลซึ่งทำให้สามารถพูดคุยเกี่ยวกับการใช้งานโปรเซสเซอร์บิตบนชิปได้ ดำเนินการคำสั่งการคูณ การหาร และการลบ; ปรับปรุงการทำงานกับสแต็ก; ขยายกลุ่มคำสั่งโอนการควบคุม ระบบคำสั่งเริ่มมีความสมมาตรมากขึ้น กล่าวคือ ขึ้นอยู่กับการถ่ายโอนข้อมูลผ่านแบตเตอรี่น้อยลง การทำงานของอุปกรณ์ต่อพ่วงในตัวยังได้รับการขยายด้วยการเปิดตัว: ตัวนับเวลา 16 บิตสองตัว; ฮาร์ดแวร์พอร์ตดูเพล็กซ์แบบอนุกรม; ระบบขัดจังหวะสองระดับ พอร์ต I/O 8 บิตสี่พอร์ต การเปลี่ยนแปลงขั้นพื้นฐานในโครงสร้างของรอบเวลาของโปรเซสเซอร์ทำให้ทำงานเร็วขึ้นกับโปรแกรมภายนอกและหน่วยความจำข้อมูล รวมถึงการตอบสนองต่อการขัดจังหวะภายนอกและภายใน ขนาดรวมของพื้นที่แอดเดรสของโปรแกรมภายนอกและหน่วยความจำข้อมูลเพิ่มขึ้นเป็น 128 KB การลงทะเบียน 16 บิตของตัวนับโปรแกรม (ตัวนับโปรแกรม) และตัวชี้ข้อมูล (ตัวชี้ข้อมูล) ทำให้สามารถเข้าถึงที่อยู่ทั้งหมดได้โดยตรง ซึ่งทำให้นักพัฒนามีโอกาสนำอัลกอริทึมไปใช้ในการประมวลผลอาร์เรย์ข้อมูลขนาดใหญ่ได้อย่างรวดเร็ว โหนดที่เข้าถึงได้ของซอฟต์แวร์ทั้งหมดของไมโครคอนโทรลเลอร์ถูกลดขนาดลงเป็นพื้นที่หน่วยความจำข้อมูลพิเศษ (Special Function Register) ซึ่งทำให้สามารถเข้าถึงได้ในลักษณะเดียวกับเซลล์ทั่วไปของ RAM ที่อาศัยอยู่ ในการดัดแปลงคริสตัลในภายหลัง การปรับปรุงได้ดำเนินไปตามเส้นทางของการเพิ่มฟังก์ชันการทำงานเพิ่มเติมในขณะที่ยังคงความเข้ากันได้ของซอฟต์แวร์เต็มรูปแบบกับเวอร์ชันก่อนหน้า คุณสมบัติของการปรับเปลี่ยนไมโครคอนโทรลเลอร์ล่าสุดของตระกูล MCS-51 คือ: การออกแบบคงที่อย่างสมบูรณ์; คริสตัลรุ่น 3- และ 5 โวลต์; อุปกรณ์ต่อพ่วงในตัวที่หลากหลาย ความถี่สัญญาณนาฬิกาสูงสุด - 24 MHz; สำหรับคริสตัลแต่ละกลุ่ม - 33 MHz ปัจจุบัน MCS-51 มีคริสตัลประมาณ 60 เวอร์ชัน นอกจากนี้ยังมีเอกสารที่เป็นกรรมสิทธิ์โดยละเอียดพร้อมให้ใช้งาน (น่าเสียดายที่ยังไม่ได้แปลเป็นภาษารัสเซีย) เพื่อเตรียมซอฟต์แวร์สำหรับไมโครคอนโทรลเลอร์ MCS-51 ส่วนใหญ่ใช้ ASM-51 ภาษา C ซึ่งมีคอมไพเลอร์ที่ได้รับการพิสูจน์แล้วค่อนข้างดีจำนวนหนึ่งไลบรารีของรูทีนย่อยมาตรฐานและโปรแกรมจำลองซอฟต์แวร์ที่ผลิตโดย บริษัท ต่างประเทศและในประเทศต่างๆ . 3 แม้จะมี "สมัยโบราณ" ของครอบครัวเพียงพอ (มากกว่า 15 ปี) และการปรากฏตัวในตลาดโลกในช่วงไม่กี่ปีที่ผ่านมาของไมโครคอนโทรลเลอร์ชิปตัวเดียวที่มีประสิทธิภาพสูงและสถาปัตยกรรมที่ได้รับการปรับปรุง - MCS-51, MCS-251, MCS-96, ตัวควบคุม MCS-51 จะใช้กันอย่างแพร่หลายมาเป็นเวลานาน ใช้ในระบบควบคุมแบบฝังที่ค่อนข้างง่าย 4 1. ระบบการออกแบบส่วนประกอบ INTEL และองค์ประกอบการทำงานของตระกูล MCS-51 ในการติดฉลากไมโครชิป INTEL ใช้ระบบสัญกรณ์ที่ประกอบด้วยหลายฟิลด์: , รุ่นยานยนต์สำหรับช่วงอุณหภูมิที่ขยาย (-40 / +125 C) M (ทหาร) , รุ่นตามมาตรฐานทางทหาร (-55 / +125 C) Q หรือ C (เชิงพาณิชย์), ช่วงอุณหภูมิ "เชิงพาณิชย์" (0 / +70 C ) กับ (160 8) - การฝึกความร้อนแบบไดนามิกรายชั่วโมง; L หรือ E (ขยาย) ช่วงอุณหภูมิ "ขยาย" (-40/+85 C) พร้อมการฝึกความร้อนแบบไดนามิก (160 8) ชั่วโมง T (ขยาย) ช่วงอุณหภูมิ "ขยาย" (-40/+85 C) โดยไม่มีการฝึกความร้อน I (อุตสาหกรรม) ดำเนินการตามมาตรฐานอุตสาหกรรม ฟิลด์ที่สองประกอบด้วยคำนำหน้าหนึ่งหรือสองตัวอักษรที่ระบุประเภทแพ็คเกจของ microcircuit (Package Type) วันนี้มีแพ็คเกจ microcircuit หลายประเภท ตัวอย่างเช่น เราจะให้การกำหนดเฉพาะบางส่วน: A Ceramic Pin Grid Array, (PGA); C แพ็คเกจอินไลน์เซรามิกคู่ (CDIP); แพ็คเกจ K Ceramic Quad Flatpack, (QFP); KD Plastic Quad Flatpack Package, Fine Pitch, Die Down, (PQFP); แพ็คเกจแพ็คพลาสติก Quad Flatpack ของ KU, Fine Pitch, Die Up, (PQFP); N ผู้ให้บริการชิปตะกั่วพลาสติก (PLCC); P แพ็คเกจอินไลน์คู่พลาสติก (PDIP); โมดูลหน่วยความจำไร้สารตะกั่วในบรรทัดเดียว SM (SIMM); แพ็คเกจ U Plastic Dual In-Line, Shrink Dip, (PDIPS); Z Zigzag แพ็คเกจอินไลน์, (ZIP). ช่องที่สามสามารถมีอักขระตัวเลขและตัวอักษรได้ถึง 15 ตัว ซึ่งระบุประเภทของอุปกรณ์เฉพาะที่อยู่บนชิป ช่องที่สี่สามารถมีอักขระที่เป็นตัวเลขและตัวอักษรได้ถึงหกตัว ซึ่งสะท้อนถึงคุณลักษณะและรุ่นต่างๆ ของไมโครเซอร์กิต ข้อมูลเพิ่มเติมเกี่ยวกับประเภทของเคสและการออกแบบสามารถพบได้ในหนังสือ: หมายเลขคำสั่งซื้อบรรจุภัณฑ์ 240800 สำหรับไมโครคอนโทรลเลอร์ที่อธิบายไว้ในตระกูล MCS-51 อักขระตัวแรกของฟิลด์ที่สามจะเท่ากับ (สำหรับ Intel) "8". อักขระตัวที่สองของฟิลด์ที่สามมักจะระบุประเภทของ ROM ในตัว: 0 โปรแกรมมาสก์ ROM; คริสตัลที่ไม่ใช่ ROM (สำหรับคริสตัลรุ่นที่ใหม่กว่า); 1 โปรแกรม mask ROM (รหัส ROM มาตรฐาน, เฟิร์มแวร์); 3 หน้ากาก ROM (สำหรับคริสตัลรุ่นที่ใหม่กว่า), (รหัส ROM ที่ปรับแต่งได้); 7 UFPROM หรือ ROM ที่ตั้งโปรแกรมได้ครั้งเดียว (EPROM หรือ OTP ROM); 8 EEPROM (แฟลช - หน่วยความจำบนชิป) ถัดไปอาจมีจดหมายแสดงคุณสมบัติทางเทคโนโลยีของการผลิต: ไม่มีเทคโนโลยีตัวอักษร HMOS, แหล่งจ่ายไฟ 5V; ด้วยเทคโนโลยี CHMOS แหล่งจ่ายไฟ 5V; l เทคโนโลยี CHMOS แหล่งจ่ายไฟ 3V; 5 อักขระถัดไปของฟิลด์ที่สามสำหรับไมโครคอนโทรลเลอร์ของตระกูล MCS-51 คือตัวเลข (เช่น 31,32,51,54,58,152) และจากหนึ่งถึงสี่ตัวอักษรที่สะท้อนถึงคุณสมบัติการทำงานของชิป (เช่น ขนาด ROM, ลักษณะเฉพาะของกลุ่มชิป, การมีการป้องกันระบบของหน่วยความจำโปรแกรมจากการเข้าถึงโดยไม่ได้รับอนุญาต, ความเป็นไปได้ของการใช้อัลกอริธึมการเขียนโปรแกรมขั้นสูง "Quick Pulse" และอื่น ๆ ที่คล้ายกัน) ในเอกสารทางเทคนิคดั้งเดิมจาก Intel ไมโครคอนโทรลเลอร์ทั้งหมดของตระกูล MCS-51 ถูกจัดกลุ่มเป็นกลุ่ม ("Product Line") ซึ่งแต่ละอันจะรวมคริสตัลเวอร์ชันที่ใกล้เคียงที่สุดในแง่ของการทำงานและพารามิเตอร์ทางไฟฟ้า เนื่องจากชื่อของ microcircuits ของกลุ่มหนึ่งแตกต่างกันเล็กน้อย ดังนั้นเพื่อกำหนดแต่ละกลุ่มจึงใช้สัญลักษณ์ทั่วไปซึ่งเกิดขึ้นจากการทำเครื่องหมายของ microcircuits เฉพาะโดยแทนที่อักขระที่แตกต่างกันด้วย "X" ดังนั้นกลุ่มไมโครคอนโทรลเลอร์ต่อไปนี้สามารถแยกแยะได้ 1. กลุ่ม 8X5X (8051 Product Line และ 8052 Product Line): 8031AN, 8051AN, 8751H, 8051AHP, 8751H-8, 8751VN, 8032AN, 8052AN, 8752VN. 2. กลุ่ม8ХС51 (80С51 Product Line): 80С31ВН, 80С51ВН, 87С51 3. กลุ่ม8ХС5Х (8ХС52/54/58 Product Line): 80С32, 80С52, 87С52, 80С54, 87С54, 80С58, 87С58. 4. กลุ่ม 8XC51FX (8XC51FA/FB/FC Product Line): 80C51FA, 83C51FA, 87C51FA, 83C51FB, 87C51FB, 83C51FC, 87C51FC. 5. กลุ่ม 8XL5X (8XL52/54/58 Product Line): 80L52, 87L52, 80L54, 87L54, 80L58, 87L58. 6. กลุ่ม 8XL51FX (8XL51FA/FB/FC Product Line): 80L51FA, 83L51FA, 87L51FA, 83L51FB, 87L51FB, 83L51FC, 87L51FC. 7. กลุ่ม 8XC51RX (สายผลิตภัณฑ์ 8XC51RA/RB/RC): 80C51RA, 83C51RA, 87C51RA, 83C51RB, 87C51RB, 83C51RC, 87C51RC 8. กลุ่ม 8XC51GB (สายผลิตภัณฑ์ 8XC51GX): 80C51GB, 83C51GB, 87C51GB 9. กลุ่ม 8XC152JX (8XC152 Product Line): 80C152JA, 83C152JA, 80C152JB, 80C152JC, 83C152JC, 80C152JD. 10. กลุ่ม 8XC51SL (สายผลิตภัณฑ์ 8XC51SL): 80C51SL-BG, 81C51SL-BG, 83C51SL-BG, 80C51-AH, 81C51SL-AH, 83C51SL-AH, 87C51SL-AH, 80C51SL-AL, 81C51SL-AL, 83C51SL-AL, 87C51SL-AL. ไมโครคอนโทรลเลอร์กลุ่มแรกประกอบด้วยรุ่นน้องของครอบครัว ซึ่งใช้เทคโนโลยี n-MOS และไม่แนะนำให้ใช้ในการพัฒนาใหม่ ส่วนกลุ่มอื่นๆ ทั้งหมดผลิตขึ้นโดยใช้เทคโนโลยี CMOS ที่ทันสมัย ปัจจุบันไมโครเซอร์กิตของกลุ่มที่สอง สาม และสี่เป็นตัวแทนของตระกูล MCS-51 แบบคลาสสิก กลุ่มที่ห้าและกลุ่มที่หกประกอบด้วยคริสตัลรุ่น 3 โวลต์ (แรงดันต่ำ) Crystals ของกลุ่มที่เจ็ดนั้นติดตั้ง Extended RAM (Expanded RAM) ซึ่งมีขนาด 512 ไบต์ ไมโครเซอร์กิตของกลุ่มที่แปด เก้า และสิบเป็นไมโครคอนโทรลเลอร์ที่เชี่ยวชาญในการใช้งาน (เฉพาะแอปพลิเคชัน) แอปพลิเคชั่นในปัจจุบันจำนวนมากต้องการไมโครคอนโทรลเลอร์ที่มีประสิทธิภาพสูงซึ่งใช้ความสามารถในการระบุแอดเดรสขั้นสูง สถาปัตยกรรมการลงทะเบียน RAM ภายในขนาดใหญ่ และพื้นที่สแต็ก และรองรับการเขียนโปรแกรมภาษาระดับสูงอย่างมีประสิทธิภาพ ไมโครคอนโทรลเลอร์เหล่านี้รวมถึงไมโครคอนโทรลเลอร์สถาปัตยกรรมใหม่ของตระกูล MCS-5 และ MCS-251 ซึ่ง Intel เปิดตัวในปี 2538 องค์ประกอบการทำงานและคุณสมบัติหลักของไมโครคอนโทรลเลอร์ MCS-51/MCS-251 มีให้ในภาคผนวก 6 2. ลักษณะสำคัญของแบบจำลองพื้นฐานของตระกูลไมโครคอนโทรลเลอร์ MCS-51 โมเดลพื้นฐานของไมโครคอนโทรลเลอร์ตระกูล MCS-51 และพื้นฐานสำหรับการดัดแปลงที่ตามมาทั้งหมดคือไมโครคอนโทรลเลอร์ I-8051 คุณสมบัติหลักมีดังนี้: ซีพียูแปดบิตที่ปรับให้เหมาะสมสำหรับฟังก์ชั่นการควบคุม เครื่องกำเนิดนาฬิกาในตัว พื้นที่ที่อยู่หน่วยความจำโปรแกรม - 64 K; พื้นที่ที่อยู่หน่วยความจำข้อมูล - 64 K; หน่วยความจำโปรแกรมภายใน - 4 K; หน่วยความจำข้อมูลภายใน - 128 ไบต์; คุณสมบัติเพิ่มเติมสำหรับการดำเนินการพีชคณิตแบบบูล (การดำเนินการระดับบิต); 32 เส้น I/O แบบสองทิศทางและระบุแอดเดรสแยกกันได้; ตัวจับเวลา/ตัวนับมัลติฟังก์ชั่น 2 x 16 บิต; ตัวรับส่งสัญญาณแบบอะซิงโครนัสฟูลดูเพล็กซ์; ระบบอินเตอร์รัปต์เวกเตอร์ที่มีสองระดับความสำคัญและหกแหล่งที่มาของเหตุการณ์ บล็อกไดอะแกรมของ I-8051 แสดงในรูปที่ 1 การกำหนดพินของ microcircuit จะแสดงในรูปที่ 2 อินเตอร์รัปต์ภายนอก อินเตอร์รัปต์ 128 ไบต์ T/C 0 ตัวนับ 4K ROM ควบคุม RAM T/C 1 อินพุต CPU BUS 4 I/O Serial OSC ควบคุม พอร์ต พอร์ต P0 P1 P2 P3 T D R D ที่อยู่/ข้อมูล รูปที่ 1 บล็อกไดอะแกรมของ I-8051 ซีรีส์ MCS-51 ทั้งหมดมีสถาปัตยกรรมฮาร์วาร์ด กล่าวคือ แยกโปรแกรมและพื้นที่ที่อยู่หน่วยความจำข้อมูล การจัดหน่วยความจำแสดงในรูปที่ 3 จำนวนหน่วยความจำโปรแกรมภายใน (แบบประจำ) (ROM, EPROM หรือ OTP ROM) ที่อยู่บนชิป ขึ้นอยู่กับประเภทของไมโครเซอร์กิต อาจเป็น 0 (ไม่มี ROM), 4K (ชิปฐาน), 8K, 16K หรือ 32K หากจำเป็น ผู้ใช้สามารถขยายหน่วยความจำของโปรแกรมโดยติดตั้ง ROM ภายนอก การเข้าถึง ROM ภายในหรือภายนอกนั้นพิจารณาจากค่าของสัญญาณที่พิน EA (การเข้าถึงภายนอก): EA=Vcc (แรงดันไฟจ่าย) - การเข้าถึง ROM ภายใน EA=Vss (ศักยภาพภาคพื้นดิน) - การเข้าถึง ROM ภายนอก สำหรับชิป ROMless พิน EA จะต้องเชื่อมต่อกับ Vss อย่างถาวร ROM อ่านแฟลชภายนอก - PS EN (Program Store Enable) ถูกสร้างขึ้นเมื่อมีการเข้าถึงหน่วยความจำโปรแกรมภายนอกและไม่ทำงานระหว่างการเข้าถึง ROM บนชิป 7 พื้นที่ที่อยู่ต่ำของหน่วยความจำโปรแกรมถูกใช้โดยระบบขัดจังหวะสถาปัตยกรรมชิป 8051 ให้การสนับสนุนแหล่งสัญญาณขัดจังหวะห้าแหล่ง: การขัดจังหวะภายนอกสองครั้ง สองขัดจังหวะจากตัวจับเวลา; ขัดจังหวะจากพอร์ตอนุกรม P1.0 1 40 Vcc P1.1 2 39 P0 0 (AD0) P1.2 3 38 P0.1 (AD1) P1.3 4 37 P0.2 (AD2) P1.4 5 36 P0.3 (AD3) P1.5 6 35 P0.4 (AD4) P1 6 7 34 P0.5 (AD5) P1.7 8 33 P0.6 (AD6) รีเซ็ต 9 32 P0.7 (AD7) (RD) P3.0 10 31 EA/Vpp (TD) P3.1 11 30 ALE/ PROG (INT0) P3.2 12 29 PSEN (INT1) P3.3 13 28 P2.7 (A15) (T0) P3.4 14 27 P2.6 (A14) (T1) P3.5 15 26 P2.5 ( A13) (WR) P3.6 16 25 P2.4 (A12) (RD) P3.7 17 24 P2.3 (A11) XTAL2 18 23 P2.2 (A10) XTAL1 19 22 P2.1 (A9) กับ 20 21 P2.0 (A8) รูปที่ 2 การกำหนดพิน I-8051 หน่วยความจำโปรแกรม (อ่าน) หน่วยความจำข้อมูล (อ่าน/เขียน) FFFFH ROM ภายนอก FFFFH หน่วยความจำภายนอก @DPTR RD ข้อมูล PSEN WR @PC MOVC EA=0 หน่วยความจำภายใน @DPTR ข้อมูล @PC ภายนอก ภายใน FFH ด้านบน 128 SFR MOVX ROM ROM 80H EA=0 0000H EA=1 ต่ำกว่า 128 00H 0000H PSEN รูปที่ 3 การจัดระเบียบหน่วยความจำของตระกูล MCS-51 8 รูปที่ 4 แสดงแผนที่พื้นที่ด้านล่างของหน่วยความจำโปรแกรม หน่วยความจำโปรแกรม ROM 0033H 002BH พอร์ตอนุกรม 0023H Vector Timer1 001BH ขัดจังหวะ EINT1 0013H Timer0 000BH EINT0 0003H ที่อยู่เริ่มต้น 0000H (รีเซ็ต) รูปที่ 4 หน่วยความจำโปรแกรม ที่อยู่ของเวกเตอร์ขัดจังหวะอยู่ที่ช่วง 8 ไบต์: - 0003H อินเตอร์รัปต์ภายนอก 0 (อินเตอร์รัปต์ภายนอก 0) - เอาต์พุต IN T 0 ; - 000BH ขัดจังหวะจากตัวจับเวลา 0 (โดยตัวจับเวลาโอเวอร์โฟลว์แฟล็ก - T F 0); - 0013H อินเตอร์รัปต์ภายนอก 1 (อินเตอร์รัปต์ภายนอก 1) - เอาต์พุต IN T 1; - 001BH อินเตอร์รัปต์จากตัวจับเวลา 1 (โดยแฟล็กโอเวอร์โฟลว์ตัวจับเวลา - T F 1); - 0023H อินเตอร์รัปต์พอร์ตอนุกรม (Serial Interrupt = รับ Interrupt หรือ Transmit Interrupt); ฯลฯ หน่วยความจำข้อมูลแยกจากหน่วยความจำของโปรแกรม ในพื้นที่นี้ สามารถระบุ RAM ภายนอก 64K ได้ เมื่อเข้าถึงหน่วยความจำข้อมูลภายนอก ไมโครคอนโทรลเลอร์ CPU จะสร้างสัญญาณการอ่าน (RD) หรือการเขียน (W R) ที่สอดคล้องกัน การโต้ตอบกับหน่วยความจำข้อมูลภายในจะดำเนินการที่ระดับคำสั่ง ในขณะที่สัญญาณ RD และ WR จะไม่ถูกสร้างขึ้น หน่วยความจำโปรแกรมภายนอกและหน่วยความจำข้อมูลภายนอกสามารถรวมกันได้โดยการรวมสัญญาณ R D และ PS EN ในรูปแบบตรรกะ AND เพื่อสร้างหน่วยความจำภายนอก (โปรแกรม/ข้อมูล) แฟลช หน่วยความจำข้อมูลภายใน 128 ไบต์ที่ต่ำกว่า (128 ต่ำกว่า) มีอยู่ในชิป MCS-51 ทั้งหมด และแสดงไว้ในรูปที่ 5 32 ไบต์แรกคือ 4 ธนาคาร (Register Bank) จาก 8 register (R7...R0) การลงทะเบียน R0 และ R1 ในธนาคารใดธนาคารหนึ่งสามารถใช้เป็นการลงทะเบียนที่อยู่ทางอ้อมได้ 16 ไบต์ที่อยู่ถัดจากธนาคารการลงทะเบียนสร้างบล็อกของพื้นที่บิตแอดเดรสได้ ชุดคำสั่ง MCS-51 ประกอบด้วยการทำงานของบิตที่หลากหลาย และ 128 บิตในบล็อกนี้กำหนดแอดเดรสได้โดยตรงและแอดเดรสมีตั้งแต่ 00H ถึง 7FH ไบต์ทั้งหมดในหน่วยความจำครึ่งล่าง 128 ไบต์สามารถระบุได้โดยตรงหรือโดยอ้อม หน่วยความจำ RAM ขนาด 128 ไบต์บน (128 ตัวบน) ไม่มีอยู่ในชิป I-8051 แต่มีให้ในชิปเวอร์ชัน RAM 256 ไบต์ ในกรณีนี้ พื้นที่ "Upper 128" จะใช้ได้เฉพาะกับที่อยู่ทางอ้อมเท่านั้น พื้นที่ SFR (Special Function Register) จะใช้ได้เฉพาะกับที่อยู่โดยตรงเท่านั้น ตำแหน่งของรีจิสเตอร์ฟังก์ชันพิเศษในพื้นที่ SFR แสดงในรูปที่ 6 ซึ่งรวมถึงพอร์ตรีจิสเตอร์ ตัวจับเวลา การควบคุมอุปกรณ์ต่อพ่วง และอื่นๆ 9 7FH พื้นที่ระบุเวลาที่ดึงได้ 30H (ทางตรง, ทางอ้อม) 2FH 7FH 7EH 7DH 7CH 7BH 7AH 79H 78H 2EH 77H 76H 75H 74H 73H 72H 71H 0FH 73H 71H 71H 77H 71H 71H 76H 75H 74H 0FH 0FH 0FH 0FH 0FH 07H 06H 05H 04H 03H 02H 01H 00H 1FH RB3 18H 17H RB2 10H 0FH RB1 08H 07H SP หลังจากรีเซ็ต 00H RB0(R7+R0) รูปที่ 5 RAM ภายใน 128 ไบต์ด้านล่าง การกำหนดที่อยู่บิต 8 ไบต์ F8H FFH F0H B F7H E8H EFH E0H ACC E7H D8H DFH D0H PSW D7H C8H CFH C0H C7H B8H IP BFH B0H P3 B7H A8H IE AFH A0H P2 A7H 98F97H SCON SBFL DPH PCO 87H N 0/8 1/9 2/A 3/B 4/C 5/D 6/E 7/F รูปที่ 6 ตำแหน่งของรีจิสเตอร์ฟังก์ชันพิเศษในพื้นที่ SFR สำหรับ 16 แอดเดรสในพื้นที่ SFR สามารถใช้การกำหนดแอดเดรสทั้งแบบไบต์และบิตได้ สำหรับการลงทะเบียนแอดเดรสแบบบิต ที่อยู่ฐานสิบหกจะลงท้ายด้วย "0H" หรือ "8H" ที่อยู่บิตในพื้นที่นี้มีค่าตั้งแต่ 80H ถึง FFH คริสตัลทั้งชุดของตระกูล MCS-51 มีชุด SFR พื้นฐาน เช่นเดียวกับในชิป I-8051 ซึ่งอยู่ที่ที่อยู่เดียวกัน อย่างไรก็ตามในคริสตัลซึ่งแสดงถึงการพัฒนาต่อไปของตระกูลในภูมิภาค SFR การลงทะเบียนใหม่จะถูกเพิ่มเพื่อขยาย 10