إنتل MCS-48

وحدة التحكم الدقيقة Intel 8048
شريحة Intel 8749

أُصدرت سلسلة المتحكمات الدقيقة MCS -48 ، وهي أول متحكم دقيق من إنتاج شركة إنتل ، في عام 1976. وكانت أولى أعضائها هي 8048 و 8035 و 8748 . ويُعتبر المتحكم 8048 [ 1 ] أبرز أعضاء هذه العائلة.

في البداية، تم إنتاج هذه العائلة باستخدام تقنية NMOS ( أشباه الموصلات المعدنية المؤكسدة من النوع n ). وفي أوائل الثمانينيات، أصبحت متاحة بتقنية CMOS . واستمر تصنيعها حتى التسعينيات لدعم التصاميم القديمة التي كانت لا تزال تستخدمها.

تتميز سلسلة MCS-48 ببنية هارفارد معدلة ، مع ذاكرة قراءة فقط (ROM) داخلية أو خارجية للبرامج، وذاكرة وصول عشوائي ( RAM ) داخلية (مدمجة) تتراوح سعتها بين 64 و256 بايت . ويتم تخصيص مساحة عناوين مستقلة للإدخال/الإخراج ، منفصلة عن البرامج والبيانات.

على الرغم من استبدال سلسلة MCS-48 لاحقًا بسلسلة MCS-51 الناجحة للغاية ، إلا أنها ظلت تحظى بشعبية واسعة حتى عام 2000 نظرًا لانخفاض تكلفتها، وتوافرها الواسع، وكفاءة استخدام الذاكرة، ومجموعة تعليماتها أحادية البايت، وأدوات التطوير المتطورة. ولهذا السبب، لا تزال هذه البنية تُستخدم في الأجهزة الإلكترونية الاستهلاكية عالية الإنتاج والحساسة للتكلفة، مثل أجهزة التحكم عن بُعد للتلفزيون، ولوحات مفاتيح الكمبيوتر، والألعاب.

الاستخدامات

كانت سلسلة MCS-48 شائعة الاستخدام في لوحات مفاتيح الحواسيب والمحطات الطرفية، حيث تحوّل ضغطات المفاتيح إلى بروتوكولات تفهمها الدوائر الرقمية. كما تتيح هذه السلسلة إمكانية الاتصال التسلسلي، مما يقلل عدد الموصلات اللازمة في كابلات لوحات المفاتيح الخارجية. وقد استُخدم المعالج 8048 في هذا التطبيق منذ طرحه عام 1978.

استخدم جهاز تاندي/راديو شاك TRS-80 موديل II ، الذي صدر عام 1979، معالج 8021 في لوحة مفاتيحه. [ 3 ] يقوم معالج 8021 بمسح مصفوفة المفاتيح، وتحويل إغلاق المفاتيح إلى رمز مكون من 8 بت، ثم يرسل هذا الرمز بشكل تسلسلي إلى واجهة لوحة المفاتيح في النظام الرئيسي. كما يستقبل أوامر لتشغيل أو إطفاء مؤشرات LED. استُخدم معالج 8021 أيضًا في لوحات مفاتيح أجهزة TRS-80 موديلات 12 و12B و16 و16B، بالإضافة إلى تاندي 6000/6000HD. [ 4 ]

استخدمت لوحة مفاتيح IBM PC الأصلية ولوحة مفاتيح سلفها IBM System/23 Datamaster معالج 8048 كوحدة تحكم دقيقة داخلية . [ 5 ] استبدل جهاز PC AT شريحة واجهة الأجهزة الطرفية Intel 8255 في منفذ الإدخال/الإخراج (0x60-0x63 ) بمعالج 8042 يمكن الوصول إليه عبر منفذي الإدخال/الإخراج 0x60 و 0 x64 . [ 6 ] بالإضافة إلى إدارة واجهة لوحة المفاتيح، تحكم المعالج 8042 في وظيفة بوابة خط A20 لوحدة المعالجة المركزية Intel 80286 في جهاز AT، وكان من الممكن برمجته لإعادة ضبط المعالج 80286 (على عكس المعالجات 80386 واللاحقة، لم يكن لدى المعالج 80286 طريقة للتبديل من الوضع المحمي إلى الوضع الحقيقي إلا بإعادة الضبط). دمجت أجهزة الكمبيوتر المتوافقة اللاحقة وظائف المعالج 8042 في أجهزة الإدخال/الإخراج الفائقة الخاصة بها.

