English  

كتب reading process

اذا لم تجد ما تبحث عنه يمكنك استخدام كلمات أكثر دقة.

عرض المزيد

عملية القراءة (معلومة)


حتى تتم عملية القراءة من الـ EEPROM بكل بساطة يجب عليك أن تجعل PIC يعرف أيَّ موقِع تريد القراءة منه، لأنَّه يوجد 64 منها يمكن للمعالِج أن يخزِّنَ فيها.! إذاً، أوّلُ شيء لا بُدَّ أن تقوم بهِ هو كتابة عنوان الموقِع الذي تُريد القراءة منه، وذلك في المسجِّل EEADR ؛ على سبيل المثال أنت تريد القراءة من الموقع الثالث، في هذه الحالة استخدم التعليمات التالية :

MOVLW 2h

movwf EEADR

و لكِّن لحظة !.. كُنت تريد القراءة من الموقع الثالث، لماذا إذن وضعنا القيمة H2 ؟ … إذن تذكّر، العنوان 0 (0h) هو الموقِع الأوّل، والعنوان 63 (3Fh)هو الموقع الـ 64.. إذن هذه الذاكرة تبدأ مواقعها من 0 وليس من 1.

والآن حتى تعرف الـ PIC أنّكَ تريد فعلاً قراءة قيمة من الـ EEPROM فلا بُدَّ من تفعيل واحدة من خانات التحكُّم الخاصة بالمسجِّل EECON1، هذه الخانة الخاصة هي : RD (الخانة رقم 0) وهي اختصار لكلمة READ (قراءة). المسجِّل EECON1 موجود في الصفحة 1 من الـ RAM وبالتالي قبل الوصول إليه لا بُدَّ من تفعيل الخانة RP0 في مسجِّل الـ STATUS (مسجِّل الحالة) :

bsf status، RP0

و للقراءة من الموقِع قم بتفعيل الخانة RD إلى القيمة 1 :

bsf EECON1، RD

عندما نقوم بجعل قيمة RD مساوية لـ 1 فإنّ الـ PIC ترى آلياً القيمة الموجودة في EEADR وتستخدمها كعنوان لذاكرة EEPROM التي ستقوم بالقراءة منها، وبعد قراءة الموقع توضع المعطيات في المسجِّل EEDATA وعندما يتُّم ذلكَ يتم إرجاع الخانة RD إلى 0 مجدداً. كل ما سبق يتُّم أثناء تنفيذ التعليمة :

bsf EECON1، RD

المعطيات الآن موجودة في EEDATA ويمكننا أن نعمل بها ما نشاء، هذا المسجِّل موجود في الصفحة 0 من ذاكرة RAM وبالتالي لا بُدَّ أن نمحي الخانة RP0 في STATUS قبل الوصول إليه :

bcf STATUS، RP0

movf EEDATA، W

فيما يلي مجموعة التعليمات اللازمة للقراءة من EEPROM :

h1 movlw

EEADR movwf

STATUS، RP0 bsf

EECON1، RD bsf

STATUS، RP0 bcf

EEDATA، W movf

نضع هذه التعليمات في إجرائية SUBROUTINE بمنتهى السهولة، وكل ما نحتاجه لاستخدامها هو وضع عنوان الـ EEPROM في المسجِّل W، وبعد تنفيذ هذه الإجرائية فإنَّ القيمة التي سترجعها سوف يتم وضعها في المسجِّل W :

EEADR movwf EepRead

STATUS، RP0 bsf

EECON1، RD bsf

STATUS، RP0 bcf

EEDATA، W movf

return

لاستخدام هذه الإجرائية قم بشحن المسجِّل W بالعنوان ثم قم باستدعائها.. بفرض أنك تريد القراءة بشكل مستمر من EEPROM وكتابة المعطيات على الـ PORT B فهناك طريقة تمكنِّكَ من فِعل ذلك :

EEADR clrf

EepRead call EEloop

PORTB movwf

EEADR incf

d"64" movlw

EEADR، W xorwf

STATUS، Z btfss

EEloop goto

إن إجرائية EepRead قد لا تُنَفَّذ بشكل جيد إذا لم تكُن حذِراً..هل يُمكنِكَ تخمين سبب ذلك ؟؟ ما الذي يجري عندما تكون الخانة RP0 في المسجِّل STATUS لها قيمة "1 " في الوقت الذي يتُّم فيه استدعاء الإجرائية ؟؟.. الإجابة على هذين التساؤلين كالتالي : لن يتُّم الوصول إلى المسجِّل EEADR، والمسجِّل EECON1 سيكون في البرنامج الذي نستخدم فيه كلا صفحتي RAM، وبالتالي يجب أن نعرف جيداً أننّا في الصفحة الصحيحة.. إذا لم تكُن واثقاً في أي صفحة أنت تعمل عند استدعاء الإجرائيّة EepRead، فقم قبل أي شيء بتصفير الخانة RP0 داخل الإجرائية كالتالي :

STATUS، RP0 bcf EepRead

EEADR movwf

STATUS، RP0 bsf

EECON1، RD bsf

STATUS، RP0 bcf

EEDATA، W movf

return

هذا بالفِعل مثال رائِع لتوضيح دور الخانة RP0 في العملية.. يُمكِنُكَ من خلاله ملاحظة عدد مرات استخدامها، وإنَّ هذه الإجرائية لن تعمل بدونها.

المصدر: wikipedia.org
 
(10)
القراءة

القراءة

 

 
(13)
القراءة

القراءة