คอมพิวเตอร์ หน้าต่าง อินเทอร์เน็ต

การเขียนโปรแกรมไมโครคอนโทรลเลอร์ในภาษา s 51 ไมโครคอนโทรลเลอร์ MCS-51 บล็อกไดอะแกรม, ALU, หน่วยความจำข้อมูล A. ลักษณะทั่วไปและการกำหนดพิน

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

ไมโครคอนโทรลเลอร์ของตระกูล MCS51 ผลิตขึ้นโดยใช้เทคโนโลยี n-MOS คุณภาพสูง (ซีรี่ส์ 8XXXX อะนาล็อก - ซีรีย์ 1816 ในรัสเซียและเบลารุส) และเทคโนโลยี k-MOS (ซีรีย์ 8XXСXXH อะนาล็อก - ซีรีย์ 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) ไมโครคอนโทรลเลอร์เป็นแบบแปดบิตเช่น มีคำแนะนำในการประมวลผลคำแปดบิต มีสถาปัตยกรรม Harvard ความถี่สัญญาณนาฬิกาสำหรับตัวอย่างพื้นฐานของตระกูลคือ 12 MHz

ตารางที่ 3.1.

วงจรไมโคร

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    เครื่องกำเนิดสัญญาณนาฬิกา

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

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

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

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

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

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

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

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

ตารางที่ 3.2.

การกำหนด

ชื่อ

แบตเตอรี่

ลงทะเบียน บี

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

ตัวชี้สแต็ก

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

ไบต์ต่ำ

ไบต์สูง

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

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

ลงทะเบียนโหมดจับเวลา / เคาน์เตอร์

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

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

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

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

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

การควบคุมพอร์ตอนุกรม

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

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

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

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

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

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

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

ลงทะเบียน รัฐ โปรแกรม ปสว มีข้อมูลเกี่ยวกับสถานะของโปรแกรมและตั้งค่าบางส่วนโดยอัตโนมัติตามผลลัพธ์ของการดำเนินการที่ดำเนินการ ส่วนหนึ่งโดยผู้ใช้ การกำหนดและวัตถุประสงค์ของรีจิสเตอร์บิตแสดงไว้ในตารางที่ 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"

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

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

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

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

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

พอร์ต0 - พอร์ตZ. บิตที่แยกจากการลงทะเบียนของฟังก์ชันพิเศษ P0, P1, P2, P3 คือบิต - "แลตช์" ของเอาต์พุตของพอร์ต P0, P1, P2, P3

กันชน สม่ำเสมอ ท่าเรือ สบีฟ แสดงถึงรีจิสเตอร์แยกกันสองรายการ: บัฟเฟอร์ตัวส่งและบัฟเฟอร์ตัวรับ เมื่อข้อมูลถูกเขียนไปยัง 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 บีคิว 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-chain หรือเครื่องกำเนิดไฟฟ้าภายนอก

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

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

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

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

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

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

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

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

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

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

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

    ปิดการใช้งานแหล่งที่มาของการขัดจังหวะ ตัวนับเวลา และอนุกรมทั้งหมด

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

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

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

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

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

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

ตารางที่ 3.5.

ข้อมูล

ไม่มีกำหนด

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

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

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

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

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

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

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

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

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

จากภายใน

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

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

วีซีซี

สุดสัปดาห์

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

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

เขียนถึงสลัก C Q

การอ่านสลัก

พินพอร์ต

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

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

ท่าเรือ ป0 – พอร์ตสากลแบบสองทิศทาง

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

ฟังก์ชั่นการจัดรถบัสภายนอกของที่อยู่และ

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

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

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

ท่าเรือ ป1 – พอร์ต I/O แบบสองทิศทางอเนกประสงค์ที่ไม่มีฟังก์ชันทางเลือก

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

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

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

หน้า 3.1 ส่งแล้ว (ใช่แล้ว เอ็กซ์ภายใน ดีกิน, ส่งข้อมูลภายนอก) – เอาต์พุตตัวรับส่งสัญญาณอนุกรมในตัว

หน้า 3.2 INT0` (อินเตอร์เนชั่นแนลปะทุ, ขัดจังหวะ) - อินพุตขัดจังหวะภายนอก 0

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

หน้า 3.4 ค/T0 – อินพุตของตัวจับเวลา/ตัวนับในตัวเป็นศูนย์

หน้า 3.5 ซี/ที1 – อินพุตของตัวจับเวลา/ตัวนับในตัวตัวแรก

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

หน้า 3.7 ร.ด ( 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

สัญญาณ Strobe เมื่อเขียนไปยังหน่วยความจำข้อมูลภายนอก: - WR`

สัญญาณ Strobe เมื่ออ่านจากหน่วยความจำข้อมูลภายนอก - 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

สถาปัตยกรรมไมโครคอนโทรลเลอร์ของครอบครัวเอ็มซีเอส-51

บันทึกการบรรยายตามหลักสูตร

"ไมโครโปรเซสเซอร์ในระบบควบคุม", "เทคโนโลยีไมโครโปรเซสเซอร์"

“วิธีการและระบบไมโครโปรเซสเซอร์”

สำหรับนักศึกษาสาขาวิชาการศึกษาพิเศษทุกรูปแบบ

072000 - การกำหนดมาตรฐานและการรับรอง

210200 - กระบวนการทางเทคโนโลยีอัตโนมัติ

230104 - ระบบการออกแบบโดยใช้คอมพิวเตอร์ช่วย

ตัมบอฟ 2005

บทนำ.. 3

1. โครงสร้างของไมโครคอนโทรลเลอร์ INTEL 8051 3

1.1. การจัดระเบียบของหน่วยความจำ 5

1.2. อุปกรณ์ลอจิกเลขคณิต 6

1.3. หน่วยความจำภายในสำหรับโปรแกรมและข้อมูล 7