استُخدم المعالج 8048 في جهاز ألعاب الفيديو Magnavox Odyssey² ، وسلسلة Korg Trident ، [ 7 ] وجهازَي المزج التناظريين Korg Poly-61 ، [ 8 ] و Roland Jupiter-4 و Roland ProMars [ 9 ] . واستخدم جهاز Sinclair QL المعالج Intel 8049، وهو معالج مشابه له، لإدارة لوحة المفاتيح، ومنافذ عصا التحكم، ومداخل RS-232، والصوت. أما نسخة 8035 الخالية من ذاكرة القراءة فقط (ROM) فقد استُخدمت في لعبة Donkey Kong من Nintendo لتوليد موسيقى الخلفية وبعض المؤثرات الصوتية.

مجموعة التعليمات

جميع تعليمات MCS-48 تتكون من بايت واحد أو بايتين، حيث تشكل التعليمات المكونة من بايت واحد 70% من إجمالي التعليمات. يمكن لـ MCS-48 الوصول إلى 4096 بايت من ذاكرة البرنامج، و256 بايت من ذاكرة الوصول العشوائي (RAM)، و256 بايت من الذاكرة الخارجية، بالإضافة إلى ثمانية عناوين إدخال/إخراج. تستخدم معظم العمليات الحسابية والمنطقية المُراكم كمعامل ووجهة. يتم تعيين ثمانية مواقع ذاكرة كسجلات، مما يسمح بالوصول إليها عبر حقل من 3 بتات مُضمن في العديد من التعليمات. يمكن استخدام اثنين من هذه السجلات كمؤشرات للذاكرة. لا يمكن للتفرعات الشرطية الوصول إلا إلى صفحة الـ 256 بايت الحالية. بينما يمكن لـ JMP وCALL الوصول مباشرةً إلى 2048 موقعًا. للوصول إلى مساحة البرنامج الكاملة البالغة 4096 بايت، يجب استخدام تعليمة اختيار بنك الذاكرة، وهي تعليمة معقدة. مع ذلك، يمكن لتعليمة RET العودة إلى أي مكان في مساحة العناوين. يدعم المعالج المقاطعات بشكل جيد، مع سجلات بديلة لتبديل السياق السريع، وإمكانية استعادة حالة الرايات باستخدام تعليمة RETR. تُنفذ جميع التعليمات في دورة معالجة واحدة أو دورتين. تستغرق كل دورة معالجة 15 ساعة خارجية. [ 2 ]

رمز العمليةالمعاملذاكريدوراتوصف
76543210
00000000برنامج العمل الوطني1لا توجد عملية
00000010حافلة أوتل، أ2مزلاج الحافلة ← أ
ألوي0011بياناتADD ADDC MOV ORL ANL XRL2أ ← أ ألو #
أدهي00100أدلوJMP إضافة2PC ← DBF:addhi:addlo
000أنا0101الإنجليزية/الإسبانية1I ← 0 (EN) أو I ← 1 (DIS)
00000111ديسمبر أ1أ ← أ - 1
00001000في حافلة2حافلة ←
000010PPفي أ، ص2A ← منفذ (p) (المنافذ 1-2)
00001PPMOVD A,Pp2A 0-3 ← 8243 منفذ(p)؛ A 4-7 ← 0 (المنافذ 4-7)
ألو000RINC XCH ORL ANL ADD ADDC MOVaA XRL MOVAa1الوجهة ← الوجهة ALU @Rr (@R0، @R1 فقط؛ لا يوجد DEC)
ألو1RRRINC XCH ORL ANL ADD ADDC MOVaA DEC XRL MOVAa1الوجهة ← الوجهة ALU Rr
قليل10010العنوانعنوان JBB2إذا كان A ∧ (1 << b) فإن PC 0-7 ← addr
أدهي10100أدلواتصل بالعنوان2(SP) ← PSW 4-7 :PC; SP ← SP + 1; PC ← DBF:addhi:addlo
00010110العنوانعنوان فرقة العمل المشتركة2إذا كانت قيمة TF تساوي 1، فإن PC 0-7 ← addr (تم ضبط علامة المؤقت)
00010111شركة أ1أ ← أ + 1
001تي0101EN/DIS TCNTI1TCNTI ← 0 (EN) أو TCNTI ← 1 (DIS) (مقاطعة المؤقت/العداد)
001F0110العنوانJNT0 JT0 عنوان2إذا كانت F = T0 فإن PC 0-7 ← العنوان (مدخل الاختبار 0)
00100111CLR A1أ ← ٠
00110111عريف أول أ1أ ← ¬أ
001110PPOUTL Pp,A2المنفذ (p) ← A (المنافذ 1-2)
00111PPMOVD Pp,A28243 منفذ (p) ← A 0-3 (المنافذ 4-7)
01000010MOV A,T1A ← T (نقل المؤقت إلى A)
010تي0101STRT CNT/T1إذا كانت قيمة T تساوي صفرًا، فابدأ العد، وإلا فابدأ المؤقت.
010F0110العنوانJNT1 JT1 عنوان2إذا كانت F = T1 فإن PC 0-7 ← العنوان (مدخل الاختبار 1)
01000111تبديل أ1أ 0-3 ↔ أ 4-7
01010111DA A1إذا كان A 0-4 > 9 أو AC = 1 فإن A ← A + 6؛

