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

ไมโครคอนโทรลเลอร์ MCS-51 บล็อกไดอะแกรม ALU หน่วยความจำข้อมูล ไมโครคอนโทรลเลอร์ของตระกูล mcs51 วิธีสร้างพอร์ตเพื่อรับ mcs 51

เวอร์ชันพื้นฐาน MCS-51 ข้อมูลโดยย่อ ไมโครคอนโทรลเลอร์ 8 บิตสมัยใหม่ (MC) มีทรัพยากรการควบคุมตามเวลาจริงดังกล่าว ซึ่งก่อนหน้านี้เคยใช้เลย์เอาต์หลายชิปราคาแพงในรูปแบบของบอร์ดไมโครคอมพิวเตอร์แยกต่างหาก กล่าวคือ:

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

● รวมอุปกรณ์ทั้งหมด (โปรเซสเซอร์, ROM, RAM, พอร์ตอินพุต/เอาต์พุต, ระบบอินเตอร์รัปต์, เครื่องมือประมวลผลข้อมูลบิต ฯลฯ) ที่จำเป็นสำหรับการติดตั้งระบบควบคุมไมโครโปรเซสเซอร์ด้วยการกำหนดค่าขั้นต่ำ ในปี 1970 บริษัท อินเทลพัฒนาและเชี่ยวชาญการผลิตเชิงพาณิชย์ของไมโครคอนโทรลเลอร์ 8 บิต MCS-48 ที่รวมเข้าด้วยกันด้วยคุณสมบัติทั่วไปหลายประการ (ความจุหลัก ระบบคำสั่ง ชุดบล็อกการทำงานพื้นฐาน ฯลฯ) รุ่นพื้นฐานของตระกูลนี้ประกอบด้วย:

● โปรเซสเซอร์ 8 บิต;

● หน่วยความจำโปรแกรมภายใน (1/2/4K ไบต์);

● หน่วยความจำข้อมูลภายใน (64/128/256 ไบต์);

● มากถึง 27 สาย I/O ภายนอกและ 16 สาย;

● ตัวจับเวลา 8 บิตหนึ่งตัว;

● ระบบอินเตอร์รัปต์ระดับเดียวพร้อมแหล่งที่มาของคำขอสองแห่ง ในปี 1980 บริษัทเดียวกันได้พัฒนาไมโครคอนโทรลเลอร์ MCS-51 แปดบิตตระกูลใหม่ ซึ่งเข้ากันได้กับสถาปัตยกรรมของตระกูล MCS-48 แต่มีความสามารถที่กว้างขึ้น

สถาปัตยกรรมของตระกูล MCS-51 ประสบความสำเร็จอย่างมากจนยังคงเป็นหนึ่งในมาตรฐานสำหรับ MK แบบ 8 บิตจนถึงทุกวันนี้ ดังนั้น MC ของตระกูลนี้ซึ่งใช้กันอย่างแพร่หลายในระบบควบคุมที่ค่อนข้างง่ายจึงได้รับเลือกให้เป็นเป้าหมายของการศึกษา

เครื่องมือเตรียมโปรแกรมต่างๆ (คอมไพเลอร์ ฮาร์ดแวร์-ซอฟต์แวร์จำลอง ฯลฯ) ได้รับการพัฒนาสำหรับตระกูล MCS-51 และมีไลบรารีรูทีนย่อยมาตรฐานจำนวนมาก ตระกูลนี้รวมถึงการดัดแปลงไมโครเซอร์กิต (รุ่นชิป) ของไมโครคอนโทรลเลอร์ต่างๆ บทความในส่วนนี้จะกล่าวถึงรายละเอียดที่เพียงพอเกี่ยวกับไมโครคอนโทรลเลอร์รุ่นพื้นฐานของตระกูล MCS-51 (8051 microcircuit ที่สอดคล้องกับ KP1816BE51 อะนาล็อกในประเทศ) ที่ง่ายที่สุดในแง่ของโครงสร้างและการทำงานและในแง่ของความเข้าใจ

ไมโครเซอร์กิตรุ่นต่อมาในขณะที่ยังคงความเข้ากันได้กับรุ่นพื้นฐาน ต่างจากเทคโนโลยีการผลิตที่ได้รับการปรับปรุง พารามิเตอร์ทางไฟฟ้า ฮาร์ดแวร์เพิ่มเติมและฟังก์ชันการทำงาน บทความต่อไปนี้มีเนื้อหาเกี่ยวกับคุณสมบัติโครงสร้างและการใช้งานของการดัดแปลงที่ตามมาของไมโครวงจรตระกูล MCS-51
บล็อกไดอะแกรมทั่วไปของ MCS–51 องค์ประกอบของ MC ซึ่งเป็นแผนภาพบล็อกทั่วไปที่แสดงในรูปที่ 7.1.1 รวมถึง:

● ซีพียูหน่วยประมวลผลกลาง 8 บิต ประกอบด้วย อลู, อุปกรณ์ควบคุม uuและตัวสร้างที่อยู่ F;

● ROM ที่ปิดบังด้วยความจุ 4K ไบต์สำหรับจัดเก็บโปรแกรม

● 128 ไบต์ RAM สำหรับการจัดเก็บข้อมูล;

● สี่พอร์ตที่ตั้งโปรแกรมได้ Р0–Р3 สำหรับข้อมูลอินพุต-เอาต์พุต

● บล็อกอินเทอร์เฟซแบบอนุกรม BPI สำหรับการแลกเปลี่ยนข้อมูลกับอุปกรณ์ภายนอกผ่านสายสองสาย

● บล็อกตัวจับเวลา/เคาน์เตอร์ BT/C เพื่อรักษาโหมดเรียลไทม์

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

แผนภาพยังไม่แสดงวงจรควบคุม การแลกเปลี่ยนข้อมูลทวิภาคีระหว่างบล็อกจะดำเนินการผ่าน 8-bit . ภายใน บัสข้อมูล SD-8.

โดยภายใน 16 บิต ที่อยู่รถบัส SHA-16 ที่อยู่ที่สร้างขึ้นใน CPU จะแสดงใน ROM (ที่อยู่ 12 บิต) และใน RAM (8 บิตต่ำ)

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

สำหรับส่วนขยายทางลอจิคัลของอินเตอร์เฟส จะใช้การรวมกันของฟังก์ชันต่างๆ ของพอร์ตไลน์ ตัวอย่างเช่นในรูปที่ 7.1.1 เส้นประแสดงเส้นของพอร์ต P3 กำลังดำเนินการ ทางเลือกฟังก์ชั่นการส่งสัญญาณควบคุม วัตถุประสงค์ที่จะกล่าวถึงด้านล่าง ในการสร้างเครื่องกำเนิดสัญญาณนาฬิกาภายในเครื่องสะท้อนเสียงควอตซ์และตัวเก็บประจุสองตัวจะเชื่อมต่อกับเอาต์พุตของ microcircuit MK (รูปที่ 7.1.1) แทนที่จะใช้เครื่องกำเนิดสัญญาณนาฬิกาภายใน ออสซิลเลเตอร์ภายนอกสามารถใช้สำหรับการซิงโครไนซ์ได้ การกำหนดกราฟิกทั่วไปของ microcircuit MK แสดงในรูปที่ 7.1.2 การกำหนดและวัตถุประสงค์ของข้อสรุป - ในตาราง 7.1.1. พิจารณาบล็อกการทำงานของ MK และหลักการทำงาน อุปกรณ์เลขคณิต-ลอจิคัล หน่วยเลขคณิต-ลอจิคัลได้รับการออกแบบมาเพื่อดำเนินการคำนวณ (รวมถึงการคูณและการหาร) และการดำเนินการเชิงตรรกะบนตัวถูกดำเนินการแปดบิต เช่นเดียวกับการดำเนินการของการเปลี่ยนแปลงเชิงตรรกะ การปรับค่าศูนย์ การตั้งค่า ฯลฯ แผนภาพบล็อกของ ALU จะแสดงในรูปที่ 7.1.3.