1.4. ทะเบียนสะสมและวัตถุประสงค์ทั่วไป 8

1.5. คำว่า register สถานะของโปรแกรมและแฟล็กของมัน 9

1.6. รีจิสเตอร์พอยน์เตอร์ 10

1.7. การลงทะเบียนฟังก์ชั่นพิเศษ สิบเอ็ด

1.8. อุปกรณ์ควบคุมและซิงโครไนซ์ สิบเอ็ด

1.9. พอร์ตขนานของอินพุต/เอาต์พุตของข้อมูล 12

1.10. ไทม์เมอร์/เคาน์เตอร์ 13

1.11. พอร์ตอนุกรม 18

1.11.1. ลงทะเบียน SBUF..18

1.11.2. โหมดการทำงานของพอร์ตอนุกรม 18

1.11.3. ลงทะเบียน SCON..19

1.11.4. รับ/ส่งความเร็ว 21

1.12. ระบบขัดจังหวะ 22

2. ระบบคำสั่งของไมโครคอนโทรลเลอร์ INTEL 8051 26

2.1. ข้อมูลทั่วไป. 26

2.1.1. ประเภทคำสั่ง 27

2.1.2. ประเภทตัวถูกดำเนินการ 28

2.1.3. วิธีการระบุที่อยู่ข้อมูล สามสิบ

2.1.4. ธงผลลัพธ์ 31

2.1.5. ที่อยู่เชิงสัญลักษณ์ 32

2.2. คำสั่งถ่ายโอนข้อมูล 33

2.2.1. โครงสร้างของลิงค์ข้อมูล 33

2.2.2. เข้าถึงแบตเตอรี่ 33

2.2.3. การเข้าถึงหน่วยความจำข้อมูลภายนอก 34

2.2.4. การเข้าถึงหน่วยความจำโปรแกรม.. 34


2.2.5. การเข้าถึงสแต็ก 35

2.3. การดำเนินการทางคณิตศาสตร์ 35

2.4. การดำเนินการเชิงตรรกะ 39

2.5. ควบคุมคำสั่งถ่ายโอน 43

2.5.1. การเปลี่ยนแปลงที่ยาวนาน 43

2.5.2. การเปลี่ยนแปลงโดยสมบูรณ์ 43

2.5.3. การเปลี่ยนแปลงแบบสัมพัทธ์ 44

2.5.4. การเปลี่ยนแปลงทางอ้อม 44

2.5.5. กระโดดแบบมีเงื่อนไข..44

2.5.6. รูทีนย่อย.. 47

2.6. การดำเนินการกับบิต 48

คำถามเพื่อความปลอดภัย...49

วรรณกรรม..50

ภาคผนวกระบบคำสั่ง INTEL 8051 51

การแนะนำ

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

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

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

2. โครงสร้างของไมโครคอนโทรลเลอร์ INTEL 8051

ไมโครคอนโทรลเลอร์ Intel 8051 ใช้เทคโนโลยี n-MOS ระดับสูง ลักษณะสำคัญมีดังนี้:

· โปรเซสเซอร์กลาง 8 บิต ปรับให้เหมาะสมสำหรับการใช้งานฟังก์ชันควบคุม

เครื่องกำเนิดสัญญาณนาฬิกาในตัว (ความถี่สูงสุด 12 MHz);

· พื้นที่ที่อยู่หน่วยความจำโปรแกรม - 64 KB;

· พื้นที่ที่อยู่หน่วยความจำข้อมูล - 64 KB;

หน่วยความจำโปรแกรมภายใน - 4 KB;

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

คุณสมบัติเพิ่มเติมสำหรับการดำเนินการพีชคณิตแบบบูลีน (การดำเนินการระดับบิต);

· ตัวจับเวลา/เครื่องนับอเนกประสงค์ 16 หลัก 2 ตัว

ตัวรับส่งสัญญาณอะซิงโครนัสดูเพล็กซ์เต็มรูปแบบ (พอร์ตอนุกรม);

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

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

พื้นฐานของแผนภาพบล็อก (รูปที่ 1) ถูกสร้างขึ้นโดยบัส 8 บิตแบบสองทิศทางภายในที่เชื่อมต่อโหนดหลักและอุปกรณ์ของไมโครคอนโทรลเลอร์: หน่วยความจำโปรแกรมประจำถิ่น (RPM) หน่วยความจำข้อมูลประจำถิ่น (RDM) หน่วยตรรกะทางคณิตศาสตร์ ( ALU), ฟังก์ชันพิเศษของหน่วยรีจิสเตอร์, หน่วยควบคุม (CU), พอร์ต I/O แบบขนาน (P0-P3) รวมถึงตัวจับเวลาที่ตั้งโปรแกรมได้และพอร์ตอนุกรม

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

ไมโครคอนโทรลเลอร์นี้มีโปรแกรมในตัว (ประจำ) และภายนอกและหน่วยความจำข้อมูล หน่วยความจำโปรแกรมประจำถิ่น (RPM) มีความจุ 4 KB หน่วยความจำข้อมูลประจำถิ่น (RDM) - 128 ไบต์


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

หากจำเป็น ผู้ใช้สามารถขยายหน่วยความจำของโปรแกรมได้โดยการติดตั้ง ROM ภายนอก การเข้าถึง ROM ภายในหรือภายนอกถูกกำหนดโดยค่าของสัญญาณที่พิน EA (การเข้าถึงภายนอก):

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

EA=VSS (ศักยภาพภาคพื้นดิน) - การเข้าถึง ROM ภายนอก

โปรแกรมภายนอกและหน่วยความจำข้อมูลมีขนาด 64K ไบต์ และสามารถแก้ไขได้โดยใช้พอร์ต P0 และ P2 รูปที่ 2 แสดงการ์ดหน่วยความจำ Intel 8051