إذا كان A 4-7 > 9 أو C = 1، فإن A ← A + 0x60

01100010MOV T,A1T ← A (نقل A إلى المؤقت)
01100101أوقفوا TCNT1أوقف المؤقت وابدأ العد
01100111RRC A1ج ← أ ٠ ؛ أ ٠-٦ ← أ ١-٧ ؛ أ ٧ ← ج
01110101ENT0 CLK1قم بتعيين T0 كمخرج ساعة
01110110العنوانعنوان JF12إذا كانت F1 = 1 فإن PC 0-7 ← العنوان
01110111RR A1A 0-6 ← A 1-7 ; A 7 ← A 0
1000000RMOVX A,@Rr2A ← خارجي @Rr (@R0، @R1 فقط)
10000011متقاعد2SP ← SP - 1; PC ← (SP)
10شمال00101وظيفة CLR1Fn ← 0
10000110العنوانعنوان JNI2إذا كانت قيمة الإدخال = 0، فإن PC 0-7 ← العنوان (اختبار إدخال المقاطعة منخفض)
10001000بياناتحافلة أورل،#2حافلة ← ∨ #
100010PPبياناتORL Pp,#2A ← منفذ (p) ∨ # (المنافذ 1-2)
10001PPالعالم ص، أ28243 منفذ(p) ← 8243 منفذ(p) ∨ A 0-3 (المنافذ 4-7)
1001000RMOVX @Rr,A2خارجي @Rr ← A (@R0، @R1 فقط)
10010011تراجع2SP ← SP - 1; PC ← (SP); PSW 4-7 ← (SP)
10شمال10101CPL Fn1Fn ← ¬Fn
10010111CLR C1ج ← ٠
10011000بياناتANL BUS,#2حافلة ← ∧ #
100110PPبياناتANL Pp,#2A ← منفذ (p) ∧ # (المنافذ 1-2)
10011PPANLD Pp,A28243 منفذ(p) ← 8243 منفذ(p) ∧ A 0-3 (المنافذ 4-7)
10100011MOVP A,@A2A ← ROM(PC 8-11 :A) (قراءة ذاكرة البرنامج)
10100111CPL C1C ← ¬C
10110011JMPP @A2PC 0-7 ← A (قفزة غير مباشرة)
10110110العنوانعنوان JF02إذا كانت F0 = 1 فإن PC 0-7 ← العنوان
110شمال0101SEL RBn1BS ← n (تحديد بنك السجل)
11000110العنوانعنوان JZ2إذا كانت A = 0 فإن PC 0-7 ← العنوان
11000111MOV A,PSW1أ ← عامل رعاية شخصية
11010111MOV PSW,A1PSW ← أ
11100011MOVP3 A,@A2A ← ROM(0011:A) (قراءة الصفحة 3 من ذاكرة البرنامج)
111شمال0101SEL MBn1DBF ← n (حدد بنك الذاكرة: PC 11 )
111F0110العنوانJNC JC addr2إذا كانت F = C فإن PC 0-7 ← العنوان
11100111آر إل إيه1A 1-7 ← A 0-6 ; A 0 ← A 7
11101RRRالعنوانDJNZ Rr,addr2Rr ← Rr - 1؛ إذا كانت Rr ≠ 0 فإن PC 0-7 ← العنوان
11110111RLC A1ج ← أ ٧ ؛ أ ١-٧ ← أ ٠-٦ ؛ أ ٠ ← ج
76543210المعاملذاكريدوراتوصف
RRR أو R3210ألوألوي | فوري
R0 @R00000أضف A,# (A ← A + #)
R1 @R10001زيادة قيمة الوسيط (الوسيط ← الوسيط + 1)ADDC A,# (A ← A + # + C)
R20010XCH A,arg (A ↔ arg)MOV R,# (R ← #)
R30011
R40100ORL A,arg (A ← A ∨ arg)ORL A,# (A ← A ∨ #)
R50101ANL A,arg (A ← A ∧ arg)ANL A,# (A ← A ∧ #)
R60110أضف A,arg (A ← A + arg)
R70111ADDC A,arg (A ← A + arg + C)
1010MOV arg,A (arg ← A)
1100DEC arg (arg ← arg - 1)
1101XRL A,arg (A ← A ⊻ arg)XRL A,# (A ← A ⊻ #)
1111MOV A,arg (A ← arg)
RRR أو R3210ألوألوي | فوري