ALU รวมถึง

● แปดบิตขนานกัน แอดเดอร์ประเภทชุดค่าผสม SM พร้อมการถ่ายโอนตามลำดับ การคำนวณ (การบวกและการลบ) และการดำเนินการเชิงตรรกะ (การบวก การคูณ ความไม่เท่าเทียมกัน และเอกลักษณ์)

แบตเตอรี่เอ,จัดเตรียมฟังก์ชันของการลงทะเบียนเลขคณิตหลัก

ลงทะเบียน B ใช้ในการดำเนินการของการคูณและการหารหรือเป็นการลงทะเบียน super-operational เพิ่มเติมซึ่งกำหนดโดยผู้ใช้

ทะเบียน(ไม่มีโปรแกรม) การจัดเก็บชั่วคราวРВХ1, РВХ2 มีไว้สำหรับรับและจัดเก็บตัวถูกดำเนินการในช่วงระยะเวลาของการดำเนินการ

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

โปรแกรมสถานะ word register PSW แก้ไขสถานะของ ALU หลังจากดำเนินการแล้ว ในตาราง. 7.1.2 ให้ข้อมูลเกี่ยวกับการกำหนดบิตให้กับแต่ละหลักของการลงทะเบียน PSW อุปกรณ์ควบคุม หน่วยควบคุมซีพียู (CU) ตั้งใจเพื่อประสานการทำงานร่วมกันของโหนด MK ทั้งหมดโดยใช้สัญญาณนาฬิกาและสัญญาณควบคุมที่สร้างขึ้น ประกอบด้วย (รูปที่ 7.1.4):

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

แต่ละรอบเครื่องมี หกรัฐ S1–S6 แต่ละรัฐประกอบด้วย สองเฟส P1, P2, ระยะเวลาซึ่งเป็นช่วงเวลาการสั่นของตัวสร้างนาฬิกา T 0SC .

ระยะเวลาของรอบเครื่องคือ 12T 0SC รอบเครื่องจักรทั้งหมดจะเหมือนกัน เริ่มด้วยเฟส S1P1 และสิ้นสุดด้วยเฟส S6P2

นอกเหนือจากพัลส์นาฬิกาแล้ว อุปกรณ์นาฬิกาในแต่ละรอบเครื่องยังสร้างสัญญาณแฟลชสอง (บางครั้งหนึ่ง) ของไบต์ต่ำของที่อยู่ ALE เป็นพัลส์บวกในเฟส S1P2-S2P1 และ S4P2-S5P1 ไดอะแกรมเวลาในรูป 7.1.5 แสดงการจัดระบบรอบเครื่องจักร

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

● ตรรกะอินพุต-เอาท์พุตของ LVV สำหรับรับและส่งสัญญาณที่ให้การแลกเปลี่ยนข้อมูลระหว่าง MC และอุปกรณ์ภายนอกผ่านพอร์ต Р0–Р3;

● การลงทะเบียน PCON ซึ่งมีบิต SMOD ที่เปิดใช้งานเดียวในตำแหน่ง PCON.7 เพื่อเพิ่มอัตราข้อมูลของพอร์ตอนุกรมเป็นสองเท่า บิตที่เหลือจะถูกสงวนไว้สำหรับใช้ในอนาคต
เครื่องกำเนิดที่อยู่ Address shaper (FA) หรือตัวนับคำสั่ง PC ตั้งใจเพื่อสร้างที่อยู่หน่วยความจำโปรแกรม 16 บิตปัจจุบันและที่อยู่หน่วยความจำข้อมูลภายนอก 8/16 บิต ประกอบด้วย (รูปที่ 7.1.6):

● 16 บิต กันชน B ซึ่งสื่อสารระหว่างบัสข้อมูล 8 บิตของ SD และบัสภายใน 16 บิต (IS) ของเครื่องกำเนิดที่อยู่

● รูปแบบการเพิ่ม SI สำหรับการเพิ่มค่าของที่อยู่หน่วยความจำโปรแกรมปัจจุบันทีละหนึ่ง

● ลงทะเบียนเพื่อจัดเก็บที่อยู่ปัจจุบันของคำสั่ง PTA ที่มาจาก SI;

● การลงทะเบียนตัวชี้ข้อมูล DPTR , ประกอบด้วยรีจิสเตอร์ 8 บิตสองตัว DPH และ DPL ทำหน้าที่จัดเก็บที่อยู่ 16 บิตของหน่วยความจำข้อมูลภายนอก และสามารถใช้เป็น RON ที่เข้าถึงซอฟต์แวร์ได้อิสระสองตัว

● การลงทะเบียนเครื่องกำเนิดที่อยู่ RFA สำหรับการจัดเก็บที่อยู่หน่วยความจำโปรแกรม 16 บิตสำหรับผู้บริหารหรือที่อยู่หน่วยความจำข้อมูลภายนอก 8/16 บิต การลงทะเบียนนี้ยังใช้ในการถ่ายโอนข้อมูลผ่านพอร์ต P0 ไปยังอุปกรณ์ภายนอกเมื่อดำเนินการคำสั่ง MOVX @Rm, A และ MOVX @DPRT, A

หน่วยความจำข้อมูล หน่วยความจำข้อมูล ตั้งใจสำหรับรับ จัดเก็บ และออกข้อมูลที่ใช้ในกระบวนการทำงานของโปรแกรม หน่วยความจำภายใน (ถิ่นที่อยู่) (รูปที่ 7.1.7) ของข้อมูลประกอบด้วย RAM ที่มีความจุ 128 ไบต์ ตัวชี้สแต็กเอสพี ทะเบียนที่อยู่ RAM RA และ ตัวถอดรหัสดช. ตัวชี้สแต็ก SP คือรีจิสเตอร์ 8 บิตที่รับและจัดเก็บที่อยู่ของตำแหน่งสแต็กที่เข้าถึงล่าสุด หลังจากรีเซ็ตแล้ว ตัวชี้สแต็กจะถูกตั้งค่าเป็นแอดเดรส 07H ซึ่งสอดคล้องกับจุดเริ่มต้นของสแต็กด้วยแอดเดรส 08H การลงทะเบียนที่อยู่ RA ร่วมกับตัวถอดรหัส Dsh ช่วยให้สามารถเข้าถึงเซลล์หน่วยความจำที่ต้องการซึ่งมีข้อมูลไบต์หรือบิต

MK ให้ความสามารถในการเพิ่มจำนวนหน่วยความจำข้อมูลได้ถึง 64 KB โดยการเชื่อมต่อ อุปกรณ์จัดเก็บข้อมูลภายนอกตัวอย่างเช่นในรูปที่ 7.1.8 แสดงการเพจของหน่วยความจำข้อมูลภายนอก VPD ที่มีความจุ 2K ไบต์โดยใช้คำแนะนำเช่น MOVX @ Rm(ม. = 0; 1). ในกรณีนี้ พอร์ต P0 ทำงานเป็นมัลติเพล็กซ์แอดเดรส/บัสข้อมูล พอร์ต P2 สามบรรทัดใช้เพื่อระบุเพจ RAM ภายนอก และห้าบรรทัดที่เหลือสามารถใช้เป็นบรรทัด I/O ได้
ในรูป 7.1.9 แสดงไดอะแกรมเวลาของรอบการอ่านและเขียนเมื่อ MK ทำงานกับ RAM ภายนอก ไดอะแกรมระบุว่า:

● PCN - ไบต์สูงของตัวนับคำสั่ง PC;

● DPL, DPH - ไบต์ต่ำและสูงของการลงทะเบียนตัวชี้ข้อมูล DPTR ซึ่งใช้เป็นการลงทะเบียนที่อยู่ทางอ้อมในคำสั่ง MOVX @DPTR,A และ MOVX A,@DPTR

● P2 SFR - สลักพอร์ต P2;

● Rm (m = 0, 1) - การลงทะเบียนที่ใช้ในคำสั่ง MOVX @Rm, A และ MOVX A, @Rm เป็นการลงทะเบียนที่อยู่ทางอ้อม

● Z - สถานะความต้านทานสูง

● D - ช่วงเวลาที่ข้อมูลจากพอร์ต P0 ถูกป้อนลงในไมโครคอนโทรลเลอร์ หน่วยความจำโปรแกรม หน่วยความจำโปรแกรมออกแบบมาเพื่อจัดเก็บโปรแกรม มีพื้นที่แอดเดรสของตัวเอง (แยกจากหน่วยความจำข้อมูล) และเป็นแบบอ่านอย่างเดียว ประกอบด้วยตัวถอดรหัส Dsh และ ROM (รูปที่ 7.1.10) หน่วยความจำโปรแกรมได้รับการแก้ไขโดยใช้ตัวนับพีซีแบบ 16 บิต ดังนั้นความจุสูงสุดคือ 64K ไบต์ หน่วยความจำโปรแกรมภายในประกอบด้วย ROM ที่มีความจุ 4K ไบต์และตัวถอดรหัส 12 บิต หน่วยความจำภายนอกเชื่อมต่อตามแผนภาพในรูปที่ 7.1.11. หากใช้ 0 V กับพิน ¯EA ของ MCU (ดังแสดงในรูปที่ 7.1.11) หน่วยความจำโปรแกรมภายในจะถูกปิดใช้งาน การเข้าถึงหน่วยความจำทั้งหมดเริ่มต้นที่ที่อยู่ 0000h เมื่อพิน ¯EA เชื่อมต่อกับแหล่งจ่ายไฟ การเข้าถึงหน่วยความจำโปรแกรมภายในที่ที่อยู่ 0000h–FFFFh และหน่วยความจำโปรแกรมภายนอกที่ที่อยู่ 0FFFh–FFFFh จะเกิดขึ้นโดยอัตโนมัติ

หากต้องการอ่านหน่วยความจำโปรแกรมภายนอกของ MK สัญญาณ ¯PSEN จะถูกสร้างขึ้น เมื่อทำงานกับหน่วยความจำภายใน จะไม่มีการใช้สัญญาณการอ่าน เมื่อเข้าถึงหน่วยความจำโปรแกรมภายนอก ที่อยู่ 16 บิตจะถูกสร้างขึ้นเสมอ ไบต์ต่ำของที่อยู่จะถูกส่งผ่านพอร์ต P0 ในช่วงครึ่งแรกของรอบเครื่องและได้รับการแก้ไขโดยการตัด ALE แฟลชในการลงทะเบียน ในช่วงครึ่งหลังของรอบ พอร์ต P0 ใช้เพื่อป้อนไบต์ข้อมูล จากหน่วยความจำภายนอกเข้าสู่ MCU

ไบต์สูงของที่อยู่จะถูกส่งผ่านพอร์ต P2 ตลอดเวลาที่มีการเข้าถึงหน่วยความจำ

ไดอะแกรมกำหนดเวลาของรอบการอ่านและเขียนระหว่างการทำงานของ MK พร้อม RAM ภายนอกแสดงในรูปที่ 7.1.12.
ไดอะแกรมระบุว่า:

● PCL OUT - เอาต์พุตไบต์ต่ำของตัวนับคำสั่ง PC;

● PCN OUT - การออกไบต์สูงของตัวนับคำสั่ง PC;

● DPH คือไบต์สูงของการลงทะเบียนตัวชี้ข้อมูล DPTR ซึ่งใช้เป็นการลงทะเบียนที่อยู่ทางอ้อมในคำสั่ง MOVX @DPTR,A และ MOVX A,@DPTR

● P2 SFR - สลักพอร์ต P2;

● INS IN - อินพุตของคำสั่ง (คำสั่ง) ไบต์จากหน่วยความจำโปรแกรม

● ADDR OUT - การออกไบต์ต่ำของที่อยู่หน่วยความจำข้อมูลภายนอกจากการลงทะเบียน Rm (m = 0, 1) หรือจากการลงทะเบียน DPL (DPTR การลงทะเบียนที่ต่ำกว่า) พอร์ต I/O การกำหนดพอร์ตพอร์ต P0, P1, P2, P3 ตั้งใจเพื่อแลกเปลี่ยนข้อมูลระหว่าง MK และอุปกรณ์ภายนอกตลอดจนทำหน้าที่ดังต่อไปนี้:

● ไบต์ต่ำของแอดเดรส А7…A0 ถูกส่งออกผ่านพอร์ต Р0; ไบต์ของข้อมูลถูกส่งออกจาก MK และป้อนลงใน MK เมื่อทำงานกับหน่วยความจำโปรแกรมภายนอกและหน่วยความจำข้อมูลภายนอก (พร้อมการแบ่งเวลา)

● ที่อยู่ไบต์สูง A15…A8 ส่งออกผ่านพอร์ต P2 เมื่อทำงานกับหน่วยความจำโปรแกรมภายนอกและหน่วยความจำข้อมูลภายนอก (เฉพาะเมื่อใช้คำสั่ง MOVX A,@DPTR และ MOVX @DPTR, A);

● สายพอร์ต P3 สามารถใช้เพื่อทำหน้าที่ทางเลือกได้ หากป้อน 1 ในสลักของบรรทัดนี้ มิฉะนั้น 0 จะถูกกำหนดไว้ที่เอาต์พุตของสาย ฟังก์ชันทางเลือกของเอาต์พุตพอร์ต P3 ระบุไว้ในตาราง 7.1.3.

คุณสมบัติแผนผังของพอร์ต

ในรูป 7.1.13 แสดงไดอะแกรมสำหรับหนึ่งช่องสัญญาณของแต่ละพอร์ต MK รวมถึง:

● สลักสำหรับแก้ไขบิตข้อมูลที่ได้รับ

● กำลังขยายเอาต์พุต น้ำตก(คนขับ);

● โหนด การเชื่อมต่อกับขั้นตอนการส่งออก (ยกเว้น P2);

● วงจรสำหรับส่งข้อมูลบิตข้อมูลจากด้านออกของพอร์ต ซึ่งประกอบด้วยบัฟเฟอร์ B2 และ B3 (สำหรับพอร์ต P4) สลักเป็นแบบ D-flip-flop ที่โอเวอร์คล็อกโดยสัญญาณภายใน "เขียนเพื่อสลัก" ข้อมูลเล็กน้อยจากเอาต์พุตโดยตรงของ D-flip-flop สามารถอ่านได้โดยซอฟต์แวร์ผ่านบัฟเฟอร์ B1 โดยสัญญาณ "Read latch" ไปยังบรรทัดของบัสข้อมูลภายใน (SD) ของ MK

