Download as pdf or txt
Download as pdf or txt
You are on page 1of 15

‫‪Unit three‬‬ ‫ألوحـ ـ ـ ـ ـ ـدة الثالثة‬

‫‪PIC16f84A‬‬ ‫بنٌة المسٌطر الصغري‬


‫ُمقدمة‪:‬‬

‫نتعرف على بُنٌة المُسٌطر الصغري ‪ Architecture of Microcontroller‬وعلى َتنظٌم ذاكرة المُسٌطر الصغري‬ ‫سوف َ‬
‫َ‬ ‫فً هذه الوحدة‬
‫‪ ، Memory Organization‬كما سنتعرف من خالل هذة الوحدة على كٌفٌة تهٌئة المسٌطر الصغري للعمل ‪ ،‬أرجوا من القارء ال َكرٌم‬
‫قراءة هذه الوحدة ب َتركٌز ‪ ،‬ألن هذه الوحدة ُتعتبر أساس الفهم ال َ‬
‫صحٌح ل َبرمجة المُسٌطر ال َدقٌق و عملة ‪.‬‬

‫ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ ( ‪ ) 41‬ـــــــــــــــــــ‬ ‫المسٌطر الدقٌق ‪Microcontroller‬‬


‫المسيطر الصغري ‪ Microcontroller‬؟‬
‫ما هو ُ‬
‫المسٌطر الدقٌق ‪ Microcontroller‬عبارة عن شرٌحة الكترونٌة ‪ ، Chip‬مضمنة ‪ Embedded‬داخل منظومة ‪ system‬أو دائرة لتأدٌة‬
‫وظائف معٌنة ‪ٌُ ،‬ستخدم المسٌطر الدقٌق فً حٌاتنا الٌومٌة بشكل واسع مثل ؟‬

‫‪Video Games‬‬ ‫أجهزة االلعاب الالكترونٌة‬ ‫‪o‬‬


‫‪Split, Air-conditions‬‬ ‫أجهزة الكهربائٌة مثل‬ ‫‪o‬‬
‫‪Digital Clocks‬‬ ‫األجهزة المكتبٌة مثل‬ ‫‪o‬‬
‫‪PID,PLC‬‬ ‫أجهزة السٌطرة الرقمٌة‬ ‫‪o‬‬