مثال على التعليمات البرمجية

الكود المصدري التالي بلغة التجميعadd32 خاص ببرنامج فرعي يُسمى "البرنامج الفرعي " يقوم بجمع عددين صحيحين من 32 بت مخزنين بترتيب النهاية الصغرى . يشير R0 إلى أحد العددين المضافين، بينما يشير R1 إلى العدد المضاف الآخر والنتيجة.

 100 100 BA 04 102 97 103 فهرنهايت 104 71 105 A1 106 18 107 19 108 EA 03 10A 83 10ب 
; Add32 -- ; جمع عددين صحيحين من 32 بت ; ; سجلات الإدخال ; R0 - عنوان المضاف الأول ; R1 - عنوان المضاف الثاني والنتيجة ; السجلات المعدلة ; R0، R1، R2.ORG 100h ; البداية عند 100h ADD32: MOV R2 , #32./8. ; عدد البايتات في 32 بت CLR C ; تجهيز C لـ ADDC ADDLP: MOV A , @ R0 ; الحصول على المضاف الأول ADDC A , @ R1 ; إضافة المضاف الثاني + CY MOV @ R1 , A ; تخزين النتيجة INC R0 ; زيادة مؤشرات الذاكرة INC R1 DJNZ R2 , ADDLP ; تكرار R2 مرة RET END

المتغيرات

معالج دقيق من نوع إنتل 8049، كما هو مستخدم في جهاز قياس متعدد HP3478A. تم تصنيع هذه الشريحة في الأسبوع الثاني من عام 1984.
8749 مع ذاكرة EPROM بالأشعة فوق البنفسجية
وحدة تحكم لوحة المفاتيح Intel P8242 - مزودة ببرنامج Phoenix الثابت لأجهزة الكمبيوتر المتوافقة مع AT
ناشيونال سيميكوندكتور NS87P50D-6 – المصدر الثاني لوحدة التحكم الدقيقة 87P50 المدمجة

يحتوي المعالج 8049 على ذاكرة قراءة فقط (ROM  ) مُقنّعة بسعة 2 كيلوبايت (بينما كان المعالجان 8748 و8749 يحتويان على ذاكرة قراءة فقط قابلة للمسح والبرمجة كهربائيًا (EPROM ))، ويمكن استبدالها بذاكرة قراءة فقط خارجية بسعة 4 كيلوبايت، بالإضافة إلى ذاكرة وصول عشوائي (RAM) بسعة 128 بايت و 27 منفذ إدخال/إخراج . [ 10 ] تقوم وحدة الذبذبات في المعالج بتقسيم تردد إشارة الساعة المدخلة على ثلاثة، ثم تقسم الناتج إلى خمس حالات للآلة. باستخدام أقصى تردد للبلورة وهو 11 ميجاهرتز، ينتج 0.73 مليون تعليمة في الثانية ( MIPS) للتعليمات أحادية الدورة . حوالي 70% من التعليمات أحادية البايت وأحادية الدورة، بينما 30% منها تحتاج إلى دورتين أو بايتين، لذا فإن الأداء النموذجي أقرب إلى 0.5 مليون تعليمة في الثانية (MIPS).      