ขั้นตอนการส่งออกพอร์ต P0 เป็นอินเวอร์เตอร์ซึ่งมีคุณสมบัติที่แสดงให้เห็นว่าโหลดทรานซิสเตอร์ VT2 เปิดเฉพาะเมื่อเข้าถึงหน่วยความจำภายนอก (เมื่อถ่ายโอนที่อยู่และข้อมูลผ่านพอร์ต) ในโหมดอื่นๆ ทั้งหมด โหลดทรานซิสเตอร์จะปิด ดังนั้น ในการใช้ P0 (รูปที่ 7.1.13, a) เป็นพอร์ตเอาท์พุตเอนกประสงค์ ตัวต้านทานโหลดภายนอกจะต้องเชื่อมต่อกับเอาท์พุต เมื่อเขียน 1 ไปยังสลักพอร์ต ทรานซิสเตอร์อินเวอร์เตอร์ VT1 จะถูกปิด และพินภายนอกของพอร์ต P0.X จะถูกโอนไปยังสถานะความต้านทานสูง ในโหมดนี้ พินพอร์ต P0.X สามารถทำหน้าที่เป็นอินพุตได้ หากพอร์ต P0 ถูกใช้เป็นพอร์ต I/O วัตถุประสงค์ทั่วไป พิน P0.X แต่ละตัวสามารถทำงานแยกกันเป็นอินพุตหรือเอาต์พุตได้ ขั้นตอนการส่งออกพอร์ต P1, P2, P3 (รูปที่ 7.1.13, ข, ค, ง)ทำขึ้นตามวงจรของอินเวอร์เตอร์ที่มีตัวต้านทานโหลดภายในซึ่งใช้เป็นทรานซิสเตอร์ VT2

เพื่อลดเวลาในการเปลี่ยนระหว่างการเปลี่ยนพอร์ตเอาต์พุตจากสถานะ 0 เป็นสถานะ 1 ทรานซิสเตอร์เพิ่มเติม VT3 จะถูกแนะนำควบคู่ไปกับทรานซิสเตอร์โหลด VT2 ทรานซิสเตอร์ VT3 ด้วยความช่วยเหลือขององค์ประกอบในวงจรเกตจะถูกปลดล็อคเป็นเวลาเท่ากับสองช่วงเวลาของการสั่นของออสซิลเลเตอร์คริสตัลหลัก (ระหว่างเฟส S1P1, S2P2 ของรอบเครื่อง) ขั้นตอนการส่งออกพอร์ต P0, P2 (รูปที่ 7.1.13, A, c) โดยใช้มัลติเพล็กเซอร์ MX สามารถเชื่อมต่อกับสลักหรือบัสภายใน "ที่อยู่ / ข้อมูล" และ "ที่อยู่" สเตจเอาต์พุตของพอร์ต P1 (รูปที่ 7.1.13, 6) เชื่อมต่อกับสลักอย่างถาวร

หากพินพอร์ต P3 เป็นเอาต์พุตและสลักมี 1 สเตจเอาต์พุตจะถูกควบคุมโดยสัญญาณภายในของฮาร์ดแวร์ "ฟังก์ชันเอาต์พุตทางเลือก" ซึ่งมีฟังก์ชันทางเลือกที่เกี่ยวข้อง เช่น หนึ่งในสัญญาณ ¯WR, ¯RD หรือ RxD ถูกสร้างขึ้นบนพินภายนอก หากใช้พินพอร์ตเป็นอินพุต สัญญาณทางเลือกที่มาถึง (TxD, ¯INT0, ¯INT1, T0, T1) จะถูกส่งไปยังสายภายใน "Alternative Input Function"

โหมดเขียนพอร์ต

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

โหมดอ่านพอร์ต

คำสั่งอ่านพอร์ตอ่านข้อมูลโดยตรงจากพินภายนอกของพินพอร์ตหรือจากเอาต์พุตแลตช์ ในกรณีแรก บิตข้อมูลจากเอาต์พุตพอร์ตจะถูกอ่านโดยทางโปรแกรมผ่านบัฟเฟอร์ B2 โดยสัญญาณ "อ่านเอาต์พุต" ไปยังบรรทัดของบัสข้อมูลภายใน (SD) ของ MK โปรดทราบว่าสัญญาณ "เขียนเพื่อสลัก", "อ่านสลัก", "หมุดอ่าน" ถูกสร้างขึ้นโดยฮาร์ดแวร์เมื่อมีการดำเนินการคำสั่งที่เกี่ยวข้อง

ในกรณีที่สอง โหมดที่เรียกว่า "อ่าน-แก้ไข-เขียน" ถูกนำมาใช้ ซึ่งคำสั่งจะอ่านสัญญาณสถานะสลัก ปรับเปลี่ยนหากจำเป็น แล้วเขียนกลับไปที่สลัก โหมด Read-Modify-Write ถูกนำมาใช้เมื่อมีการดำเนินการคำสั่งต่อไปนี้: ANL, ORL, XRL, JBC; ซีพีแอล; ไอเอ็นซี; ธ.ค.; ดีเจเอ็นซี; MOV PX, Y; CLR PX.Y; SETB PX, Y.

การอ่านข้อมูลจากสลักเอาท์พุตช่วยขจัดข้อผิดพลาดเมื่อตีความระดับลอจิกบนพินพอร์ต อ่านบทความต่อใน

ในปัจจุบัน บริษัทต่างๆ ได้ผลิตการดัดแปลงและแอนะล็อกจำนวนมากในตระกูลนี้ ทั้งโดย Intel และผู้ผลิตรายอื่น ความถี่สัญญาณนาฬิกาและขนาดหน่วยความจำเพิ่มขึ้นสิบเท่าและเพิ่มขึ้นอย่างต่อเนื่อง นอกจากนี้ยังมีการเสริมชุดโมดูล LSI ในตัวอีกด้วย ADC แบบอาศัยความเร็วสูงถูกสร้างขึ้นในรุ่นที่ทันสมัยจำนวนมากซึ่งมีมากถึง 12 รุ่น และตอนนี้อาจมีส่วนเพิ่มเติม แต่หัวใจของตระกูล MSS51 คือ BIS 8051, 80C51, 8751, 87C51, 8031, 80C31 จาก Intel ซึ่งเป็นตัวอย่างแรกที่เปิดตัวในปี 1980

ไมโครคอนโทรลเลอร์ของตระกูล MCS51 ผลิตโดยใช้เทคโนโลยี n-MOS คุณภาพสูง (ซีรีส์ 8ХХХ อะนาล็อก - ซีรีส์ 1816 ในรัสเซียและเบลารุส) และเทคโนโลยี k-MOS (ซีรีส์ 8ХСХХ อะนาล็อก - ซีรีส์ 1830) อักขระตัวที่สองที่ตามหลัง 8 หมายถึง: 0 - ไม่มี EEPROM บนชิป, 7 - 4K EEPROM พร้อมการลบ UV อักขระตัวที่สาม: 3 - ROM จะตกผลึก 5 - หากไม่มี ROM แสดงว่ามี ROM ที่ปิดบังอยู่บนชิป

ดังนั้น 80S51 จึงเป็น k-MOS LSI ที่มีมาสก์ ROM บนชิป 8031 ​​​​เป็น n-MOS LSI ที่ไม่มีหน่วยความจำโปรแกรม (ROM, EPROM) บนชิป 8751 เป็น n-MOS LSI ที่มีถิ่นที่อยู่ (ตั้งอยู่ บนชิป) RPROM พร้อมการลบรังสีอัลตราไวโอเลต เราจะพิจารณา LSI 8751 ต่อไป หากจำเป็น ให้จองเกี่ยวกับความแตกต่างในวงจรอื่นๆ โดยอ้างอิงพารามิเตอร์ที่เผยแพร่สำหรับ LSI อนุกรมแรก หากจำเป็น คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับการปรับเปลี่ยนที่ทันสมัยทั้งหมดในไดเรกทอรีของบริษัทและเอกสารทางเทคนิค

A. ลักษณะทั่วไปและการกำหนดพิน