รูปที่ 2 - องค์กรหน่วยความจำ Intel 8051

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

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

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

2.2. หน่วยลอจิกเลขคณิต

หน่วยลอจิกทางคณิตศาสตร์ (ALU) 8 บิตสามารถดำเนินการทางคณิตศาสตร์ของการบวก ลบ คูณและหารได้ การดำเนินการทางลอจิคัล AND, OR, พิเศษเฉพาะ OR ตลอดจนการดำเนินการของการเปลี่ยนแปลงแบบวน, รีเซ็ต, กลับด้าน ฯลฯ รีจิสเตอร์ที่ไม่สามารถเข้าถึงซอฟต์แวร์ได้ T1 และ T2 เชื่อมต่อกับอินพุต ออกแบบมาเพื่อการจัดเก็บตัวถูกดำเนินการชั่วคราว วงจรแก้ไขทศนิยม (DCU) และผลการทำงานของวงจรการสร้างคุณสมบัติ (PSW)

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

การดำเนินการที่ง่ายที่สุดจะสร้าง "tandems" โดยอัตโนมัติเพื่อดำเนินการต่างๆ เช่น การเพิ่มคู่รีจิสเตอร์ 16 บิต ALU ใช้กลไกสำหรับการดำเนินการแบบเรียงซ้อนเพื่อนำคำสั่งที่ซับซ้อนไปใช้ ตัวอย่างเช่น เมื่อดำเนินการคำสั่งถ่ายโอนแบบมีเงื่อนไขอย่างใดอย่างหนึ่ง ตามผลลัพธ์ของการเปรียบเทียบ ตัวนับโปรแกรม (PC) จะเพิ่มขึ้นใน ALU สามครั้ง RDM จะถูกอ่านสองครั้ง การเปรียบเทียบทางคณิตศาสตร์ของตัวแปรสองตัวจะดำเนินการ ที่อยู่การกระโดดแบบ 16 บิตจะถูกสร้างขึ้น และจะมีการตัดสินใจว่าจะทำการเปลี่ยนแปลงผ่านโปรแกรมหรือไม่ การดำเนินการทั้งหมดนี้ใช้เวลาเพียง 2 µs

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

ดังนั้น ALU สามารถทำงานกับออบเจ็กต์ข้อมูลสี่ประเภท: บูลีน (1 บิต), ดิจิทัล (4 บิต), ไบต์ (8 บิต) และที่อยู่ (16 บิต) ALU ดำเนินการโอนหรือแปลงข้อมูลนี้ที่แตกต่างกัน 51 รายการ เนื่องจากมีการใช้โหมดการกำหนดแอดเดรส 11 โหมด (7 สำหรับข้อมูลและ 4 สำหรับแอดเดรส) โดยการรวมโหมดการทำงานและการกำหนดแอดเดรส หมายเลขฐานของคำสั่ง 111 จึงขยายเป็น 255 จาก 256 ที่เป็นไปได้ด้วย opcode ไบต์เดียว

2.3. โปรแกรมประจำถิ่นและหน่วยความจำข้อมูล

หน่วยความจำโปรแกรม (RPM) ประจำถิ่น (บนชิป) และหน่วยความจำข้อมูล (RDM) จะถูกแยกออกจากกันทางกายภาพและทางตรรกะ มีกลไกการกำหนดที่อยู่ที่แตกต่างกัน ทำงานภายใต้การควบคุมของสัญญาณที่แตกต่างกัน และทำหน้าที่ต่างกัน

หน่วยความจำโปรแกรม RPM มีความจุ 4 KB และออกแบบมาเพื่อจัดเก็บคำสั่ง ค่าคงที่ คำควบคุมการเริ่มต้น ตารางการแปลงสำหรับตัวแปรอินพุตและเอาต์พุต ฯลฯ หน่วยความจำมีบัสแอดเดรส 16 บิตซึ่งให้การเข้าถึงจากพีซี ตัวนับโปรแกรมหรือจากรีจิสเตอร์ data pointer (DPTR) DPTR ทำหน้าที่เป็นรีจิสเตอร์พื้นฐานสำหรับการข้ามโปรแกรมทางอ้อมหรือใช้ในการดำเนินการตาราง

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

หน่วยความจำโปรแกรมเหมือนกับหน่วยความจำข้อมูลสามารถขยายได้สูงสุด
64 KB โดยเชื่อมต่อชิปภายนอก

ตารางที่ 1

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

ชื่อ

แบตเตอรี่

การลงทะเบียนตัวขยายสะสม

คำว่าสถานะโปรแกรม

การลงทะเบียนตัวชี้สแต็ก

การลงทะเบียนตัวชี้ข้อมูล

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

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

ลงทะเบียนโหมดจับเวลา / เคาน์เตอร์

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

ตัวจับเวลา 0 (ไบต์สูง)

ตัวจับเวลา 0 (ไบต์ต่ำ)

ตัวจับเวลา 1 (ไบต์สูง)

ตัวจับเวลา 1 (ไบต์ต่ำ)

ทะเบียนการควบคุมตัวรับส่งสัญญาณ

บัฟเฟอร์ตัวรับส่งสัญญาณ

ทะเบียนควบคุมพลังงาน

บันทึก.รีจิสเตอร์ที่มีชื่อที่มีเครื่องหมายดอกจัน (*) อนุญาตให้ระบุแต่ละบิตได้

2.4. ทะเบียนสะสมและวัตถุประสงค์ทั่วไป

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

ผู้ใช้มีรีจิสเตอร์อเนกประสงค์ 8 ช่องจำนวน R0–R7 จำนวน 4 ช่อง (รูปที่ 9) อย่างไรก็ตาม คุณสามารถใช้รีจิสเตอร์ของธนาคารใดธนาคารหนึ่งจากสี่ธนาคารเท่านั้น ซึ่งถูกเลือกโดยใช้บิตรีจิสเตอร์ PSW