المتحكم الدقيق [ 2 ]
جهازذاكرة البرنامجذاكرة البياناتملاحظات
8020ذاكرة قراءة فقط 1 كيلوبايت × 8ذاكرة وصول عشوائي 64 × 8مجموعة فرعية من 8048، 20 طرفًا، 13 خط إدخال/إخراج فقط
8021ذاكرة قراءة فقط 1 كيلوبايت × 8ذاكرة وصول عشوائي 64 × 8مجموعة فرعية من 8048، 28 طرفًا، 21 خط إدخال/إخراج
8022ذاكرة قراءة فقط 2K × 8ذاكرة وصول عشوائي 64 × 8مجموعة فرعية من 8048، محول تناظري/رقمي
8035لا أحدذاكرة وصول عشوائي 64 × 8
8038لا أحدذاكرة وصول عشوائي 64 × 8
8039لا أحد128 × 8 ذاكرة وصول عشوائي
8040لا أحد256 × 8 ذاكرة وصول عشوائي
8048ذاكرة قراءة فقط 1 كيلوبايت × 8ذاكرة وصول عشوائي 64 × 827  منفذ إدخال/إخراج
8049ذاكرة قراءة فقط 2K × 8128 × 8 ذاكرة وصول عشوائي27  منفذ إدخال/إخراج
8050ذاكرة قراءة فقط 4K x 8256 × 8 ذاكرة وصول عشوائي
8648ذاكرة قراءة فقط قابلة للمسح والبرمجة لمرة واحدة (OPROM) سعة 1 كيلوبايت × 8ذاكرة وصول عشوائي 64 × 8ذاكرة القراءة فقط القابلة للبرمجة لمرة واحدة (OPROM) من المصنع
8748ذاكرة قراءة فقط قابلة للمسح والبرمجة (EPROM) سعة 1 كيلوبايت × 8 [ 11 ]64 × 8 ذاكرة وصول عشوائي [ 11 ]ذاكرة برنامج قابلة للتوسيع بسعة 4 كيلوبايت، [ 11 ] مؤقتان 8  بت، 27  منفذ إدخال/إخراج
8749ذاكرة قابلة للمسح والبرمجة (EPROM) سعة 2 كيلوبايت × 8128 × 8 ذاكرة وصول عشوائيمؤقتان 8  بت، 27  منفذ إدخال/إخراج
87P50مقبس ذاكرة القراءة فقط الخارجية256 × 8 ذاكرة وصول عشوائييحتوي على مقبس إضافي لذاكرة EPROM من طرازات 2758/2716/2732

تُعد سلسلة UPI-41 نسخةً معدلة من MCS-48، وهي مُصممة للأجهزة الطرفية، وتستجيب عند الطلب عبر ناقل بيانات متوازٍ. ولهذا السبب، تم دمج واجهة ناقل بيانات متوازٍ مُخزنة مؤقتًا في هذه الرقاقات، كما تم تعديل بعض تعليمات رمز العملية لتمكين تشغيل هذه الواجهة. [ 12 ]

واجهة طرفية عالمية
جهازذاكرة البرنامجذاكرة البياناتملاحظات
8041ذاكرة قراءة فقط 1 كيلوبايت × 8ذاكرة وصول عشوائي 64 × 8واجهة الأجهزة الطرفية العالمية (UPI)
8041AHذاكرة قراءة فقط 1 كيلوبايت × 8128 × 8 ذاكرة وصول عشوائييو بي آي
8741Aذاكرة قابلة للمسح والبرمجة (EPROM) سعة 1 كيلوبايت × 8ذاكرة وصول عشوائي 64 × 8UPI، إصدار EPROM من 8041
8741هـذاكرة قراءة فقط قابلة للمسح والبرمجة لمرة واحدة (OPROM) سعة 1 كيلوبايت × 8128 × 8 ذاكرة وصول عشوائيإصدار UPI، OTP EPROM من 8041AH
8042AHذاكرة قراءة فقط 2K × 8256 × 8 ذاكرة وصول عشوائييو بي آي
8242ذاكرة قراءة فقط 2K × 8256 × 8 ذاكرة وصول عشوائيUPI، مبرمج مسبقًا ببرنامج ثابت لوحدة تحكم لوحة المفاتيح [ 13 ]
8742ذاكرة قابلة للمسح والبرمجة (EPROM) سعة 2 كيلوبايت × 8128 × 8 ذاكرة وصول عشوائيإصدار UPI، EPROM
8742هـذاكرة قراءة فقط قابلة للمسح والبرمجة لمرة واحدة (OPROM) سعة 2 كيلوبايت × 8256 × 8 ذاكرة وصول عشوائيإصدار UPI، OTP EPROM من 8042AH