ตระกูล MCS51 มีพื้นฐานมาจากการดัดแปลง MK ห้าแบบ (มีคุณสมบัติหลักเหมือนกัน) ความแตกต่างหลักคือการใช้งานหน่วยความจำโปรแกรมและการใช้พลังงาน (ดูตารางที่ 3.1) ไมโครคอนโทรลเลอร์เป็นแบบแปดบิต กล่าวคือ มีคำแนะนำสำหรับการประมวลผลคำแปดบิต มีสถาปัตยกรรมฮาร์วาร์ด ความถี่สัญญาณนาฬิกาสำหรับตัวอย่างพื้นฐานของตระกูลคือ 12 MHz

ตารางที่ 3.1.

ไมโครวงจร

หน่วยความจำโปรแกรมภายใน ไบต์

ประเภทหน่วยความจำโปรแกรม

หน่วยความจำข้อมูลภายใน ไบต์

ความถี่สัญญาณนาฬิกา MHz

การบริโภคในปัจจุบัน mA

MK 8051 และ 80C51 มีหน่วยความจำโปรแกรม ROM ที่ตั้งโปรแกรมมาสก์ได้ โดยมีความจุ 4096 ไบต์ และออกแบบมาเพื่อใช้ในการผลิตจำนวนมาก MK 8751 ประกอบด้วย EPROM 4096 ไบต์พร้อมการลบ UV และสะดวกในขั้นตอนการพัฒนาระบบเมื่อทำการดีบักโปรแกรม รวมถึงเมื่อผลิตเป็นชุดเล็ก ๆ หรือเมื่อสร้างระบบที่ต้องการ

การปรับเป็นระยะ

MK 8031 ​​​​และ 80C31 ไม่มีหน่วยความจำโปรแกรมในตัว เช่นเดียวกับการดัดแปลงที่อธิบายไว้ก่อนหน้านี้ สามารถใช้หน่วยความจำโปรแกรมภายนอกสูงสุด 64 KB และใช้อย่างมีประสิทธิภาพในระบบที่ต้องการหน่วยความจำโปรแกรม ROM ที่ใหญ่กว่าอย่างมาก (มากกว่า 4 KB บนชิป)

MK แต่ละตระกูลมีหน่วยความจำข้อมูลภายในที่มีความจุ 128 ไบต์ โดยมีความเป็นไปได้ในการขยายจำนวนข้อมูล RAM ทั้งหมดสูงสุด 64 KB ผ่านการใช้ RAM IC ภายนอก

    โปรเซสเซอร์แปดบิตกลาง

    หน่วยความจำโปรแกรม 4K (8751 และ 87C51 เท่านั้น);

    หน่วยความจำข้อมูล 128 ไบต์;

    พอร์ตอินพุต-เอาท์พุตที่ตั้งโปรแกรมได้สี่พอร์ต;

    ตัวจับเวลา/ตัวนับมัลติโหมด 16 บิตสองตัว;

    ระบบ autovector ขัดจังหวะด้วยเวกเตอร์ห้าตัวและระดับความสำคัญที่ควบคุมโดยซอฟต์แวร์สองระดับ

    อินเทอร์เฟซแบบอนุกรมรวมถึงตัวรับส่งสัญญาณดูเพล็กซ์สากลที่สามารถทำงานได้ในสี่โหมด

    เครื่องกำเนิดนาฬิกา

ระบบคำสั่ง MK ประกอบด้วย 111 คำสั่งพื้นฐานที่มีรูปแบบ 1, 2 หรือ 3 ไบต์ ไมโครคอนโทรลเลอร์มี:

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

    128 แฟล็กที่ควบคุมด้วยซอฟต์แวร์ (บิตโปรเซสเซอร์ ดูด้านล่าง);

    ชุดรีจิสเตอร์ของฟังก์ชั่นพิเศษที่ควบคุมองค์ประกอบของ MK ไมโครคอนโทรลเลอร์มีโหมดการทำงานดังต่อไปนี้:

หนึ่ง). รีเซ็ตทั่วไป 2).การทำงานปกติ. 3). โหมดพลังงานต่ำและโหมดว่าง 4). โหมดการเขียนโปรแกรมของ EPROM ถิ่นที่อยู่ถ้ามี

ในที่นี้เราจะเน้นที่โหมดการทำงานสองโหมดแรก คำอธิบายโดยละเอียดเกี่ยวกับองค์ประกอบและการทำงานของ MC ในทุกโหมดมีให้ในภาคผนวก P1

RON และโซนตัวประมวลผลบิตอยู่ในพื้นที่ที่อยู่ของ RAM ที่มีที่อยู่ตั้งแต่ 0 ถึง 80 ชั่วโมง

ในโซนด้านบนของที่อยู่ของ RAM ที่มีถิ่นที่อยู่คือการลงทะเบียนของฟังก์ชั่นพิเศษ (SFR, Special Function Registers) วัตถุประสงค์ของพวกเขาได้รับในตาราง 3.2.

ตารางที่ 3.2.

การกำหนด

ชื่อ

แบตเตอรี่

ลงทะเบียน B

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

ตัวชี้สแต็ก

ตัวชี้ข้อมูล 2 ไบต์:

ไบต์ต่ำ

ไบต์สูง

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

ขัดจังหวะเปิดใช้งาน register

ตัวตั้งเวลา/ตัวนับโหมดลงทะเบียน

ลงทะเบียนควบคุมตัวจับเวลา/ตัวนับ

ตัวจับเวลา/ตัวนับ 0. ไบต์สูง

ตัวจับเวลา/ตัวนับ 0. ไบต์ต่ำ

ตัวจับเวลา/ตัวนับ 1. ไบต์สูง

ตัวจับเวลา/ตัวนับ 1. ไบต์ต่ำ

การจัดการพอร์ตอนุกรม

บัฟเฟอร์อนุกรม

การจัดการการบริโภค

* - ทะเบียน, อนุญาต ทีละนิด ที่อยู่

มาดูฟังก์ชันของ SFR ที่แสดงไว้ในตารางที่ 3.2 กัน

แบตเตอรี่ ACC - ทะเบียนสะสม ทีมที่ออกแบบมาเพื่อทำงาน

คุณมีตัวสะสม ใช้ตัวช่วยจำ "A" เช่น MOV เอ, R2 . ตัวช่วยจำ "ACC" ถูกใช้ ตัวอย่างเช่น เมื่อกล่าวถึงตัวสะสมทีละบิต ดังนั้นชื่อสัญลักษณ์ของบิตที่ห้าของตัวสะสมเมื่อใช้แอสเซมเบลอร์ A5M51 จะเป็นดังนี้: ACC 5. .

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

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

ตารางที่ 3.3.

การกำหนด

ตารางที่ 3.4.

การกำหนด

การกำหนดบิต

เข้าถึงจังหวะ

ถือธง. การเปลี่ยนแปลงระหว่างการดำเนินการคำสั่งทางคณิตศาสตร์และตรรกะจำนวนหนึ่ง

ฮาร์ดแวร์หรือซอฟต์แวร์

ธงพกพาเพิ่มเติม ตั้งค่า/ล้างโดยฮาร์ดแวร์ในระหว่างการดำเนินการคำสั่งเพิ่มหรือลบเพื่อระบุการพกพาหรือยืมในบิต 3 เมื่อสร้างการกัดต่ำของผลลัพธ์ (D0-D3)

ฮาร์ดแวร์หรือซอฟต์แวร์

แฟล็ก 0 แฟล็กที่กำหนดโดยผู้ใช้

โดยทางโปรแกรม

โดยทางโปรแกรม

ชี้ไปที่ธนาคารของทะเบียนทำงาน

โดยทางโปรแกรม