2.5. การลงทะเบียนคำสถานะโปรแกรมและแฟล็ก

เมื่อมีการดำเนินการคำสั่งจำนวนมากใน ALU จะมีการสร้างสัญญาณการทำงาน (แฟล็ก) จำนวนหนึ่ง ซึ่งได้รับการแก้ไขในการลงทะเบียน Program Status Word (PSW) ในตาราง หมายเลข 2 แสดงรายการธง PSW ตั้งชื่อเชิงสัญลักษณ์ และอธิบายเงื่อนไขในการก่อตัว

ตารางที่ 2

รูปแบบคำสถานะโปรแกรม PSW

ชื่อและวัตถุประสงค์

ถือธง. ตั้งค่าและรีเซ็ตด้วยฮาร์ดแวร์หรือซอฟต์แวร์เมื่อดำเนินการทางคณิตศาสตร์และตรรกะ

ธงช่วยถือ ตั้งค่าและเคลียร์โดยฮาร์ดแวร์เท่านั้นเมื่อดำเนินการเพิ่มและลบคำสั่งและสัญญาณที่มีหรือยืมในบิต 3

แฟล็ก 0 สามารถตั้งค่า ล้าง หรือตรวจสอบโดยโปรแกรมเป็นแฟล็กที่ผู้ใช้ระบุ

การเลือกธนาคารที่ลงทะเบียน ตั้งค่าและรีเซ็ตโดยซอฟต์แวร์เพื่อเลือกธนาคารที่ใช้งานได้ (ตารางที่ 3)

ธงล้น ตั้งค่าและเคลียร์ด้วยฮาร์ดแวร์เมื่อดำเนินการทางคณิตศาสตร์

ไม่ได้ใช้

ธงความเท่าเทียมกัน ตั้งค่าและรีเซ็ตด้วยฮาร์ดแวร์ทุกรอบและแก้ไขเลขคี่/เลขคู่ 1 บิตในตัวสะสม เช่น ดำเนินการพาริตีคู่

ตารางที่ 3

การเลือกธนาคารที่ทำงานของการลงทะเบียน

ขอบเขตที่อยู่

ธง PSW ที่ "ใช้งานอยู่" มากที่สุดคือธงพกพา ซึ่งมีส่วนร่วมและได้รับการแก้ไขในกระบวนการดำเนินการต่างๆ รวมถึงการบวก การลบ และการเปลี่ยนแปลง นอกจากนี้ Carry Flag (CY) ยังทำหน้าที่เป็น "ตัวสะสมบูลีน" ในคำสั่งที่จัดการบิต ธงโอเวอร์โฟลว์ (OV) แก้ไขโอเวอร์โฟลว์ทางคณิตศาสตร์ในการดำเนินการกับจำนวนเต็มที่ลงนาม และทำให้สามารถใช้เลขคณิตในโค้ดเสริมของทั้งสองได้ ALU ไม่ได้ควบคุมแฟล็กการเลือกธนาคารทะเบียน (RS0, RS1) ค่าของแฟล็กเหล่านี้จะถูกกำหนดโดยโปรแกรมแอปพลิเคชันทั้งหมด และใช้เพื่อเลือกหนึ่งในสี่ธนาคารทะเบียน

ในรูปแบบไบต์ การลงทะเบียน PSW สามารถแสดงได้ดังต่อไปนี้:

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

2.6. ตัวชี้ลงทะเบียน

ตัวชี้สแต็ก (SP) 8 บิตสามารถระบุพื้นที่ RDM ใดก็ได้ เนื้อหาจะเพิ่มขึ้นก่อนที่ข้อมูลจะถูกจัดเก็บไว้ในสแต็กระหว่างคำสั่ง PUSH และ CALL เนื้อหาของ SP จะลดลงหลังจากการดำเนินการคำสั่ง POP และ RET วิธีการจัดการกับองค์ประกอบสแต็กนี้เรียกว่าการเพิ่มขึ้นล่วงหน้า/หลังการลดค่า ในระหว่างการเริ่มต้นไมโครคอนโทรลเลอร์ หลังจากสัญญาณ RST รหัส 07H จะถูกโหลดเข้าสู่ SP โดยอัตโนมัติ ซึ่งหมายความว่าหากแอปพลิเคชันโปรแกรมไม่ได้กำหนดสแต็กใหม่ องค์ประกอบข้อมูลแรกบนสแต็กจะอยู่ที่ตำแหน่ง RDM 08H

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

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

รีจิสเตอร์ที่มีชื่อสัญลักษณ์ IP, IE, TMOD, TCON, SCON และ PCON ใช้สำหรับการล็อคและการเปลี่ยนแปลงบิตควบคุมและสถานะของวงจรขัดจังหวะ ตัวจับเวลา/ตัวนับ ตัวรับส่งสัญญาณพอร์ตอนุกรม และการจัดการพลังงานโดยทางโปรแกรม องค์กรของพวกเขาจะอธิบายรายละเอียดในส่วน 1.8-1.12 เมื่อพิจารณาคุณสมบัติของไมโครคอนโทรลเลอร์ในโหมดต่างๆ

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

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

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

สัญญาณอินพุตและเอาต์พุตของอุปกรณ์ควบคุมและซิงโครไนซ์:

1. PSEN - ความละเอียดหน่วยความจำโปรแกรม

2. ALE - สลักที่อยู่เปิดใช้งานสัญญาณเอาท์พุต

3. PROG - สัญญาณการเขียนโปรแกรม

4. EA - การบล็อกงานด้วยหน่วยความจำภายใน

5. VPP - แรงดันไฟฟ้าในการเขียนโปรแกรม

