شكرا جزيلا
عندي كم نقطة في الكود احتاج منك شرحها
unsigned char const led_out[5] = {0,1,2,4,8};
ممكن تشرح لي عمل هذا السطر بالتفصيل
وايضا لماذا عرفت ADCON1 ب 7
|
1/
كما ذكر الأخ الكريم مشتاق الله جزاه الله خيرا فهناك أكثر من طريقة لتحقيق الهدف.
الطريقة التي عرضت عليك تستخدم عداد يعد نبضات المفتاح SW .
وعرض عدد النبضات على مخارج PORTB
العداد هو متغير (variable) تم حجزه من ذاكرة RAM للبيك يمكن تسميته بأي اسم كما هو معروف كمثال : counter.
المشكل أن الخرج سيكون بالطبع بنظام العد التنائي (binary) هكذا:
0000
0001
0010
0011
0100
وهذا غير مناسب لتحقيق الهدف المنشود والذي يفرض هذا العرض:
0000
0001
0010
0100
1000
من أجل ذلك تم استخدام مصفومة تضم 5 ثوابت (constant) وذلك بحجز 5 مواضع من ذاكرة الروم للبيك.
و تم اسناد قيم هذه المصفوفة بالتتابع لقيم العداد counter
علما بأني ومن باب التيسير في الكتابة، كتبت قيم المصفوفة {0,1,2,4,8} بنظام العد العشري ،حيث في العادة الكتابة تكون بنظام العد السادس عشري .
لكن ربما إذا تحولت هذه القيم الى النظام التنائي ستبدو العلاقة أكثر وضوحا ، بينها وبين مخارج المنفذ "ب" الاربع الاولى:
كود:
unsigned const char led_out[5] = {0b00000000, 0b00000001, 0b00000010, 0b00000100, 0b00001000};
هذه الطريقة مستخدمة في العرض على عارضة سباعية (7segment display)
كالمثال في الرابط المرفق والذي أخذت منه الفكرة وطوعته ليناسب طلبك .
و بالمناسبة هناك سطر زائد في الكود لا ضرورة له نسيت أن أزيله:
;unsigned int count = 0
++++
http://www.studentcompanion.co.za/in...roller-mikroc/
2/
بالنسبة للقيمة 7 المسندة للمسجل adcon1 فلأنها القيمة التي تهيئ الدخل RA0 ليكون دخلا يجتال وليس أنالوج
وهنا بالمشاركة
#5 تفاصيل إن شاء الله تفيدك أكثر أخي الكريم
http://www.qariya.info/vb/showthread.php?t=170178