‫ٌتوفر المُسٌطر ال َدقٌق فً السوق ب َشكل دائرة متكاملة )‪ ، integrated circuit (IC‬بأبعاد عدة سنتٌمترات ‪ ، Centimeter‬الشــــــكل‬
‫‪ٌ Figure 3.1‬وضح شرٌحة مُســـــٌطر َدقٌق ‪ٌ ،‬وجـــد داخـل هـــــــذه الدائـرة المــتكــاملة ‪ ، IC‬معالج ‪، Processor‬‬
‫وذاكــرة لخزن البرنامج ‪ ،‬وتحـــتوي على أطراف ألدخـــــال وأخراج البٌانات ‪ Data‬او‬
‫االشـــــــارات ‪ ، Signals‬فً أنواع معٌنة تـوجد مـــحوالت أشــارات تمــاثلٌة الى رقمٌة‬
‫)‪ ،Analog to Digital Converter (ADC‬ومحـوالت أشـــارات رقـــمٌة الى تمــــاثلٌة‬
‫)‪ ،Digital to Analog Converter (DAC‬كــــــما ٌحتــوي المسٌـطر الدقٌــــق عــــلى‬
‫وظائف إضـافٌة مــثل المـــؤقتات ‪ Timer‬والعــدادات ‪ ، Counter‬ومعـــــدالت االشـاره‬
‫)‪ Pulse Width Modulation (PWM‬الستـــخدامها فً عمـلٌات تضمٌن االشـارات‬
‫وذلك بغٌة ارسالها ‪.‬‬

‫‪Figure 3.1‬‬

‫سوف نتحدث فً هذه الوحدة عن بُنٌة أحد انواع األجهزة القابلة لل َبرمجة وهو المُسٌطر الدَقٌق ‪ Microcontroller‬من َشركة ‪Microchip‬‬
‫‪ ،‬تـــــــــــــتنتج شــــــــــــركة ‪ Microchip‬سِ لــــــــــــسِ لة من المُسٌـــــــــــــــطرات ال َدقٌــــــقة ‪ Microcontroller‬تحــــــــــتَ أســـــــــم‬
‫)‪ ، PIC(Programmable interface Controller‬من هذه السلسلة هو المتحكم ‪ٌ ، PIC16F84A‬تصف هذا المسٌطر بالمواصفات‬
‫التالٌة‪،‬‬

‫ٌحتوي هذا المسٌطر على ‪ 35‬تعلٌمة فقط ‪.‬‬ ‫‪o‬‬


‫جمٌع التعلٌمات تأخذ دورة ماكنة واحدة ‪ One machine cycle‬ما عدا َتعلٌمات التفرع ‪ jump instruction‬فأنها تأخذ دورتان‬ ‫‪o‬‬
‫ماكنة‪.‬‬
‫ٌعمل على تردد ‪ ، 4 Mega Hertz‬دورة الماكنة لهذا المسٌطرة مكونة من ‪ 4‬نبظات التمام تفٌذ تعلٌمة كاملة ‪ ،‬أي أن فترة الزمنٌة‬ ‫‪o‬‬
‫التً تستغرقها التعلٌمة الواحدة هو ‪. 4 micro-second‬‬
‫ٌحتوي على ذاكرة برنامج ‪ program memory‬قدرها ‪1 kilo-byte‬‬ ‫‪o‬‬
‫ٌحتوي على مؤقت ‪ٌ Timer‬ستخدم فً عملٌات التوقٌت ‪ Timer‬والعد ‪Counting‬‬ ‫‪o‬‬
‫‪ٌ o‬حتوي على ذاكرة ‪ EEPROM‬لخزن البٌانات ‪ Data‬واسترجاعها‪.‬‬

‫ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ ( ‪ ) 40‬ـــــــــــــــــــ‬ ‫المسٌطر الدقٌق ‪Microcontroller‬‬


‫‪Architecture of PIC16F84A‬‬ ‫المسيطر الصغري ‪PIC16f84A‬‬
‫بُنية ُ‬
‫بنٌة المُسٌطر ال َدقٌق ال تختلف َكثٌراً عن بُنٌة باقً األجهزة القابلة لل َبرمجة ‪ ،‬مثل ‪ Microprocessor‬وغٌرها ‪ ،‬مُعظم األجهزة القابلة للبرمجة‬
‫تتكون من شقٌن‬

‫‪Hardware‬‬ ‫‪ o‬البنٌة الصلبة‬


‫‪Software‬‬ ‫‪ o‬بنٌة البرمجٌات‬

‫‪Hardware‬‬ ‫البُنية الصلبة‬

‫وهً المكونات المادٌة الملموسة ‪ Physical Component‬من االجهزة القابلة للبرمجة ‪ ،‬مثل جهاز الحاسوب ٌتكون من لوحة المفاتٌح‬
‫‪،‬المعالج‪ ،‬الذاكرة ‪ ،‬هذه المواد كلها تعتبر مكونات صلبة ‪ ، Hardware‬اما نظام التشغٌل والبرمجٌات فتعتبر مكونات البرمجٌات‬
‫صلبة‬
‫‪ Software‬التً تدٌر وتشرف على عمل المكونات الصلبة ‪، Hardware‬فً هذه الوحدة سنتطرق لبُنٌة المُسٌطر الدَ قٌق ال َ‬
‫فسنتركها لوحدات الحقة ‪ ،‬الشكل ‪ٌ Figure 3.2‬وضح بنٌة المسٌطر الدقٌق ‪، PIC16f84A‬‬
‫‪ Hardware‬اما ال َبرمجٌات َ‬

‫‪Figure 3.2‬‬

‫ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ ( ‪ ) 42‬ـــــــــــــــــــ‬ ‫المسٌطر الدقٌق ‪Microcontroller‬‬


‫)‪Central Processing Unit (CPU‬‬ ‫وحدة المعالجة المركزية ‪CPU‬‬

‫وحدة المُعالجة ال َمركزٌة ‪ CPU‬كما مر علٌنا فً الوحدة السابقة هً قلبُ المُسٌطر ال َدقٌق ‪ ، Microcontroller‬وهً المسؤولة عن‬
‫َجلب وفك شفرة وتنفٌذ التعلٌمة ‪ ، Instruction‬كما َعرفنا سابقا ً أن دورة الماكنة تبدء بعملٌة ‪ Fetch‬أي َجلب ال َتعلٌمة من ذاكرة‬
‫البرنامج ‪ program memory‬لتخزن فً مسجل التعلٌمة )‪ IR(instruction Register‬وفق َ‬
‫الخطوات التالٌة ‪:‬‬

‫‪ٌ -0‬قوم عداد الرنامج )‪ PC(Program Counter‬بعنونة الذاكره كما هو موضع فً الشكل ‪ ،Figure 3.2‬وذلك اللتقاط ال َتعلٌمة من‬
‫الذاكرة ‪ ،‬الحظ أن المسٌطر ‪ PIC16f84A‬طول عداد البرنامج ‪ PC‬له هو ‪. 13-bit‬‬

‫‪ -2‬التقاط التعلٌمة من ذاكرة البرنامج ‪ Program Memory‬التً عنوانها هو محتوٌات َعداد البرنامج ‪ ، PC‬لٌنتهً بها ال َمطاف فً‬
‫مُسجل ال َتعلٌمة ‪ ، Instruction Register‬الحظ أن طول الكلمة ‪ Word‬التً تخرج من ذاكرة البرنامج هو ‪ ، 14-bit‬الحظ‬
‫الشكل ‪ ،Figure 3.2‬أن الغاٌة األساسٌة الغلب التعلٌمات فً المسٌطر الدقٌق ‪ Microcontroller‬هو استهداف أو الوصول‬
‫‪ ،File Register‬هناك طرٌقتان لعنونة او الوصل الى ‪ File Register‬هما ؟‬

‫العنونة المباشرة ‪Direct Addressing‬‬‫‪َ -0‬‬


‫‪ -2‬ال َعنونة الغٌر مباشرة ‪Indirect Addressing‬‬

‫‪Direct Addressing‬‬ ‫العنونة المباشرة‬

‫أن ‪ ، File Register‬عبارة عن وحدة َخزنٌة ‪ ،‬تستخدم لخزن البٌانات المهمة والمراد معالجتها ‪ ،‬وكذلك تحتوي على مواقع لها عالقة‬
‫باعدادات ‪ Configuration‬وحدات األدخال واألخراج وغٌرها ‪ ،‬موضوع ‪ File Register‬سٌتم مناقشة باسهاب الحقا ً ‪ ،‬لنأخذ أول اٌعاز لنا‬
‫فً المسٌطر الدقٌق ‪ Microcontroller‬الذي هو ‪،‬‬

‫‪BSF Reg. , b‬‬

‫تقوم هذه التعلٌمة او األٌعاز برفع احد بتات مسجل ‪ Register‬الى القٌمة واحد ‪ ،‬تتكون هذه التعلٌمة من جزئٌن ‪،‬‬

‫‪ -0‬الجزء األول وهً شفرة ال َعملٌة )‪ Opcode (operation code‬التً هً ‪ BSF‬وهً اختصار لكلمة ‪ ، Bit set flag‬التً تخبر‬
‫المعالج او المسٌطر الدقٌق بالوضٌفة النً نرٌد اجراءها التً هً جعل أحدى بتات ‪ bit‬مُسجل ‪ Register‬قٌمتة واحد‪.‬‬
‫‪ -2‬الجزء الثانً هو المُعامالت ‪ Operand‬الذي هو ‪ Reg.‬الذي ٌقصد به المسجل الهدف الذي نرٌد رفع احد بتاتة الى القٌمة واحد ‪،‬‬
‫والجزء ‪ b‬والذي هو رقم البت المراد جعل او رفع قٌمته الى الواحد من المسجل المستهدف ‪،‬‬

‫مالحظة‪:‬‬
‫أن سعة المسجالت ‪ Registers‬ال َموجدوه فً ‪ File Register‬هو ‪ ، 8-bit‬لذلك ٌطلق على المسٌطر الدقٌق ‪ PIC16f84A‬أنة نظـــــــام ذو‬
‫‪، 8-bit‬‬

‫ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ‬

‫ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ ( ‪ ) 43‬ـــــــــــــــــــ‬ ‫المسٌطر الدقٌق ‪Microcontroller‬‬


‫مثال ‪3.1‬‬

‫أحد المسجالت الموجدة فً ‪ file Register‬هو المسجل الذي عنوانة ‪ 0x0C‬بالنظام السادس عشر‪ ،‬المطلوب جعل قٌمة البت ‪ bit‬الثالث‬
‫تساوي واحد من هذا المسجل ؟‬

‫ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ‬

‫الحل‪:‬‬

‫‪BSF 0x0C , 2‬‬ ‫‪; 0000 0100‬‬

‫مالحظة‪:‬‬

‫الرقم وذلك للدالله على أن الرقم بالنظام السادس عشر ‪ Hex‬مثالً ‪0x02,0x08,0x0D‬‬
‫توضع السابقة ‪ 0x‬قبل َ‬

‫الحظ أن المسجل ‪ 0x0C‬قد تم الوصول الٌة مباشرتا َ من التعلٌمة ‪ BSF 0x0C,3‬وهذا ما ٌسمى بالعنونة المباشرة ‪ ،‬لنعود الى الشكل ‪Figure‬‬
‫‪ ،3.2‬ان طول الكلمة الخارجة من الذاكرة ‪ 14-bit‬وهً التً ستحمل التعلٌمة ‪ BSF 0x0C,3‬الى مسجل التعلٌمة ‪ ، IR‬وعند وصولها تنشطر‬
‫الى جزئٌن كما هو موضح فً الشكل ‪ ، Figure 3.2‬جزء شفرة العملٌة ‪ Opcode‬لٌذهب الى وحدة فك الشفرة التنفٌذ ‪Instruction‬‬
‫‪ ، Decoder And Execution‬وجزء المعامالت ‪ Operand‬حامالً المـــعامالت التً تمـــــثل عنوان المســــــجل المراد اجراء‬
‫العمــــــــلٌة علٌة عبر ناقل العنونة المباشرة ‪ Direct Addressing‬الى ‪ file Register‬الحظ فً الشكل ‪ Figure 3.2‬هناك شًء اسمة‬
‫‪ Addr. MUX‬وهو اختصار ‪ Address multiplexing‬أي مازج العنوان وهو مثل المفتاح الذي ٌحول بٌن العنونة المبـــــــاشرة والعنوانة‬
‫الغٌر مباشرة ‪ ،‬فً عملٌة العنونة المبـــــــاشرة سٌرتبط ‪ File Register‬مع ناقل العنـــــــــونة المباشر ‪ Direct Addressing‬عن طرٌق‬
‫المازج ‪،Addr. MUX‬‬

‫‪Direct Addressing‬‬ ‫العنونة الغير المباشرة‬

‫ٌقصد بالعنونة الغٌر مُباشرة هو أن عنونه أو الوصول الى أحد مسجالت ‪ File Register‬ال ٌتم عن طرٌق التعلٌمة ‪ ، instruction‬بل ٌتم‬
‫عن طرٌق مسجل أخر خاص وهو المسجل )‪ FSR(file select Register‬الحظ الشكل ‪ ، Figure 3.3‬اذا حمل هذا المسجل على سبٌل‬
‫المثال بالقٌمة ‪ FSR = 0X0C‬فان هذه المسجل ‪ٌ FSR‬شٌر بذلك الى المسجل الذي عنوانة ‪ 0X0C‬من ‪ ، File Register‬وتضهر محتوٌات‬
‫المسجل ‪ 0X0C‬الذي عنون عن طرٌق المسجل ‪ FSR‬على مسجل ٌسمى )‪ INDF(indirect register flag‬الذي هو موجــــــــود ضمن‬
‫‪ File Register‬لٌتم معالجتها ‪ ،‬هذا الموضوع سٌتم مناقشتة بشكل اوسع فً وحدات الحقة ‪،‬‬

‫ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ ( ‪ ) 44‬ـــــــــــــــــــ‬ ‫المسٌطر الدقٌق ‪Microcontroller‬‬


‫‪Figure 3.3‬‬

‫الشكل ‪Figure 3.3‬هو جزء من بنٌة معالج المسٌطر ‪َ ، PIC16f84A‬عمدت الى تقسم بنٌة المعالج وذلك لكً ٌسهل عملٌة فهما واستٌعابها ‪،‬‬
‫لنفهم ما هو مسجل العمل ‪ Working Register‬او ‪ W Reg.‬الموجود فً الشكل ‪ٌ Figure 3.2‬جب علٌنا فهم ألٌة عمل وحدة الحساب‬
‫والمنطق ‪ ALU‬فً المسٌطر ‪،PIC16f84A‬‬

‫)‪ALU (Arithmetic and logic unit‬‬ ‫وحدة الحساب والمنطق‬

‫العمل )‪W(work register‬‬ ‫وهً الوحدة المسؤولة عن إجراء ال َعملٌات الحِسابٌة وال َمنطقٌة ‪ ،‬وأهم ما فً وحدة الحساب والمنطق هو مُسجل َ‬
‫‪ ،‬وهو مسجل ٌستخدم بكثرة فً المُسٌطر ال َدقٌق ‪ ، PIC16f84A‬لكً نفهم ألٌة عمل وحدة الحساب والمنطق ‪ٌ ، ALU‬جب ان ننتبة الى ‪،‬‬

‫الحظ فً الشكل ‪ ، Figure 3.4‬أن أحد مُعامالت أو مدخالت وحدة الحساب والمنطق ‪ ALU‬هو مُسجل العمل ‪ ، W Reg.‬أي عند‬ ‫‪‬‬
‫الجمع او أي عملٌة داخل وحدة الحساب والمنطق ‪ٌ ALU‬جب أن ٌكون مُسجل ال َعمل ‪ W Reg.‬مُحمل بقٌمة أحد معامالت‬ ‫اجراء َعملٌة َ‬
‫العملٌة الحسابٌة ‪،‬‬
‫الحظ فً الشكل ‪ ،Figure 3.4‬ان الطرف الثانً او المعامل الثانً لوحدة ‪ٌ ، ALU‬حمل من اتجاهٌن ‪ ،‬المعامل الثانً أما ان ٌكون رقم‬ ‫‪‬‬
‫‪ Literal‬قادم من التعلٌمة مباشرتا ً ‪ ،‬او ان المعامل الثانً قادم من أحد مسجالت ‪. File Register‬‬
‫الحظ ان ناتج وحدة ‪ ALU‬أما أن ٌخزن فً مسجل العمل ‪ ،‬وذلك عند ما تكون االشارة ‪ D=0‬او ٌخزن فً احد مسجالت ‪File‬‬ ‫‪‬‬
‫‪ Register‬عندما تكون ‪ٌ ، D=1‬تم تعٌٌن قٌمة ‪ D‬من التعلٌمة مباشرتا ً ‪.‬‬

‫كما ان لمسجل العمل فوائد كثٌرة ‪ ،‬حٌث انه الوسٌط فً اكثر تعلمٌات ‪ instruction‬المُسٌطر ال َدقٌق ‪ ،‬وهذا ما سوف تكتشفة فً وحدة‬
‫البرمجة أنشاء هللا‪.‬‬

‫ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ ( ‪ ) 45‬ـــــــــــــــــــ‬ ‫المسٌطر الدقٌق ‪Microcontroller‬‬


‫‪Figure 3.4‬‬

‫‪Status Register‬‬ ‫مسجل الحالة‬

‫هناك مسجل ضمن بنٌة المُسطر ال َدقٌق ‪ٌ PIC16f84A‬سمى مُسجل الحالة ‪ Status Register‬أو مُسجل األعالم ‪ Flag register‬وسمً‬
‫بمُسجل الحالة النة ٌُسجل حالة أو ناتج العملٌة التً أؤدٌت داخل وحدة الحِساب وال َمنطق ‪ ، ALU‬وهو مُسجل مكون من ‪ 3-bit‬كل بت ٌشٌر‬
‫الى حالة من الحاالت التالٌة ‪،‬‬

‫‪ -0‬علم التصفٌر ‪ : Zero flag‬عندما ٌصبح ناتج َعملٌة حِسابٌة داخل وحدة ‪ٌ ALU‬ساوي صفر فان هذا العلم ٌرفع الى الواحد وإال فانة‬
‫ٌصبح صفر ‪.‬‬
‫‪ -2‬علم المحمل ‪ٌ : Carry flag‬رفع هذا العلم الى الحالة واحد عند ظهور محمل ‪ ، Carry‬من الخانة االكثر أهمٌة ‪ MSB‬وإال اصبح قٌمة‬
‫العلم صفر ‪.‬‬
‫هذا َ‬
‫‪ -3‬علم المحمل الثانوي ‪ٌ : Decimal carry flag‬رفع هذا العلم الى الحالة واحد عند ظهور محمل من البت الثالث الى البت الرابع وإال‬
‫تصبح قٌمة هذا العلم صفر ‪.‬‬

‫مالحظة‪:‬‬

‫حاالت األعالم الثالثة هذه تجده مضمنة داخل مسجل فً ‪ٌ File Register‬سمى مسجل الحالة ‪ ، Status‬الشكل ‪ٌ Figure 3.5‬بٌن أشارات خارجة من‬
‫وحدة ‪ ALU‬ذاهبة الى مسجل الحالة ‪، Status Register‬‬

‫ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ ( ‪ ) 46‬ـــــــــــــــــــ‬ ‫المسٌطر الدقٌق ‪Microcontroller‬‬


‫‪Figure 3.5‬‬

‫‪Control Unit‬‬ ‫وحدة السيطرة‬

‫صل ال َتعلٌمة الى مسُجل ال َتعلٌمة ‪ IR‬لتنشطر الى جزئٌن جزء المعامالت ‪ Operand‬الذي ٌذهب عن‬
‫الجلب ‪ Fetch cycle‬ت َ‬
‫بعد أن تتم َعملٌة َ‬
‫طرٌق ناقل العنونة المباشرة ‪ Direct Addressing‬لٌصل الى ‪ Register File‬عن طرٌق مازج العنوان ‪ ، Address Multiplexer‬والجزء‬
‫األخر هو األٌعاز او شفرة العملٌة ‪ Opcode‬الذي ٌذهب الى وحدة فك الشفرة لكً تمٌز الشفرة وتنفذ ‪ ، Decoding and execution‬ان‬
‫الوحدة المسئولة عن كل هذه ال َعملٌات هً وحدة السٌطرة او وحدة تولٌد دورة الماكنة ‪، Machine Cycle Generation‬أن وحدة السٌطرة‬
‫فً المُسٌطر ال َدقٌق ‪ PIC16f84A‬تتكون من أربع نبظات تسمى ‪ Q0,Q1,Q2,Q3‬الشكل ‪ٌ Figure 3.6‬بٌن مخطط صندوقً بسٌط لوحدة تولٌد‬
‫دورة الماكنة ‪،‬‬

‫‪Q3‬‬ ‫‪Q2‬‬ ‫‪Q1‬‬ ‫‪Q0‬‬

‫‪Frequency‬‬
‫‪Machine Cycle Generation‬‬
‫‪Oscilltor‬‬

‫‪Figure 3.6‬‬

‫ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ ( ‪ ) 47‬ـــــــــــــــــــ‬ ‫المسٌطر الدقٌق ‪Microcontroller‬‬


‫‪Memory Organization‬‬ ‫تنظيم الذاكرة‬

‫هناك ذاكرتان فً وحدة المسٌطر الدقٌق ‪ PIC16f84A‬هما ذاكرة البرنامج ‪ Program memory‬وذاكر البٌانات ‪ ، data memory‬لكل‬
‫من هاتان الذاكرتان نواقلهما ‪ Buses‬الخاصة ‪ ،‬لذلك ٌمكن قراءة الذاكرتان فً نفس الدورة ‪. Cycle‬‬

‫‪Data memory‬‬ ‫ذاكرة البيانات‬

‫فً المسٌطر الدقٌق ‪ُ PIC16f84A‬تسمى ذاكرة البٌانات بـ ‪ file Register‬وهً ذاكرة مكونة من ‪ 256‬موقع او ‪ FFh‬بالنظام السادس عشر‬
‫‪ ، Hex.‬كل موقع متكون من ‪ ، 8-bit‬هذه الذاكرة مقسمة الى جــــزئٌن ‪ Two bank‬هما ‪ Bank 0‬الــذي ٌبدء من العنوان ‪ 00h‬الى‬
‫العنوان ‪ 7Fh‬و ‪ Bank 1‬الذي ٌبدء من العنوان ‪ 80h‬الى العنوان ‪ ، FFh‬أي ان كل ‪ٌ bank‬تكون من ‪ 128‬موقع ‪ ،‬كما هو موضح فً‬
‫الشكل ‪Figure 3.7‬‬

‫‪Figure 3.7‬‬

‫تقسم ذاكرة البٌانات ‪ File register‬الى قسمٌن ‪،‬‬

‫مجموعة مُسجالت األغراض الخاصة )‪Special Purpose Registers(SPRs‬‬ ‫‪o‬‬


‫مجموعة مُسجالت األغراض العامة )‪General Purpose Registers(GPRs‬‬ ‫‪o‬‬

‫ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ ( ‪ ) 48‬ـــــــــــــــــــ‬ ‫المسٌطر الدقٌق ‪Microcontroller‬‬


‫)‪General Purpose Register(GPRs‬‬ ‫مسجالت األغراض العامة‬

‫تستخدم هذة هذه المسجالت للغراض العامة ‪ ،‬مثل خزن المعامالت ‪ ، Operands‬خزن نواتج العملٌات ‪ ، Result‬وغٌرها من ال َعملٌات‬
‫تبدء هذه المسجالت عند ‪ bank 0‬من الموقع ‪ 0Ch‬وتنتهً عند الموقع ‪ ، 4Fh‬اما عند ‪ bank 1‬فانها تبدء من الموقع ‪ 8Ch‬وتنتهً عند الموقع‬
‫‪. CFh‬‬

‫)‪Special Purpose Register(SPRs‬‬ ‫مسجالت األغراض الخاصة‬

‫تستخدم هذة هذه المسجالت للغراض الخاصة ‪ ،‬مثل تهٌئة أطراف ‪ Peripheral‬المسٌطر الدقٌق ‪ ، PIC16f84A‬تهئٌة المؤقتات والعدادات‬
‫وغٌرها من ال َعملٌات ‪ ،‬لكل موقع من هذه المواقع له وضٌفة معٌنة ستتعرف علٌها خالل مواصلتك لقراءة الكتاب ‪ ،‬تبدء هذه المسجالت عند‬
‫‪ bank 0‬من الموقع ‪ 00h‬وتنتهً عند الموقع ‪ ، 0Bh‬اما عند ‪ bank 1‬فانها تبدء من الموقع ‪ 80h‬وتنتهً عند الموقع ‪. 8Bh‬‬

‫مالحظة ‪:‬‬

‫ألحظ أنه عند ‪ bank0‬فان المواقع من ‪ 50h‬الى ‪ 7Fh‬فهً غٌر منفذة ‪ ، unimplemented‬أي متروكة وكذلك بالنسبة لـ ‪ bank1‬فأن‬
‫المواقع من ‪ D0h‬الى ‪، FFh‬‬

‫‪Program Memory‬‬ ‫ذاكرة البرنامج‬

‫ٌحتوي المُسٌطر ال َدقٌق ‪َ PIC16f84A‬عداد َبرنامج ‪ Program Counter‬ذو سعة ‪ ، 13-bit‬أي انة ٌستطٌع عنونة ذاكرة سعتها‬
‫‪ 213=8191‬أي ‪ 8K byte‬ما ٌقابلها بالنظـــــــام الســـادس عشر هو ‪ ، 1FFF‬فً الحقٌـــقة العناوٌن المنفذة ‪ implemented‬من الذاكرة‬
‫كما هــــو موضح فً الشكل ‪ Figure 3.8‬هً مـن )‪ (000-3FF‬فقط اما العناوٌن )‪ (4FF-1FFF‬فهً غٌر منفذة ‪unimplemented‬‬
‫أي انة الٌمكن تخزٌن برنامج ضمن هذه المواقع‪ ، ،‬كما ٌرتبط مع عداد البرنامج ‪ PC‬بصورة وثٌقة ذاكرة المكدس ‪ Stack‬التً تستخدم‬
‫لخزن قٌمة عداد البرنامج ‪ PC‬فً تعلٌمات القفز ‪ ،jump instruction‬انتبة الى العنوان ‪ 0000h‬من ذاكرة البرنامج ‪Program‬‬
‫‪ٌ memory‬سمى هذا العنوان شعاع التصفٌر ‪ Reset Vector‬أي عند تشغٌل المُسٌطر ً‬
‫الدقٌق او أعادة اقالعة ‪ Restart‬فانه ٌبدء التنفٌذ‬
‫من هذا العنوان ‪ ،‬وانتبة اٌضا ً الى العنوان ‪ 0004h‬فانه ٌسمى شعاع مقاطعة األطراف ‪ Peripheral Interrupt Vector‬أي عند حدوث‬
‫مقاطعة للمسٌطر الدقٌق فانة ٌبدء التنفٌذ من هذا العنوان ‪ ،‬سٌتم شرح المقاطعات فً فصول الحقة أن شاء هللا ‪.‬‬

‫ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ ( ‪ ) 49‬ـــــــــــــــــــ‬ ‫المسٌطر الدقٌق ‪Microcontroller‬‬


‫‪Figure 3.8‬‬

‫)‪Power Up Timer (PWRT‬‬ ‫مؤقت بداية اقالع الطاقه‬

‫هناك دائرة مؤقت ‪ Timer circuit‬داخل وحدة المُسٌطر ال َدقٌق ‪ ، Microcontroller‬تقوم هذه الدائرة بتوفٌر فترة تأخٌر مقدارها ‪ 72‬ملً‬
‫ثانٌة قبل ان ٌنهض (ٌعمل) المسٌطر الدقٌق‪ microcontroller‬وذلك لكً تظمن استقرار الطاقة الن عدم استقرار مصدر الطاقة ٌؤثر على‬
‫عمل المسٌطر الدقٌق ‪.‬‬

‫)‪Oscillator Start Up Timer(OST‬‬ ‫مؤقت بداية اقالع المذبذب‬

‫تعمل دائرة المؤقت هذه عمل ‪ ، power up timer‬حٌث توفر هذه الدائرة فترة تأخٌر زمنٌة قبل ان تعمل وحدة السٌطرة ‪Control Unit‬‬
‫التً ٌغذٌها المذبذب وذلك لكً نظمن استقرار الذبذبة الن عدم استقرار الذبذبة ٌؤثر على عمل وحدة السٌطرة وبذلك عمل المُسٌطر ال َدقٌق‪.‬‬

‫ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ ( ‪ ) 51‬ـــــــــــــــــــ‬ ‫المسٌطر الدقٌق ‪Microcontroller‬‬


‫)‪Power On Reset (POR‬‬ ‫أعادة أالقالع عند بداية تشغيل الطاقة‬

‫عند تجهٌز المسٌطر الدقٌق ‪ Microcontroller‬بالطاقه لغرض َتشغٌلة ‪ٌ ، Running‬جب التأكد من أن مستوى الطاقة المطلوب مزود بشكل‬
‫الحظ ٌحتوي المُسٌطر الدَ قٌق ‪ Microcontroller‬على دائرة تتأكد من ان تجهٌز‬
‫صحٌح ‪،‬لحسن َ‬ ‫صحٌح لكً ٌعمل المُسٌطر ال َدقٌق بشكل َ‬
‫الطاقه وصل للحد المطلوب واال أعاد الجهاز االقالع من جدٌد ‪ Reset‬تمسى هذه الدائرة )‪.Power On Reset(POR‬‬

‫‪Watchdog timer‬‬ ‫مؤقت الحراسه‬


‫ماذا ٌحدث لو َعلق ‪ Stuck‬المُسٌطر ال َدقٌق‪ ،‬هل هناك زر ‪ restart‬العادة تشغل المسٌطر الدقٌق ‪ ،‬طبعا ُ ال ‪،‬فماذا نفعل لو كان المسٌطر‬
‫الدقٌق فً موقع عمل ‪ field‬ودخل فً حالة العلق ‪ ، Stuck‬توجد دائرة داخل المسٌطر الدقٌق ‪ Microcontroller‬تقوم بعملٌة مراقبة‬
‫المُسٌطر ال َدقٌق ‪ ،‬اذا علق ‪ Stuck‬المسٌطر الدقٌق تقوم هذه الدائرة باعادة أقالع المسٌطر الدقٌق ‪ Microcontroller‬تسمى هذه الدائرة‬
‫بمؤقت الحراسة ‪ ، Watchdog timer‬سٌتم شرح هذا الموضوع بشكل مفصل فً فصول الحقة ‪.‬‬

‫‪Stack Memory‬‬ ‫المكدس‬

‫ٌَحتوي المُسٌطر ال َدقٌق ‪ PIC16f84A‬على مكدس ‪ Stack‬ذو سعة ‪ 8‬مواقع ‪ٌ ،‬ستخدم فً عملٌات القفز ‪،‬‬

‫‪EEPROM Memory‬‬ ‫الذاكرة ‪EEPROM‬‬

‫ٌحتوي المسٌطر الدقٌق ‪ PIC16f84A‬على ذاكرة ‪ EEPROM‬قابلة للقراءة والكتابة ذات سعة ‪ 64‬موقع ‪ ،‬وكل موقع ذو طول كلمة ‪، 8-bit‬‬
‫تستخدم لخزن المعلومات ‪ ،‬حٌث ان هذه المعلومات ستضل مخزونة حتى بعد فصل مصدر التغذٌة عن الشرٌحة ‪ ،‬ترتبط مع هذه الذاكرة‬
‫مسجلٌن ‪ ،‬مسجل العنوان ‪ EEADR‬عند تحمٌل هذا المسجل بقٌمة معٌنة فاننا بذلك نشٌر الى موقع من مواقع ذاكرة ‪ EEPROM‬الـ ‪ ، 64‬عند‬
‫خزن بٌانات عند موقع الذاكرة المعنون عن طرٌق مسجل ‪ EEADR‬فاننا نحمل البٌانات ‪ Data‬المراد خزنها الى المسجل ‪ ، EEDATA‬وكذلك‬
‫عند قراءة معلومات من الذاكرة ‪ EEPROM‬المعنون عن طرٌق مسجل ‪ EEADR‬فاننا نجد البٌانات ‪ Data‬قد حملت الى المسجل ‪، EEDATA‬‬
‫عملٌات القراءة والكتابة تتم عن طرٌق تعلٌمات واعدادات خاصة سنتناولها فً فصول الحقة ان شاء هللا ‪.‬‬

‫‪Timer‬‬ ‫المؤقت‬
‫ٌحتوي المسٌطر الدقٌق على مؤقت ٌستخدم فً عملٌات التوقٌق ‪ Timing‬كما ٌستخدم فً عملٌات العد ‪ ، Counting‬سٌتم شرح الموضوع فً‬
‫فصول الحقة ‪.‬‬

‫‪Input/Output Unit‬‬ ‫أطراف االدخال واالخراج‬

‫ٌحتوي المُسٌطر ال َدقٌق على منفذٌن ‪ Ports‬ألدخال أو أخراج البٌانات الى او من المُسٌطر الدَ قٌق ‪ ،‬المنفذ االول ٌسمى ‪ Port A‬وهو منفذ‬
‫مكون من ‪ 5-bit‬ممكن أن ٌستخدم هذا المنفذ كمنفذ أدخال أو أخراج‪ ،‬وعناوٌن هذا المنفذ هً ‪ ، RA0,RA1,RA2,RA3,RA4‬والمنفذ االخر‬
‫ٌسمى ‪ Port B‬وهو منـــــفذ مكون من ‪، 8-bit‬وكذلك ٌمكن ان ٌستخدم هذا المنفذ كمنفذ أدخال او أخراج‪،‬وعناوٌن هذا المنفذ هً‬
‫‪ ، RB0,RB1,RB2,RB3,RB4,RB5,RB6,RB7‬كما أن هناك أطراف لها اكثر من وضٌفة مثل الطرف ‪ٌ RA4‬ستخدم كطرف قدح للمؤقت‬
‫‪ Timer‬أو للعداد وٌسمى ‪ ، T0CKl‬كما ٌستخدم الطرف ‪ RB0‬كوضٌفة المقاطعة ‪، Interrupt‬‬

‫ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ ( ‪ ) 50‬ـــــــــــــــــــ‬ ‫المسٌطر الدقٌق ‪Microcontroller‬‬


‫‪PIC16F84A‬‬ ‫الوصف الدقيق ألطراف المسيطر‬

‫ٌتم تغلٌف ‪ Packaging‬المُسٌطر ال َدقٌق ‪ ،‬بشكل دائرة متــــــــكاملة )‪ IC(Integrated circuit‬مكونة من ‪ 08‬طــــــــــــرف‪ ،‬الشكل‬
‫‪ٌFigure 3.9‬وضح اطراف المسٌطر ‪. PIC16f84A‬‬

‫‪Figure 3.9‬‬

‫من الشكل ‪ Figure 3.9‬نالحظ أن أطراف المُسٌطر الد َقٌق ‪ PIC16f84A‬هً ‪،‬‬

‫‪RA0-RA4‬‬ ‫‪o‬‬
‫المرفئ ‪ Port A‬وهو مرفئ مكون من ‪ 5-bit‬التً هً ‪ ، RA0,RA1,RA2,RA3,RA4‬ممكن أن ٌستخدم هذا المرفئ فً عملٌات أالدخال‬
‫أو عملٌات أالخراج ‪،‬‬

‫‪RB0-RB7 o‬‬
‫المرفئ ‪ Port B‬وهو مرفئ مكون من ‪ 8-bit‬التً هً ‪ ،RB0,RB1,RB2,RB3,RB4,RB5,RB6,RB7‬ممكن أن ٌستخدم هذا المرفئ فً‬
‫عملٌات أالدخال أو عملٌات أالخراج ‪،‬‬

‫‪VSS & VDD o‬‬


‫أطراف التغذٌة للشرٌحة ‪VDD=+5 VDC , VSS=Ground‬‬

‫‪OSC2/CLKOUT & OSC1/CLKIN o‬‬


‫أطراف المذبذب ‪ Oscillator‬للمسٌطر ‪ ،PIC16f84A‬التردد ضروري لعمل وحدة السٌطرة او عمل المُسٌطر الدَقٌق اذا لم تربط مذبذب‬
‫ال ٌُنفذ المُسٌطر الدَ قٌق البرنامج المخزن فً ذاكرتة ‪ٌ ،‬عمل المسٌطر الدقٌق ‪ PIC16f84A‬على تردد ‪، 4 MHZ‬‬

‫‪MCLR(memory clear) o‬‬


‫عند تسلٌط جهد منخفظ على هذا الطرف ٌتم مسح البرنامج من الشرٌحة‪،‬‬

‫ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ ( ‪ ) 52‬ـــــــــــــــــــ‬ ‫المسٌطر الدقٌق ‪Microcontroller‬‬


‫مالحظة ‪:‬‬
‫األطراف التالٌة لها وظائف أخرى تحدد اثناء عملٌة ‪Configuration‬‬

‫‪RB0 o‬‬
‫له وظٌفة المقاطعة ‪ interrupt‬لبرنامج المسٌطر الدقٌق‬

‫‪RA4 o‬‬
‫ممكن ان ٌعمل هذا الطرف كطرف قدح لعداد ‪ Counter‬أو مؤقت ‪. Timer‬‬

‫‪Memory Clear‬‬ ‫طرف تصفير الشريحة‬

‫عند َتسلٌط جهد منخفظ على َهذا ال َطرف ٌتم مسح برنامج ال َشرٌحة ‪ ،‬لذلك نربط هذا الطرف الى ال ُجـــهد الموجب ‪ ،+5 Vdc‬كما هو‬
‫موضــــــــــــــح فً الشكل ‪Figure 3.10‬‬

‫‪Figure 3.10‬‬

‫‪Oscillator‬‬ ‫المذبذب‬
‫المذبذب عنصر مهم لعمل المسٌطر الدقٌق ‪ ،‬وأن أختٌار نوع وقٌمة المذبذب تؤثر أٌجابا ً او سلبٌا ً على عمل المسٌطر الدقٌق ‪ٌ ، ،‬تم الحصول‬
‫على ذبذبات أو نبضات الضرورٌة لعمل المسٌطر الدقٌق بطرٌقتٌن‬

‫‪ o‬بأستخدام مذبذب بلوري ‪XT Oscillator‬‬


‫‪ o‬بأستخدام مقاومة ومتسعة لتشكٌل دائرة رنٌن ‪RC Oscillator‬‬

‫ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ ( ‪ ) 53‬ـــــــــــــــــــ‬ ‫المسٌطر الدقٌق ‪Microcontroller‬‬


‫‪XT Oscillator‬‬ ‫المذبذب بلوري‬

‫المذبذب البلوري ‪ Quartz Oscillator‬عبارة عن قطعة معدنٌة بطرفٌن ‪ ،‬تقوم هذه القطعة المعدنٌة بتولٌد الذبذبة الضرورٌة لعمل المسٌطر‬
‫‪ٌ ، PIC16f84A‬كتب على الغالف الخارجً للقطعة المعدنٌة قٌمة التردد الذي ٌولدة المذبذب البلوري ‪ ،‬تذكر أن ‪ٌ PIC16f84A‬عمل على‬
‫تردد ‪ ، 4 MHz‬عادة تربط متسعات سٌرامٌكٌة ‪ C1 , C2‬الى أطراف المذبذب البلوري ذات قٌمة ‪ 15‬بٌكو فاراد ‪ ،‬الشكل ‪Figure 3.11‬‬
‫ٌبٌن كٌفٌة ربط مذبذب بلوري الى طرفً ‪ 16,15‬للمُسٌطر ال َدقٌق ‪ ،‬سنكتفً بذكر طرٌقة المذبذب البلوري النه اكثر استقرارٌة من المذبذب‬
‫‪. RC‬‬

‫‪4 MHz‬‬

‫‪Figure 3.11‬‬

‫الشكل ‪ٌ Figure 3.12‬وضع كٌفٌة توصٌل المذبذب البلوري ذو قٌمة ‪ 4 MHz‬الى طرفٌن ‪ 16,15‬من ‪ ، PIC16f84A‬وكذلك توصٌل‬
‫الطرف الموجب لمصدر التـغذٌة الذي قٌمته ‪ 5 VDC‬الى طرف ‪ VDD‬الذي هو الطرف ‪ ، 14‬بٌنما ٌربط الطرف السالب لمصدر التغذٌة الى‬
‫الطرف ‪ VSS‬الذي هو الطرف ‪ ، 5‬مع توصٌل المتسعات ‪ ، Capacitors‬متسعتان بقٌمة ‪ 15 pico-farad‬على طرفً المذبذب ‪ ،‬ومتسعة‬
‫بقٌمة ‪ 100 micro-farad‬ألغرتض الحماٌة من الضجٌج ‪ ، Noise‬تذكر ربط الطرف ‪ 4‬الذي هو طرف ‪ MCLR‬الى الطرف الموجب‬
‫للبطارٌة‪.‬‬

‫‪4 MHz‬‬

‫‪Figure 3.12‬‬

‫ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ ( ‪ ) 54‬ـــــــــــــــــــ‬ ‫المسٌطر الدقٌق ‪Microcontroller‬‬

You might also like