دعنا نفعل ذلك باستخدام mikroC : - لإعداد جميع الأطراف كمداخل / مخارج رقمية يتم تصفير السجل ANSEL والسجل ANSELH :
ANSEL = ANSELH = 0 ; - لتصفير جميع أطراف المنفذ :
PORTA = 0 ;
- لإعداد جميع أطراف المنفذ كمداخل (1) فيما عدا الخانة الثالثة والمسماة PORTA.2 يتم إعدادها كمخرج (0) :
TRISA = ob00000100 ;
الوحدة ULPWU "وحدة الإيقاظ للقدرة المنخفضة"
غالبا ما يستخدم الميكروكونترولر فى الأحهزة التى تعمل بصفة دورية ولا تعتمد على استخدام البطاريات كمصدر للقدرة . وهنا فإن الحد الأدنى لاستهلاك القدرة هو أحد الخواص المطلوبة .والأمثلة العملية لمثل تلك التطبيقات هى : مقاييس الحرارة و وحساسات اكتشاف الحريق وما شابه ذلك . من المعروف أن تخفيض تردد نبضات الساعة يؤدى إلى تخفيض القدرة المستهلكة , لذلك فإن أحد أكثر الحلول المتبعة فى هذه المشكلة هى تخفيض تردد نبضات الساعة أى استخدام كريستال كوارتز بتردد 32KHz بدلا من 20MHz .
وضع الميكروكونترولر فى نظام السكون sleep هى خطوة أخرى فى نفس الاتجاه . وتظل مشكلة كيفية إنهاض الميكروكونترولر ووضعه فى النظام العادى ؟ من الضرورى وجود إشارة خارجية لتغيير الحالة المنطقية لبعض الأطراف . هذه الأشارة يحب توليدها بإلكترونيات إضافية والتى تتسبب فى استهلاك قدرة أعلى .
الحل المثالى هو أن ينهض الميكروكونترولر بنفسه بطريقة دورية وذلك ليس بمستحيل بالمرة .الدائرة التى تمكنه من ذلك موضحة بالشكل .
مبدأ العمل بسيط :
يتم إعداد الطرف كمخرج ووضع المنطق واحد (1) به . يؤدى ذلك لشحن المكثف . فورا بعد ذلك يتم تهيئة نفس الطرف كمدخل .التغير فى الحالة المنطقية تمكن المقاطعة ويتم وضع الميكروكونترولر فى نظام السكون .كل ما يحدث هو الانتظار حتى يتم تفريغ المكثف عن طريق تيار التسريب الذى يمر خلال طرف المدخل .عندما يتم ذلك تحدث المقاطعة ويتقدم الميكروكونترولر فى تنفيذ البرنامج فى النظام العادى .ويتم تكرار العملية بالكامل .
نظريا هذا هو الحل الأمثل. والمشكلة هي أن كل الأطراف القادرة على أن تتسبب في المقاطعة في هذه الطريقة تكون رقمية وتمتلك تيار تسريب كبير نسبيا عندما لا يكون جهدها قريب من حدود القيم Vdd (1) أو
Vss (0) .في هذه الحالة فإن المكثف يتم تفريغه فى زمن قصير لأن التياريصل لعدة مئات من الميكرو أمبير. ولهذا السبب تم تصميم الدائرة ULPWU والقادرة على تسجيل انخفاضات فى الجهد بطيئة مع أدنى حد من استهلاك القدرة . خرج هذه الوحدة يقوم بتوليد المقاطعة بينما يتم توصيل مدخلها بأحد أطراف الميكروكونترولر . هذا الطرف هو RA0.بالرجوع إلى الشكل (R=200 ohms, C=1nF) زمن التفريغ حوالى 30 ملى ثانية 30mS في حين أن إجمالي استهلاك الميكروكونترولر ينخفض 1000 مرة (عدة مئات من النانو أمبير ).
سجل المنفذ PORTB وسجل التحكم فيه TRISB