وحدات التحكم الدقيقة المشتقة

كانت شركة فيليبس لأشباه الموصلات (التي تُعرف الآن باسم NXP ) تمتلك ترخيصًا لإنتاج هذه السلسلة، وقامت بتطوير عائلة MAB8400 الخاصة بها استنادًا إلى هذه البنية. وكانت هذه أولى وحدات التحكم الدقيقة المزودة بواجهة I²C مدمجة ، وقد استُخدمت في أول مشغلات الأقراص المدمجة من فيليبس ( ماجنافوكس في الولايات المتحدة) (مثل CD-100). [ 14 ]

انظر أيضاً

مراجع

  1. لوز، ديفيد؛ بلوم الابن، هنري؛ إيكيس، جون؛ فينغ، يونغ؛ كلاين، باربرا؛ رافائيل، هوارد؛ ستام، ديفيد (30 يوليو 2008). جلسة التاريخ الشفوي حول تطوير وترويج وحدة التحكم الدقيقة إنتل 8048 (ملف PDF) . مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 27 ديسمبر 2014.
  2. دليل مستخدم عائلة الحواسيب الصغيرة أحادية الشريحة MCS-48 ( ملف PDF) (إصدار AFN·01300A-1 ). إنتل. سبتمبر 1980. تاريخ الاطلاع: 15 نوفمبر 2025 . 
  3. دليل مرجعي تقني لجهاز TRS-80 موديل II . راديو شاك. صفحة 135. 
  4. دليل خدمة تاندي 6000/6000HD . تاندي/راديو شاك. 1985. صفحة 213. 
  5. "القسم 4: لوحة المفاتيح"، المرجع التقني: الحاسوب الشخصي ، مكتبة مراجع أجهزة الحاسوب الشخصي ( طبعة منقحة)، شركة آي بي إم ، أبريل 1984 
  6. "القسم 1: لوحة النظام"، مرجع تقني: الحاسوب الشخصي AT ، مكتبة مراجع أجهزة الحاسوب الشخصي، شركة IBM، سبتمبر 1985
  7. "دليل خدمة Korg Trident" . Korg. ص 4. تم الاطلاع عليه بتاريخ 10 فبراير 2018 عبر Synthfool. 
  8. "دليل صيانة جهاز Korg Poly-61" (ملف PDF) . مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 2010-06-02 . تم الاطلاع عليه بتاريخ 2013-03-07 .
  9. غوردون ريد (نوفمبر 2004). "تاريخ رولاند، الجزء الأول: 1930-1978" . تاريخ رولاند . مجلة ساوند أون ساوند . تاريخ الاطلاع: 29 نوفمبر 2010 .
  10. شركة إنتل 1978 .
  11. 1 2 3 هايز، جون ب. (1978). هندسة الحاسوب وتنظيمه . شركة ماكجرو هيل الدولية للنشر. الصفحات 57-59 . ISBN  0-07-027363-4.
  12. "دليل لغة التجميع MCS-48 وUPI-41" (ملف PDF) . إنتل. 1978. ص 4-1 . تاريخ الاسترجاع: 28-02-2026 . 
  13. "UPI-41AH/42AH واجهة طرفية عالمية، وحدة تحكم دقيقة تابعة 8 بت" (ملف PDF) . إنتل. نوفمبر 1994. ص 2. تاريخ الاسترجاع: 19 يوليو 2022 . 
  14. ورقة البيانات (pdf) عائلة Philips MAB8400

فهرس

MCS-48
UPI-41