Arduino/advanced io/shiftin

من موسوعة حسوب
مراجعة 10:51، 17 أكتوبر 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (أنشأ الصفحة ب'تزيح الدالة <code>shiftIn()‎</code> بايتًا من البيانات من رجل محدَّدة إلى متغيِّر مقدار بتٍّ واحدٍ في...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

تزيح الدالة shiftIn()‎ بايتًا من البيانات من رجل محدَّدة إلى متغيِّر مقدار بتٍّ واحدٍ في كل مرة تتغير فيها حالة النبضة على رجل أخرى إلى HIGH. يمكن ترتيب عملية قراءة وإزاحة البتات إمَّا بدءًا من البت الأكثر أهمية (أقصى اليسار) أو من البت الأقل أهمية (أقصى اليمين).

البنية العامة

byte incoming = shiftIn(dataPin, clockPin, bitOrder)

في كل بت، تقدح الرجل clockPin عملية قراءة البت التالي من الرجل dataPin عند الجبهة الصاعدة للإشارة (أي عندما تنتقل النبضة من LOW إلى HIGH) ثم يجب حينها على الرجل clockPin أن تعود للحالة المنخفضة (LOW) لتكرار عملية قراءة البت الذي يليه وهلم جرًّا.

إن كنت تتعامل مع جهازٍ يعمل أو يولِّد نبضات عند الجبهات الصاعدة، فيجب عليك أن تتأكد أنَّ حالة الرجل clockPin هي LOW قبل الاستدعاء الأول للدالة shiftIn()‎ عبر استدعاء digitalWrite(clockPin, LOW)‎ مثلًا.

ملاحظة: هذه العملية التي تجريها الدالة هي تنفيذٌ برمجيٌّ؛ توفر أردوينو المكتبة SPI التي تستعمل التنفيذ العتادي لهذه العملية التي تتميز بسرعتها سوى أنَّها تعمل على أرجل معيَّنة فقط.

المعاملات

dataPin

عددٌ صحيح يشير إلى الرجل المراد قراءة وإزاحة البتات المدخلة منها.

clockPin

عددٌ صحيح يشير إلى الرجل التي تمثِّل نبضات الساعة التي تقدح (عند الجبهة الصاعدة) عملية قراءة بت واحد من الرجل dataPin وإزاحة قيمتهه إلى متغيِّرٍ.

bitOrder

يحدِّد هذا المعامل ترتيب عملية إزاحة البتات المقروءة من الرجل dataPin عند كل جبهة صاعدة لنبضات الرجل clockPin. يأخذ هذا المعامل القيمة MSBFIRST إن كان أول بت يراد قراءته هو البت الأكثر أهمية أو القيمة LSBFIRST إن كان أول بت يراد قراءته هو البت الأقل أهمية.

القيم المعادة

يعاد بايتٌ يمثِّل البيانات المقروءة من الرجل dataPin.

انظر أيضًا

مصادر

صفحة الدالة shiftin()‎ في توثيق أردوينو الرسمي.