6. RST - สัญญาณรีเซ็ตทั่วไป

7. VPD - กำลังไฟฟ้าสำรองหน่วยความจำจากแหล่งภายนอก

8. XTAL - อินพุตสำหรับเชื่อมต่อเครื่องสะท้อนควอทซ์

2.9. พอร์ตข้อมูลอินพุต/เอาต์พุตแบบขนาน

พอร์ตทั้งสี่พอร์ต (P0-P3) ได้รับการออกแบบมาเพื่อป้อนข้อมูลหรือส่งออกข้อมูลแบบไบต์ต่อไบต์ แต่ละพอร์ตประกอบด้วยสลักควบคุม บัฟเฟอร์อินพุต และไดรเวอร์เอาต์พุต

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

พินพอร์ต P3 ทั้งหมดสามารถใช้เพื่อใช้งานฟังก์ชันทางเลือกที่แสดงอยู่ในตารางที่ 1 4. สามารถเปิดใช้งานฟังก์ชันเหล่านี้ได้โดยการเขียน 1 ไปยังบิตสลักที่สอดคล้องกัน (P3.0-P3.7) ของพอร์ต P3

ตารางที่ 4

ฟังก์ชั่นสำรองพอร์ต P3

ชื่อและวัตถุประสงค์

การอ่าน. ฮาร์ดแวร์สร้างสัญญาณต่ำที่ใช้งานอยู่เมื่อเข้าถึงหน่วยความจำข้อมูลภายนอก

บันทึก. ฮาร์ดแวร์สร้างสัญญาณต่ำที่ใช้งานอยู่เมื่อเข้าถึงหน่วยความจำข้อมูลภายนอก

อินพุตตัวจับเวลา/ตัวนับ 1 หรืออินพุตทดสอบ

อินพุตตัวจับเวลา/ตัวนับ 0 หรืออินพุตทดสอบ

อินพุตคำขอขัดจังหวะ 1. ตรวจพบสัญญาณหรือการตัดต่ำ

อินพุตคำขอขัดจังหวะ 0 ตรวจพบสัญญาณหรือจุดตัดต่ำ

เอาต์พุตเครื่องส่งสัญญาณพอร์ตอนุกรมในโหมด UART เอาต์พุตนาฬิกาในโหมดรีจิสเตอร์กะ

อินพุตตัวรับสัญญาณพอร์ตอนุกรมในโหมด UART ข้อมูลอินพุต/เอาต์พุตในโหมดชิฟต์รีจิสเตอร์

พอร์ต 0 เป็นแบบสองทิศทางและพอร์ต 1-3 เป็นแบบกึ่งสองทิศทาง แต่ละบรรทัดของพอร์ตสามารถใช้แยกกันสำหรับอินพุตหรือเอาต์พุต

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

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

การเข้าถึงพอร์ต I / O สามารถทำได้โดยใช้คำสั่งที่ทำงานบนไบต์ บิตเดียว ซึ่งเป็นการรวมบิตโดยพลการ ในกรณีนี้ ในกรณีที่พอร์ตเป็นทั้งตัวถูกดำเนินการและปลายทางผลลัพธ์ อุปกรณ์ควบคุมจะใช้โหมดพิเศษที่เรียกว่า "อ่าน-แก้ไข-เขียน" โดยอัตโนมัติ โหมดการเข้าถึงนี้เกี่ยวข้องกับการป้อนข้อมูลของสัญญาณที่ไม่ได้มาจากพินภายนอกของพอร์ต แต่จากสลักซึ่งทำให้สามารถแยกการอ่านข้อมูลเอาต์พุตก่อนหน้านี้ที่ไม่ถูกต้องได้ กลไกการเข้าถึงพอร์ตนี้ถูกนำไปใช้ในคำสั่ง:

แผนการบรรยาย

1. บทนำ

2. คำสั่งทางคณิตศาสตร์และตรรกะ

3. คำสั่งการถ่ายโอนข้อมูล

4. การดำเนินการบูลีน

5. คำแนะนำการกระโดด

1. บทนำ

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

โหมดที่อยู่ : ชุดคำสั่ง เอ็มซีเอส-51รองรับโหมดการกำหนดที่อยู่ต่อไปนี้ ที่อยู่โดยตรง: ตัวถูกดำเนินการถูกระบุโดยที่อยู่ 8 บิตในคำสั่ง การระบุที่อยู่โดยตรงใช้สำหรับครึ่งล่างของหน่วยความจำข้อมูลภายในและรีจิสเตอร์เท่านั้น สฟร. ที่อยู่ทางอ้อม: คำสั่งระบุที่อยู่ของรีจิสเตอร์ที่มีที่อยู่ของตัวถูกดำเนินการ การกำหนดที่อยู่ประเภทนี้ใช้สำหรับ RAM ภายนอกและภายใน รีจิสเตอร์สามารถใช้เพื่อระบุที่อยู่ 8 บิต R0และ R1เลือกธนาคารลงทะเบียนหรือตัวชี้สแต็ก เอสพี. สำหรับการกำหนดแอดเดรสแบบ 16 บิต จะใช้เฉพาะรีจิสเตอร์ตัวชี้ข้อมูลเท่านั้น สปท.

ลงทะเบียนคำแนะนำ : ลงทะเบียน R0–R7ธนาคารทะเบียนปัจจุบันสามารถแก้ไขได้ด้วยคำแนะนำเฉพาะที่มีฟิลด์ 3 บิตซึ่งระบุหมายเลขทะเบียนในคำสั่งนั้นเอง ในกรณีนี้ไม่มีฟิลด์ที่อยู่ที่สอดคล้องกันในคำสั่ง การดำเนินงานโดยใช้การลงทะเบียนพิเศษ: คำสั่งบางอย่างใช้รีจิสเตอร์แต่ละตัว (เช่น การทำงานของแอคคิวมูเลเตอร์ สปทฯลฯ) ในกรณีนี้ ไม่ได้ระบุที่อยู่ของตัวถูกดำเนินการในคำสั่งเลย มันถูกกำหนดไว้ล่วงหน้าโดย opcode

