برنامج لتوضيح مبدأ التحويل من تناظرى لرقمى ADC :
الدائرة الكهربية :
البرنامج :
شرح البرنامج :
1- قبل الدخول إلى الدالة الرئيسية يتم تعريف متغير نوع unsigned int ( بسعة 2 بايت أى 16 خانة ليتسع لنتيجة التحويل ADC ذات العشر خانات ) بالاسم temp_res (أو أى اسم يناسب البرنامج الفعلى ) وذلك لنسخ نتيجة التحويل إليه وعلاجه فيما بعد وفقا لطلبات البرنامج .
2- بداية الدالة الرئيسية : وتحتوى على
أ- أعدادات سجلات التحكم والمنافذ :
· إعداد جميع أطراف السجل PORTA كمداخل لأن به المدخل التناظرى TRISA = 0xFF.
· إعداد جميع أطراف السجل PORTB كمخارج لتوصيل ليدات بها TRISB = 0.
· إعداد جميع أطراف المنفذ PORTD كمخارج لتوصيل ليدات بها TRISD = 0.
· إنشاء حلقة غير منتهية باستخدام do { ……} while (1) وفيها يتم :
do {
# قراءة القيمة الناظرية من على القناة رقم (0) باستخدام الدالة ADC_Read(0) للحصول على نتيجة التحويل ذات العشر خانات ونسخها إلى المتغير ذات الستة عشر خانة temp_res .
# إرسال الثمانى خانات المنخفضة بالمتغير temp_res إلى الثمانى خانات الخاصة بالمنفذ PORTB مباشرة PORTB = temp_res ( محتويات المتغير بالبايت الأعلى لن تؤثر أو تتأثر ) .
PORTB = temp_res; // Send lower 8 bits to PORTB
# عمل إزاحة لمحتويات المتغير ذات الستة عشر خانة بمقدار بايت أى 8 خانات جهة اليمين وتكون النتيجة أن تزاح الخانتان الأولى والثانية فى البايت العلوى للمتغير (وهما باقى النتيجة التناظرية) إلى الخانتان الأولى والثانية فى البايت السفلى للمتغير , عندئذ يتم نسخ محتويات المتغير إلى المنفذ PORTD فيتم نقل الخانتان المتبقيتان من نتيجة التحويل إلى الخانة RD0 و RD1 لعرض النتيجة كاملة على
PORTB + (RD0+RD1)
# تكرار الحلقة إلى مالا نهاية
3- نهاية الدالة الرئيسية والبرنامج .
المحاكاة :