ที่อยู่ธนาคาร 0 (00H - 07H) ที่อยู่ธนาคาร 1 (08H - 0FH) ที่อยู่ธนาคาร 2 (10H - 17H) ที่อยู่ธนาคาร 3 (18H - 1FH)

ธงล้น ตั้งค่าหรือล้างโดยฮาร์ดแวร์ระหว่างดำเนินการคำสั่งเลขคณิตเพื่อระบุสภาวะล้น

ฮาร์ดแวร์หรือซอฟต์แวร์

สำรอง. มีทริกเกอร์การอ่าน/เขียนที่สามารถใช้ได้

พาริตี้บิต รีเซ็ตหรือตั้งค่าโดยฮาร์ดแวร์ทุกรอบคำสั่งเพื่อระบุบิตแบตเตอรี่ที่เป็นเลขคู่หรือคี่ที่อยู่ในสถานะ "1"

ฮาร์ดแวร์หรือซอฟต์แวร์

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

ตัวชี้ ข้อมูล DPTR ประกอบด้วยไบต์สูง (DPH) และไบต์ต่ำ

(ดีพีแอล). ประกอบด้วยที่อยู่ 16 บิตเมื่อเข้าถึงหน่วยความจำภายนอก สามารถใช้ได้

ถูกเก็บไว้เป็นรีจิสเตอร์ 16 บิตหรือเป็นรีจิสเตอร์แปดบิตอิสระสองตัว

Port0 - พอร์ตซี แยกบิตของรีจิสเตอร์ของฟังก์ชันพิเศษ P0, P1, P2, P3 เป็นบิต - "สลัก" ของเอาต์พุตของพอร์ต P0, P1, P2, P3

กันชน สม่ำเสมอ ท่า SBUF แสดงถึงรีจิสเตอร์สองอันแยกกัน: บัฟเฟอร์ตัวส่งและบัฟเฟอร์ตัวรับ เมื่อข้อมูลถูกเขียนไปยัง SBUF ข้อมูลจะเข้าสู่บัฟเฟอร์ตัวส่งสัญญาณ และการเขียนไบต์ไปยัง SBUF จะเริ่มต้นการส่งข้อมูลผ่านพอร์ตอนุกรมโดยอัตโนมัติ เมื่อข้อมูลถูกอ่านจาก SBUF ข้อมูลจะถูกดึงมาจากบัฟเฟอร์ปลายทาง

ทะเบียน จับเวลา ลงทะเบียนคู่ (TH0, TL0) และ (TH1, TL1) แบบฟอร์ม 16-

ตัวนับบิตรีจิสเตอร์ของตัวจับเวลา/ตัวนับ 0 และตัวจับเวลา/ตัวนับ 1 ตามลำดับ

ทะเบียน การจัดการ. ฟังก์ชั่นพิเศษลงทะเบียน IP, IE, TMOD, TSON, SCON และ PCON มีบิตควบคุมและบิตสถานะสำหรับระบบขัดจังหวะ, เวลา-

ตัววัด/ตัวนับและพอร์ตอนุกรม พวกเขาจะกล่าวถึงในรายละเอียดด้านล่าง

RxD TxD INT0 INT1 T0 T1 WR

P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

RST BQ2 BQ 1EA

P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7

P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7

P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7

MC ระหว่างการดำเนินการให้:

    เวลาดำเนินการขั้นต่ำสำหรับคำสั่งเพิ่มเติมคือ 1 µs;

    การคูณและการหารด้วยฮาร์ดแวร์โดยใช้เวลาดำเนินการขั้นต่ำ 4 µs

MK ให้ความสามารถในการกำหนดความถี่ของออสซิลเลเตอร์ภายในโดยใช้คริสตัลควอตซ์ สายโซ่ LC หรือออสซิลเลเตอร์ภายนอก

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

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

รูปที่ 3.2 การค้นพบภายนอก

ไมโครคอนโทรลเลอร์