ค่าคงที่ทันที : ค่าคงที่สามารถอยู่ในคำสั่งด้านหลัง opcode ได้โดยตรง

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

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

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

โต๊ะ. สัญกรณ์และสัญลักษณ์ที่ใช้ในระบบคำสั่ง

การกำหนดสัญลักษณ์

วัตถุประสงค์

แบตเตอรี่

การลงทะเบียนของธนาคารลงทะเบียนที่เลือกในปัจจุบัน

หมายเลขของรีจิสเตอร์ที่โหลดที่ระบุในคำสั่ง

โดยตรง

ที่อยู่ตำแหน่งข้อมูลภายใน 8 บิตที่กำหนดแอดเดรสได้โดยตรง ซึ่งสามารถเป็นตำแหน่ง RAM ข้อมูลภายใน (0-127) หรือฟังก์ชันพิเศษลงทะเบียน SFR (128-255)

ตำแหน่ง RAM ข้อมูลภายใน 8 บิตที่สามารถระบุตำแหน่งทางอ้อมได้

8 บิต โดยตรงข้อมูลที่รวมอยู่ในรหัสปฏิบัติการ (COP)

ข้อมูลH

MSB (15-8) ของข้อมูล 16 บิตทันที

ข้อมูลล

บิตต่ำ (7-0) ของข้อมูล 16 บิตทันที

ที่อยู่ปลายทาง 11 บิต

สารเติมแต่ง

บิตที่มีนัยสำคัญน้อยที่สุดของที่อยู่ปลายทาง

ไบต์ออฟเซ็ตที่เซ็นชื่อ 8 บิต

บิตที่สามารถกำหนดแอดเดรสได้โดยตรงซึ่งมีที่อยู่ประกอบด้วย CPC ที่อยู่ใน RAM ข้อมูลภายในหรือรีจิสเตอร์ฟังก์ชันพิเศษ SFR

a15, a14...a0

บิตที่อยู่ปลายทาง

เนื้อหาขององค์ประกอบ X

เนื้อหาตามที่อยู่ซึ่งจัดเก็บไว้ในองค์ประกอบ X

ปล่อยองค์ประกอบ M X


+

*
และ
หรือ
แฮคเกอร์
/เอ็กซ์

การดำเนินงาน:
เพิ่มเติม
การลบ
การคูณ
แผนก
การคูณเชิงตรรกะ (และการดำเนินการ)
การบวกเชิงตรรกะ (หรือการดำเนินการ)
นอกจากนี้โมดูโล 2 (XOR)
การผกผันองค์ประกอบ X

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

2. คำสั่งทางคณิตศาสตร์และตรรกะ

วิธี ตัวอย่าง คำสั่งทางคณิตศาสตร์การดำเนินการเพิ่มเติมสามารถทำได้โดยใช้คำสั่งใดคำสั่งหนึ่งต่อไปนี้

เพิ่ม,7 เอฟ 16 - เพิ่มหมายเลข 7 ในเนื้อหาของทะเบียน Aฉ 16 และบันทึกผลลัพธ์ไว้ในทะเบียน A;

เพิ่ม,@ 0 - เพิ่มเนื้อหาของการลงทะเบียน A หมายเลขที่มีที่อยู่ (@ – ทางการค้า ที่ ) จะถูกเก็บไว้ในทะเบียน0 (การกำหนดแอดเดรสทางอ้อม) และจัดเก็บผลลัพธ์ไว้ในรีจิสเตอร์ A;

เพิ่ม A,R7- เพิ่มเนื้อหาของการลงทะเบียน A เนื้อหาของการลงทะเบียน7 และบันทึกผลลัพธ์ในทะเบียน A;

เพิ่ม ก,#127- เพิ่มเนื้อหาของการลงทะเบียน A ซึ่งเป็นหมายเลขที่มีที่อยู่เซลล์เก็บข้อมูลคือ 127 ( # - สัญลักษณ์ตัวเลข) และบันทึกผลลัพธ์ลงในทะเบียน - รีเอ

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

คำแนะนำ มัล เอบีทำการคูณ (การคูณ) ของข้อมูลในตัวสะสมด้วยข้อมูลในรีจิสเตอร์ B โดยวางผลิตภัณฑ์ในรีจิสเตอร์ A (ครึ่งล่าง) และ B (ครึ่งบน)

คำแนะนำ ดีไอวี เอบีหาร (หาร) เนื้อหาของตัวสะสมด้วยค่าในรีจิสเตอร์ B ปล่อยให้ส่วนที่เหลืออยู่ใน B และผลหารในตัวสะสม

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

ตัวอย่าง คำสั่งเชิงตรรกะ: การดำเนินการแบบลอจิคัล AND สามารถดำเนินการได้โดยใช้คำสั่งใดคำสั่งหนึ่งต่อไปนี้:

เอเอ็นแอล,7 เอฟ 16 - การคูณเชิงตรรกะของเนื้อหาของการลงทะเบียน A ด้วยหมายเลข 7ฉ 16 และผลลัพธ์จะถูกเก็บไว้ในทะเบียน A;

เอเอ็นแอล,@ 1 - การคูณเชิงตรรกะของเนื้อหาของรีจิสเตอร์ A ด้วยหมายเลขที่มีที่อยู่เก็บไว้ในรีจิสเตอร์1 (การกำหนดแอดเดรสทางอ้อม) และจัดเก็บผลลัพธ์ไว้ในรีจิสเตอร์ A;

