لنفعل ذلك باستخدام mikroC :
- مثال لكود لقراءة قيمة تناظرية من القناة رقم 2 وعرضها على المنفذ PORTB والمنفذ PORTC كعدد ثنائى ذو عشر خانات 10-bit binary number .
- ضم الملف built_in.h لاحتوائه على دوال مطلوبة :
#include <built_in.h>
- الإعلان عن متغير من نوع العدد الصحيح unsigned inيسمى temp_res وهذا النوع من المتغيرات يكون بسعة 2 بايت (16 خانة) حتى يتسع لنتيجة التحويل المكونة من 10 خانات .
unsigned int temp_res ;
void main() {
- إعداد القناة الثانية AN2 كطرف تناظرى :
ANSEL = 0x04; // Configure AN2 as analog pin
- إعداد المنفذ PORTA كمداخل :
TRISA = 0xFF; // PORTA is configured as input
- إعداد باقى الأطراف كمداخل / مخارج رقمية :
ANSELH = 0; // Configure all other AN pins as digital I/O
- إعداد الطرف RC7 والطرف RC6 كمخارج :
TRISC = 0x3F; // Pins RC7 and RC6 are configured as outputs
- إعداد المنفذ PORTB كمخارج :
TRISB = 0; // PORTB is configured as an output
- إنشاء حلقة do { ….} while(1) غير منتهية :
do {
- قراءة المدخل التناظرى من مدخل القناة الثانية ADC_Read(2) للحصول على نتيجة التحويل ذات العشر خانات ونسخها إلى سجل المتغير temp_res ذو الستة عشر خانة :
temp_res = ADC_Read(2); // Get 10-bit result of AD conversion- إرسال الثمانية خانات السفلية للمنفذ PORTB .
تعليق :
المتغير مكون من 16 خانة بينما المنفذ PORTB مكون من 8 خانات وعند إجراء عملية نسخ (=)لمحتويات المتغير إلى المنفذ معنى ذلك نسخ الثمانى خانات الأولى من المتغير إلى المنفذ .
PORTB = temp_res; // Send lower 8 bits to PORTB
- إرسال الخانتين ذات القيمة الأكبر إلى الطرف RC6 والطرف RC7 :
تعليق:
المتغير بسعة 16 خانة وتم نسخ الثمانى خانات الأولى إلى المنفذ PORTB وباقى خانتان فى البايت الثانية من المتغير لذلك يجب أولا إزاحة محتويات المتغير خانتان إلى اليمين حتى تنتقل الخانتين المتبقيتين إلى البايت الأول بالخانتين السابعة والثامنة ومن ثم عند إجراء عملية نسخ لمحتويات المتغير بعد الإزاحة للمنفذ PORTC تظهر الخانتين على الطرفين RC6 و RC7 والتى تم إعدادها مسبقا كمخارج بينما باقى خانات المنفذ PORTC تم إعدادها كمداخل ولن تؤثر فى العمل .
PORTC = temp_res >> 2; // Send 2 most significant bits to RC7, RC6
- تكرار الحلقة إلى ما لا نهاية
} while(1); // Remain in the loop
}
سجل التحكم ADCON1