ใช้ในการคำนวณเชิงตรรกะ ในขณะที่รองรับประเภทข้อมูลอย่างง่าย (เมื่อมีอยู่แล้ว

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

แผนภาพวงจรของไมโครคอนโทรลเลอร์แสดงในรูปที่ 3.2. ในเวอร์ชันพื้นฐาน จะบรรจุอยู่ในแพ็คเกจ DIP 40 พิน พิจารณาวัตถุประสงค์ของข้อสรุป

เริ่มจากสายไฟกันก่อน «0 วี" และ "5 วี" โดยที่มันได้รับพลังหลัก การบริโภคในปัจจุบันมีอยู่ในตาราง 3.1.

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

ตั้งค่าตัวนับคำสั่ง PC และการลงทะเบียนฟังก์ชันพิเศษทั้งหมด ยกเว้นสลักพอร์ต P0-P3, ตัวชี้สแต็ก SP และลงทะเบียน SBUF เป็นศูนย์

    ตัวชี้สแต็กใช้ค่าเท่ากับ 07H;

    ปิดใช้งานแหล่งสัญญาณขัดจังหวะ ตัวนับเวลา และซีเรียลทั้งหมด

    เลือก BANK 0 ของ RAM เตรียมพอร์ต P0-RZ เพื่อรับข้อมูลและกำหนด

แชร์พิน ALE และ PME เป็นอินพุตสำหรับนาฬิกาภายนอก

      ในการลงทะเบียนฟังก์ชันพิเศษของ PCON, IP และ IE บิตที่สงวนไว้จะใช้ค่าแบบสุ่ม และบิตอื่นๆ ทั้งหมดจะถูกรีเซ็ตเป็นศูนย์

      การลงทะเบียน SBUF ถูกตั้งค่าเป็นค่าสุ่ม

      ตั้งค่าสลักของพอร์ต P0-P3 เป็น "1"

สถานะของไมโครคอนโทรลเลอร์ที่ลงทะเบียนหลังจากการรีเซ็ตจะแสดงในตารางที่ 3.5

ตาราง 3.5.

ข้อมูล

ไม่มีกำหนด

0XXXX0000B สำหรับ k-MOS 0XXXXXXXB สำหรับ n-MOS

เอาต์พุต RST ยังมีฟังก์ชันทางเลือกอีกด้วย มีการจ่ายพลังงานสำรองเพื่อรักษาเนื้อหาของ RAM ของไมโครคอนโทรลเลอร์ไว้ไม่เปลี่ยนแปลงเมื่อถอดตัวหลักออก

ข้อสรุป bq1, BQ2 ออกแบบมาเพื่อเชื่อมต่อเครื่องสะท้อนเสียงควอตซ์ที่กำหนดความถี่สัญญาณนาฬิกาของ MC

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

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

บทสรุป เบียร์ (อา ชุด หลี่ ภาษาอังกฤษ อี มีคุณธรรมสูง การอนุญาต จูเนียร์ ที่อยู่) แฟลชเอาต์พุตของที่อยู่ด้านล่างบนพอร์ต P0 เอาต์พุตยังใช้เมื่อตั้งโปรแกรม EPROM ในขณะที่ใช้พัลส์แฟลชในระหว่างกระบวนการตั้งโปรแกรม

MK ประกอบด้วยพอร์ตสี่กลุ่ม: P0, P1, P2 และ P3 นี่คือ 40 พินที่เหลือของไมโครคอนโทรลเลอร์ พอร์ตเหล่านี้สามารถให้บริการสำหรับอินพุตแบบทีละบิต - เอาต์พุตของข้อมูล แต่นอกจากนี้ แต่ละรายการยังมีความเชี่ยวชาญเฉพาะด้านอีกด้วย แผนภาพการทำงานทั่วไปของพอร์ตแสดงในรูปที่ 3.3. พอร์ตประกอบด้วยสวิตช์เอาต์พุต FET ที่เชื่อมต่อกับพิน สวิตช์ฟังก์ชัน สลัก D-latch และลอจิกควบคุม สามารถเขียนหนึ่งหรือศูนย์ไปที่สลักบนบัสภายในของ MK ข้อมูลนี้ป้อนผ่านสวิตช์ฟังก์ชันไปยังปุ่มเอาต์พุตและเอาต์พุตของ MK ในสถานะที่หนึ่ง ทั้งทรานซิสเตอร์ N และ N1 จะปิด แต่ N2 เปิดอยู่ ในสถานะศูนย์ N เปิด-

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

บันทึกไว้ล่วงหน้า

จากภายใน

สลักการจัดการ

สวิตช์ฟังก์ชั่น

Vcc

สุดสัปดาห์

หน่วย. เมื่อเปิดใช้งานบรรทัด "การอ่านสลัก" ที่เอาต์พุตของเซลล์ "AND" ที่เชื่อมต่อบรรทัดนี้

ยางของเธอ MK D Q

เขียนเพื่อสลัก C Q

สลักอ่าน

พอร์ตพิน

สถานะของสลักที่มาถึงบัสภายในของไมโครคอนโทรลเลอร์เมื่อเปิดใช้งาน

"การอ่านเอาต์พุต" - สถานะของเอาต์พุตภายนอกของพอร์ต

ท่าเรือ P0 – พอร์ตสองทิศทางสากล

อินพุต-เอาต์พุต หลังท่าเรือนี้

หน้าที่ของการจัดบัสภายนอกของที่อยู่และ

ข้าว. 3.3. แผนภาพการทำงานของพอร์ตไมโครคอนโทรลเลอร์

ข้อมูลเพื่อขยายหน่วยความจำโปรแกรมและหน่วยความจำข้อมูล

ไมโครคอนโทรลเลอร์ เมื่อมีการเข้าถึงหน่วยความจำโปรแกรมภายนอกหรือคำสั่งการเข้าถึงหน่วยความจำข้อมูลภายนอกถูกดำเนินการ ส่วนล่างของที่อยู่ (A0…A7) จะถูกตั้งค่าบนพินของพอร์ต จากนั้นเมื่อเขียนไปยังหน่วยความจำข้อมูล ข้อมูลที่เขียนจากบัสภายในของ MK จะถูกป้อนไปยังพินของพอร์ต P0 ในทางกลับกัน ในการอ่านข้อมูลจากพินของพอร์ตจะไปที่บัสภายใน คุณสมบัติของพอร์ต P0 คือไม่มีทรานซิสเตอร์ "ดึงขึ้น" N2 ซึ่งให้พลังงานแก่เอาต์พุต เมื่อสลักถูกเขียนไปยังพอร์ต 1 สลักจะถูกวางไว้ในสถานะอิมพีแดนซ์สูงที่จำเป็นสำหรับบัสข้อมูลในการทำงานอย่างถูกต้อง หากจำเป็นต้องจ่ายไฟให้กับอุปกรณ์ภายนอกใดๆ ผ่านทางเอาต์พุต ตัวต้านทานภายนอกควรจัดเตรียมจากวงจรแหล่งจ่ายไฟไปยังเอาต์พุตของพอร์ต

ท่าเรือ P1 – พอร์ต I/O แบบสองทิศทางสากลโดยไม่มีฟังก์ชันทางเลือก

ท่าเรือ R2 – พอร์ต I/O แบบสองทิศทางสากล เป็นฟังก์ชันทางเลือก โดยออกส่วนบนของที่อยู่ (A8…A15) เมื่อเข้าถึงหน่วยความจำภายนอก

ท่าเรือ P3 – พอร์ตอินพุต-เอาท์พุตแบบสองทิศทางสากล ซึ่งแต่ละบิตมีไว้เพื่อประสิทธิภาพของฟังก์ชันทางเลือกต่างๆ ในกรณีนี้ ฟังก์ชันทางเลือกจะถูกใช้งานก็ต่อเมื่อหน่วยถูกเขียนไปยังสลักเอาท์พุตของพอร์ต มิฉะนั้น การดำเนินการของฟังก์ชันทางเลือกจะถูกบล็อก เราแสดงรายการแยกกันสำหรับแต่ละบิต:

P3.0 RxD (Rหัว e Xภายใน ดีกิน อ่านข้อมูลภายนอก) – อินพุตของตัวรับส่งสัญญาณซีเรียลในตัว

P3.1 TxD (ตู่ใช่ค่ะ Xภายใน ดีกิน, ส่งข้อมูลภายนอก) - เอาต์พุตตัวรับส่งสัญญาณซีเรียลในตัว

P3.2 INT0` (INTผิดพลาด, ขัดจังหวะ) - อินพุตขัดจังหวะภายนอก 0

P3.3 INT1` – อินพุตอินเตอร์รัปต์ภายนอก 1

P3.4 С/T0 - อินพุตของตัวจับเวลา / เคาน์เตอร์ในตัวเป็นศูนย์

P3.5 C/T1 - อินพุตของตัวจับเวลา/ตัวนับในตัวเครื่องแรก

P3.6 WR` (W rite, write) - ควบคุมเอาต์พุตของรอบการเขียนในหน่วยความจำข้อมูล

P3.7 RD` (R ead, read) - การควบคุมเอาต์พุตของวงจรการอ่านจากหน่วยความจำข้อมูล

พินพอร์ต P1, P2 และ P3 สามารถส่งออกกระแสไฟได้ประมาณ 0.2mA และรับกระแสไฟ 3 mA ที่ศูนย์ พินพอร์ต P0 มีประสิทธิภาพมากกว่าและสามารถส่งกระแสไฟได้ประมาณ 0.8mA ที่ศูนย์ และรับกระแสไฟ 5 mA ที่ศูนย์ ข้อมูลโดยย่อเกี่ยวกับจุดประสงค์ของหมุดไมโครคอนโทรลเลอร์แสดงไว้ในตารางที่ 3.6

ตารางที่ 3.6.

การกำหนด

ปลายทางการส่งออก

พอร์ต P1 แบบสองทิศทาง 8 บิต อินพุตที่อยู่ A0-A7 เมื่อตรวจสอบ ROM ภายใน (RPZU)

เข้าทางออก

สัญญาณรีเซ็ตทั่วไป กำลังไฟฟ้าสำรอง RAM จากแหล่งภายนอก (สำหรับปี 1816)

พอร์ต P3 แบบสองทิศทาง 8 บิตพร้อมคุณสมบัติเพิ่มเติม

เข้าทางออก

ตัวรับข้อมูลอนุกรม - RxD

ข้อมูลอนุกรมของเครื่องส่งสัญญาณ - TxD

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

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

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

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

เอาต์พุตสัญญาณแฟลชเมื่อเขียนไปยังหน่วยความจำข้อมูลภายนอก: - WR`

เอาต์พุตสัญญาณแฟลชเมื่ออ่านจากหน่วยความจำข้อมูลภายนอก - RD`

ข้อสรุปสำหรับการเชื่อมต่อเครื่องสะท้อนเสียงควอตซ์

ทางเข้าออก

บทสรุปทั่วไป

พอร์ต P2 แบบสองทิศทาง 8 บิต ที่อยู่เอาต์พุต A8-A15 ในโหมดการทำงานพร้อมหน่วยความจำภายนอก ในโหมดทดสอบ ROM ภายใน เอาต์พุต P2.0 - P2.6 จะถูกใช้เป็นอินพุตของที่อยู่ A8-A14 สรุป P2.7 - อนุญาตให้อ่าน ROM

เข้าทางออก

ความละเอียดของหน่วยความจำโปรแกรม

สลักที่อยู่เปิดใช้งานเอาต์พุต เมื่อตั้งโปรแกรมสัญญาณ EEPROM: PROG

เข้าทางออก

การบล็อกการทำงานกับหน่วยความจำภายใน เมื่อตั้งโปรแกรม EEPROM สัญญาณ UPR จะได้รับ

เข้าทางออก

พอร์ตแบบสองทิศทาง 8 บิต P0 แอดเดรส/บัสข้อมูลสำหรับการทำงานกับหน่วยความจำภายนอก เอาต์พุตข้อมูล D7-D0 ในโหมดทดสอบของ ROM ภายใน (RPZU)

เข้าทางออก

กำลังขับจากแหล่งจ่ายแรงดัน + 5V

พื้นฐานของไมโครคอนโทรลเลอร์ (ดูรูปที่ 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 เท่านั้น

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

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

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

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

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

· РЗ - พอร์ตกึ่งสองทิศทางแปดบิตซึ่งคล้ายกับ Р1 พินของพอร์ตนี้สามารถทำหน้าที่ทางเลือกหลายอย่างที่ใช้ในการทำงานของตัวจับเวลา, พอร์ต 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.

ระบบคำสั่ง OMEVM มีความสามารถในการประมวลผลข้อมูลที่ยอดเยี่ยม มีการนำการดำเนินการทางลอจิคัล การคำนวณ และการควบคุมแบบเรียลไทม์ ประมวลผลข้อมูลระดับบิต เทตราด (4 บิต) ไบต์ (8 บิต) และ 16 บิต

ตระกูล LSI MCS-51 - OMEVM 8 บิต: ROM, RAM, การลงทะเบียนวัตถุประสงค์พิเศษ, ALU และบัสภายนอกมีองค์กรแบบไบต์ ข้อมูลสองไบต์ถูกใช้โดยการลงทะเบียนพอยน์เตอร์ (DPTR) และตัวนับโปรแกรม (PC) เท่านั้น ควรสังเกตว่าการลงทะเบียนตัวชี้ข้อมูลสามารถใช้เป็นรีจิสเตอร์ DPTR แบบสองไบต์หรือเป็นรีจิสเตอร์วัตถุประสงค์พิเศษแบบไบต์เดี่ยวสองแบบ DPH และ DPL ตัวนับโปรแกรมใช้เป็นรีจิสเตอร์สองไบต์เสมอ

ชุดคำสั่ง OMEVM มีตัวช่วยจำคำสั่ง 42 สำหรับการระบุฟังก์ชัน 33 ของระบบนี้

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

ระบบคำสั่งสามารถแบ่งออกเป็นห้ากลุ่มตามเงื่อนไข:

มีประเภทของตัวถูกดำเนินการต้นทางที่อยู่ดังต่อไปนี้:

  • การลงทะเบียนทางอ้อมที่อยู่โดยผลรวมของการลงทะเบียนฐานและดัชนี

ตารางการกำหนดและสัญลักษณ์ที่ใช้ในระบบคำสั่ง

การกำหนดสัญลักษณ์ วัตถุประสงค์
อา แบตเตอรี่
Rn ทะเบียนของธนาคารทะเบียนที่เลือกในปัจจุบัน
r จำนวนรีจิสเตอร์ที่โหลดที่ระบุในคำสั่ง
โดยตรง ที่อยู่ตำแหน่งข้อมูลภายใน 8 บิตที่สามารถระบุตำแหน่งได้โดยตรง ซึ่งสามารถเป็นตำแหน่งข้อมูล RAM ภายใน (0-127) หรือ SFR (128-255)
@rr ตำแหน่ง RAM ข้อมูลภายใน 8 บิตที่กำหนดแอดเดรสทางอ้อมได้
data8 ข้อมูลทันทีแบบ 8 บิตรวมอยู่ใน CPC
ข้อมูลH MSB (15-8) ของข้อมูล 16 บิตทันที
ข้อมูลL บิตต่ำ (7-0) ของข้อมูล 16 บิตทันที
addr11 ที่อยู่ปลายทาง 11 บิต
addrL บิตที่มีนัยสำคัญน้อยที่สุดของที่อยู่ปลายทาง
disp8 ไบต์ออฟเซ็ตที่เซ็นชื่อ 8 บิต
นิดหน่อย บิตที่กำหนดแอดเดรสได้โดยตรงซึ่งมีที่อยู่ประกอบด้วย CPC ที่อยู่ใน RAM ข้อมูลภายในหรือ SFR
a15, a14...a0 บิตที่อยู่ปลายทาง
(X) เนื้อหาขององค์ประกอบ X
((X)) เนื้อหาที่อยู่ที่เก็บไว้ในองค์ประกอบ X
(X)[ม] ปล่อยองค์ประกอบ M X

+
-
*
และ
หรือ
XOR
/X
การดำเนินงาน:
เพิ่มเติม
การลบ
การคูณ
แผนก
การคูณเชิงตรรกะ (การดำเนินการ AND)
การเพิ่มตรรกะ (การดำเนินการ OR)
เพิ่มโมดูล 2 (XOR)
องค์ประกอบ X ผกผัน

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

ช่วยในการจำ การทำงาน ธง
ทีมงาน ACALL การเรียกรูทีนย่อยแบบสัมบูรณ์
ส่วนที่เพิ่มเข้าไป AC, C, OV
บวกกับการพกพา AC, C, OV
ทีม AJMP การเปลี่ยนแปลงแบบสัมบูรณ์
ตรรกะ "และ"
ตรรกะ "AND" สำหรับตัวแปรบิต
เปรียบเทียบแล้วกระโดดถ้าไม่เท่ากัน
ทีม CLR A รีเซ็ตแบตเตอรี่
ทีม CLR รีเซ็ตบิต C บิต
CPL Team A การผกผันของแบตเตอรี่
ทีม CPL บิตผกผัน C บิต
ทีม DA A การแก้ไขทศนิยมสะสมสำหรับการบวก AC, C
ธ.ค.ทีม<байт> ลดลง
ทีม DIV AB แผนก C, OV
ทีม DJNZ<байт>, <смещение> ลดและกระโดดถ้าไม่ใช่ศูนย์
ทีมไอ.เอ็น.ซี.<байт> เพิ่มขึ้น
ทีม INC DPTR ตัวชี้ข้อมูลที่เพิ่มขึ้น
ทีมเจบี , กระโดดถ้าบิตถูกตั้งค่า
ทีม JBC , แบรนช์ถ้าบิตถูกตั้งค่าและรีเซ็ตบิตนี้
ทีม เจ.ซี. กระโดดถ้ามีการตั้งค่าการพกพา
คำสั่ง JMP @A+DPTR การเปลี่ยนแปลงทางอ้อม
ทีม JNB , กระโดดถ้าไม่ได้ตั้งค่าบิต
ทีม JNC ข้ามไปถ้าไม่ได้ตั้งค่าการโอนไว้
ทีม JNZ ข้ามไปถ้าเนื้อหาของตัวสะสมไม่ใช่ศูนย์
ทีม JZ ข้ามไปถ้าเนื้อหาของตัวสะสมเป็น0
ทีมงาน LCALL โทรยาว
ทีม LJMP การเปลี่ยนแปลงที่ยาวนาน
ส่งต่อตัวแปรไบต์
ส่งข้อมูลบิต
คำสั่ง MOV DPTR#data16 โหลดตัวชี้ข้อมูลด้วยค่าคงที่ 16 บิต
คำสั่ง MOVC A,@A+( ) ย้ายไบต์จากหน่วยความจำโปรแกรม
ส่งข้อมูลไปยังหน่วยความจำภายนอก (จากหน่วยความจำภายนอก)