เอเอ็นแอล เอ,อาร์6- การคูณเชิงตรรกะของเนื้อหาของรีจิสเตอร์ A ด้วยเนื้อหาของรีจิสเตอร์6 และเก็บผลลัพธ์ไว้ในทะเบียน A;

ANL A,#53 - การคูณเชิงตรรกะของเนื้อหาของรีจิสเตอร์ A ด้วยตัวเลขที่มีที่อยู่เซลล์จัดเก็บข้อมูลคือ 53 16 และบันทึกผลลัพธ์ในรีจิสเตอร์ A

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

หมุนการดำเนินการ RL A, RLC A ฯลฯ ย้ายเนื้อหาของตัวสะสมไปทางขวาหรือซ้ายหนึ่งบิต ในกรณีของการเปลี่ยนแปลงแบบวนซ้าย บิตที่มีนัยสำคัญน้อยที่สุดจะถูกย้ายไปยังตำแหน่งที่สำคัญที่สุด ในกรณีของการเปลี่ยนแปลงแบบวนที่ถูกต้อง สิ่งตรงกันข้ามจะเกิดขึ้น

การดำเนินการ สวอป เอดำเนินการแลกเปลี่ยน tetrad รุ่นน้องและรุ่นพี่ในตัวสะสม

3. คำสั่งการถ่ายโอนข้อมูล

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

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

คำแนะนำในการถ่ายโอนข้อมูลรวมถึงการดำเนินการถ่ายโอนแบบ 16 บิต MOV DPTR,#data16ซึ่งใช้ในการเริ่มต้นการลงทะเบียนตัวชี้ข้อมูล สปทเมื่อดูตารางในหน่วยความจำโปรแกรมหรือเข้าถึงหน่วยความจำข้อมูลภายนอก

การดำเนินการ XCH A,ไบต์ใช้เพื่อแลกเปลี่ยนข้อมูลระหว่างตัวสะสมและไบต์ที่ระบุที่อยู่ ทีม XHD A,@Riคล้ายกับอันก่อนหน้านี้ แต่สำหรับ tetrad ระดับล่างที่เกี่ยวข้องกับการแลกเปลี่ยนตัวถูกดำเนินการเท่านั้น

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

ในการเข้าถึงตารางที่อยู่ในหน่วยความจำโปรแกรม ให้ใช้คำสั่งต่อไปนี้:

MOVC เอ,@เอ+ สปท ;

MOVC เอ,@เอ+ พีซี .

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

4. การดำเนินการบูลีน

ไมโครวงจร เอ็มซีเอส-51มีโปรเซสเซอร์บูลีน RAM ภายในมี 128 บิตที่สามารถระบุตำแหน่งได้โดยตรง พื้นที่ลงทะเบียนฟังก์ชันพิเศษ สฟรยังสามารถรองรับฟิลด์ได้สูงสุด 128 บิต คำสั่งบิตดำเนินการข้ามแบบมีเงื่อนไข ถ่ายโอน รีเซ็ต การผกผัน และการดำเนินการ AND และ ORบิตที่ระบุทั้งหมดจะพร้อมใช้งานในโหมดการกำหนดแอดเดรสโดยตรง

แบกหน่อย ซีเอฟในฟังก์ชันพิเศษลงทะเบียน "คำสถานะโปรแกรม ปสว' ถูกใช้เป็นตัวสะสมตัวประมวลผลบูลีนหนึ่งบิต

5. คำแนะนำการกระโดด

ที่อยู่การดำเนินการข้ามจะแสดงเป็นภาษาแอสเซมบลีด้วยป้ายกำกับหรือค่าจริงในพื้นที่หน่วยความจำโปรแกรม ที่อยู่สาขาแบบมีเงื่อนไขจะถูกประกอบเข้าเป็นออฟเซ็ตสัมพัทธ์ - ไบต์เครื่องหมายจะถูกเพิ่มเข้าไปในตัวนับโปรแกรม พีซีหากตรงตามเงื่อนไขการเปลี่ยนแปลง ขอบเขตของการกระโดดดังกล่าวอยู่ระหว่างลบ 128 ถึง 127 สัมพันธ์กับไบต์แรกตามคำสั่ง ในฟังก์ชันพิเศษให้ลงทะเบียน "คำสถานะโปรแกรม ปสว» ไม่มีแฟล็กเป็นศูนย์ ดังนั้นคำแนะนำ เจแซดและ เจเอ็นซีตรวจสอบเงื่อนไข "เท่ากับศูนย์" เป็นการทดสอบข้อมูลในตัวสะสม

คำสั่งสาขาแบบไม่มีเงื่อนไขมีสามประเภท: เอสเจเอ็มพี, แอลเจเอ็มพีและ เอเจเอ็มพี– ที่อยู่ปลายทางที่มีรูปแบบแตกต่างกัน คำแนะนำ เอสเจเอ็มพีเข้ารหัสที่อยู่เป็นออฟเซ็ตสัมพัทธ์ และใช้พื้นที่สองไบต์ ระยะการข้ามถูกจำกัดไว้ที่ช่วงลบ 128 ถึง 127 ไบต์ โดยสัมพันธ์กับคำสั่งต่อไปนี้ เอสเจเอ็มพี.

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

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

คำแนะนำการเรียกโปรแกรมย่อยมีสองประเภท: แอลคอลและ โทร. คำแนะนำ แอลคอลใช้ที่อยู่ 16 บิตของรูทีนย่อยที่เรียกว่า ในกรณีนี้ รูทีนย่อยสามารถอยู่ที่ใดก็ได้ในหน่วยความจำโปรแกรม คำแนะนำ โทรใช้ที่อยู่รูทีนย่อย 11 บิต ในกรณีนี้ รูทีนย่อยที่ถูกเรียกจะต้องอยู่ในบล็อกขนาด 2K ไบต์เดียวกันกับคำสั่งต่อไปนี้ โทร. คำสั่งทั้งสองเวอร์ชันจะผลักที่อยู่ของคำสั่งถัดไปลงบนสแต็กและโหลดลงในตัวนับโปรแกรม พีซี ค่าใหม่ที่สอดคล้องกัน

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

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

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

