وعليكم السلام
إليك هذا الكود البسيط .
كود:
unsigned int var;
void main() {
CMCON = 7;
TRISIO =9;
ansel.b0 = 1;
adc_init();
gpio=0;
while(1) {
var = adc_get_sample(0) ;
gpio = var >> 4;
}
}
(السطر الأول يلغي عمل المقارن)
في السطر الثاني طبعا نجعل gp0 و gp3 كمداخل ..
تمكين المداخل التماثلية (ANX ) يتم عبر الأربع بتات الأولى يسارا في السجل ansel ..كما في الكود تم تمكين المدخل (AN0) .. مثلا لو أردت استخدام ال (AN2) ستضع 1 كذلك في البت الثالث من هذا السجل ..
تعليمة adc_init تتم مرة واحدة.. لتبدأ تشغيل المحول
ثم تصبح الدالة adc_get_sample(0) جاهزة ,, وتعود ب 10 بت تمثل قيمة الجهد على المدخل التماثلي AN0 (أو أي قناة حسب الرقم لي ترسل لها) ..
طبعا النتيجة تكون بالنسبة لجهد التغذية .. إلا إذا ,وضعت 1 في البت (6) VCFG من المسجل ADCON0 حينها يصبح المرجع هو الجهد الخارجي على الطرف Vreff
لا تنسى ضبط إعدادات الميكروسي، في المذبذب اختر INTOSC و GP5 و GP4 كلاهما I/O
MCLR اجعله disabled ..
واضبط التردد 4 MHz كما تريد
بالتوفيق..