คำแนะนำทั้งหมดในรูปแบบประกอบมีขนาด 1, 2 หรือ 3 ไบต์

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

รูปที่ 1 แผนผังโครงสร้างของคอนโทรลเลอร์ K1830BE751

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

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

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

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

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

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

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

ร่วมกับบทความ "สถาปัตยกรรมของไมโครคอนโทรลเลอร์ MCS-51" พวกเขาอ่าน:


http://เว็บไซต์/MCS51/tablems.php


http://เว็บไซต์/MCS51/SysInstr.php


http://website/MCS51/port.php

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

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

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

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

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


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


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

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

รีเซ็ตสัญญาณ (ระดับแอคทีฟ - สูง);

สัญญาณ RST รีเซ็ต: พีซีและรีจิสเตอร์ฟังก์ชันพิเศษ (SFR) ส่วนใหญ่ ปิดใช้งานการขัดจังหวะและตัวจับเวลาทั้งหมด เลือก 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 จีเอ็นดี ข้อสรุปทั่วไป
21..28 ป2 พอร์ต I/O กึ่งสองทิศทาง 8 บิต; หรือที่อยู่เอาต์พุต A ในโหมดหน่วยความจำภายนอก (VPP หรือ VPD)
29 พีเอ็มอี หน่วยความจำโปรแกรมภายนอกอ่านแฟลชออกเฉพาะเมื่อเข้าถึง ROM ภายนอก
30 เบียร์ ที่อยู่แฟลชที่อยู่หน่วยความจำภายนอก (VPP หรือ VPD);
31 อีเอ เมื่อปิดใช้งาน RPP ระดับ "0" ที่อินพุตนี้จะสลับ MK ไปเป็นคำสั่งที่เลือก จากรันเวย์เท่านั้น ;
39..32 ป0 พอร์ต I/O แบบสองทิศทาง 8 บิต; เมื่อเข้าถึงหน่วยความจำภายนอก ระบบจะออกที่อยู่ A (ซึ่งเขียนไปยังรีจิสเตอร์ภายนอกด้วยสัญญาณ ALE) จากนั้นแลกเปลี่ยนไบต์พร้อมกันกับสัญญาณ ~PME (สำหรับคำสั่ง) หรือ ~WR,~RD (สำหรับข้อมูลใน VPD) เมื่อเข้าถึงหน่วยความจำภายนอกทุกหน่วยจะถูกเขียนไปยังพอร์ตรีจิสเตอร์ P0 ซึ่งจะทำลายข้อมูลที่เก็บไว้ที่นั่น
40 UC จ่ายแรงดันเอาต์พุต

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

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

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

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

รหัสจำ ชื่อ
0E0ชม *ACC แบตเตอรี่
0F0h *ข ลงทะเบียนเครื่องขยายแบตเตอรี่
0D0ชม *ปสว คำสถานะตัวประมวลผล
0B0ชม * ป3 ท่าเรือ 3
0A0ชม * ป2 พอร์ต 2
90ชม * ป1 ท่าเรือ 1
80ชม *ป0 พอร์ต 0
0B8ชม * ไอพี ขัดจังหวะการลงทะเบียนลำดับความสำคัญ
0A8ชม *เช่น ขัดจังหวะการลงทะเบียนมาสก์
99ชม สบีฟ บัฟเฟอร์ตัวรับส่งสัญญาณแบบอนุกรม
98ชม * สคอน การควบคุมพอร์ตอนุกรม / การลงทะเบียนสถานะ
89ชม ทีเอ็มโอดี ลงทะเบียนโหมดจับเวลา / เคาน์เตอร์
88ชม * ทีคอน จับเวลา/ควบคุมเคาน์เตอร์/ลงทะเบียนสถานะ
8ธ ที1 ตัวจับเวลา 1 (ไบต์สูง)
8บ ทีแอล1 ตัวจับเวลา 1 (ไบต์ต่ำ)
8ช TH0 ตัวจับเวลา 0 (ไบต์สูง)
8อา ทีแอล0 ตัวจับเวลา 0 (ไบต์ต่ำ)
83ชม ดีพีเอช Data Pointer Register (DPTR) (ไบต์สูง)
82ชม ดีพีแอล Data Pointer Register (DPTR) (ไบต์ต่ำ)
81ชม เอสพี การลงทะเบียนตัวชี้สแต็ก
87ชม พีคอน ทะเบียนควบคุมพลังงานความต้องการ

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 การกำหนดที่อยู่ทางอ้อม (ระบุด้วยเครื่องหมาย - @) - ตัวถูกดำเนินการอยู่ในหน่วยความจำข้อมูล (RPD หรือ VPD) และที่อยู่ของเซลล์หน่วยความจำมีอยู่ในหนึ่งใน RON ของการกำหนดที่อยู่ทางอ้อม (R0 หรือ R1) ในคำสั่ง PUSH และ POP ที่อยู่จะอยู่ใน stack pointer SP; การลงทะเบียน DPTR สามารถมีที่อยู่ VPD ได้สูงสุด 64K;

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

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

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

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

4. รูปแบบคำสถานะโปรเซสเซอร์ (PSW)

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

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

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

อาร์เอส1 RS0 ธนาคาร ที่อยู่ (ผบ.)
0 0 0 00น..07น
0 1 1 08น..0ฟ
1 0 2 10ชม..17น
1 1 3 18ชม..1Fh

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

ตรรกะ "หรือ" - ORL

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

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

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

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