 |
:: عضو فضي ::
تاريخ التسجيل: Apr 2005
المشاركات: 151
|
|
نشاط [ hasanAli ]
قوة السمعة:
|
|
14-06-2006, 01:50 AM
المشاركة 19
|
|
سجلات هدف عام وخاص
سجلات هدف عام وخاص تذكر شرحي للذاكره المؤقته :
من نوع "رام" أي عندما نقطع التيار عنها نخسر المعلومات ...مكونه من صفحتان ذاكره .... صفحه صفر و صفحه واحد . أول 12 سجل من كلا الصفحتان " عباره عن سجلات عمل خاص" سجلات يستعملها المتحكم في عمله...مثلا سجل المؤقت االذي شرحته في طرف مقاطعه هو أحدها .
هناك 68 سجل هدف عام من الموضع 12 ولغايه 79 . أن هذه السجلات خاصه بك كمبرمج .... لك الحرية بأن تسميها كما تشاء , مثلا طول أو عرض كما ذكرت سابقا ..... إذا عندك 68 سجل تحت تصرفك المطلق. هذا في الصفحه صفر .
في الصفحه واحد: أول 12 كذلك سجلات هدف عام .
هناك 68 سجل هدف عام , عباره عن صوره طبق الأصل لسجلات الأهداف العامه الموجوده في الصفحه صفر ...... نتوقف قليلا , لتوضيح هذه النقطه .... لنقل أنه لديك سجل إسمه طول عنوانه 12في الصفحه صفر ..... فأنت تقول للمعالج إدخل الصفحه صفر .... إقرأ طول ..... أما إذا طلبت من المعالج دخول الصفحه واحد ليقوم بمهمة ما .... ثم إحتجت لقرائة سجل طول ..... فلست بحاجه للذهاب إلى الصفحه الأولى ثانية ..... فالمتحكم يضع صوره طبق الأصل للسجل ويسمها طول في الموضع المقابل كل ما عليك أن تقول إقرأ طول مثلا ...رائع ..... عدا ذلك أي تغيير يجري لهذا السجل .... سواء كان في الصفحه الأولى أو الثانيه , ينعكس على مقابله , فكل واحد منهم مرآة للآخر.
في شرحي للمصغر , إستعملت سجل هدف عام سميته "عداد1".
كيف ندخل سجل هدف عام وكيف نستعمله في "فلوجة المتحكم" .
هناك زر إسمه "زد سجل هدف عام " أنقره يضهر لك صندوق كما في الصوره :
أكتب إسم السجل , ووافق , وإنتهى الموضوع...
"فلوجة المتحكم" يعرف تلقائيا , أنه لديك 68 سجل حر بتسميتها كما تشاء.فإذا تجاوزت هذا الرقم سيخبرك , يعرف أن عناوين هذه السجلات تبدأ من 12 وتنتهي بـ 79 ..ويخصص لكل سجل تكتبه العنوان تلقائيا , فلا حاجه لأن تفكر في هذا الموضوع. وإذا حاولت إدخال نفس الإسم أكثر من مره , لا يتقبل ذلك . تفاديا لوقوعك بأخطاء.
كيف أستعمل هذا السجل في برنامجي ؟
.... عندما تختار أي أمر متعلق بسجلات من صندوق الأوامر . سيكتب الأمر في العامود المخصص له .... تلقائيا سينتقل لعامود "هدف" وسيتحول صندوق الأوامر , إلى صندوق يحتوي كل السجلات . أنظر الصوره أدناه.
هنا , أختير الأمر" إبرم سجل لليمين " فكتب , ظهرت لنا كل السجلات , لاحظ "عداد1 " في الأسفل .... إذا نقرت عليه سيكتب "عداد1 " في عامود الهدف . تلقائيا سيترجم الأمر كله لسادس عشري وثنائي , عامود إحفظ بـ يحدد تلقائيا بـ "سجل " ويمكنك تغييره "واو" . بالنقر عليه فقط .
ملاحظه :" فلوجة المتحكم" يعرف بأي صفحه من الذاكره , أنت تعمل , ويريك فقط السجلات المخصصه لها . في الصوره نحن في الصفحه صفر. .... وبذلك لن تكون أخطاء ....من هذا القبيل.
سجلات هدف خاص
عندما تكتب برنامج لمتحكمتا, أنت بحاجه لمساعده , لمعرفة ما يحدث من تغيرات , بحاجه لإرشادات تتخذ قرارات بناءا عليها, بحاجه لإعداد المنافذ , كدخول خروج , تفعيل أو تعطيل وظائف , وكثير من الأمور , كل ذلك يحدث بواسطة , سجلات العمل الخاصه .عددها ستة عشرة سجل , موجوده في الذاكره المؤقته , وموزعه ما بين صفحتيها. " صفحه صفر و صفحه واحد"
كلها 16 سجل , منها ما هو في الصفحتان, معنى ذلك أن كل واحد مرآه للآخر " أي تغيير يجري لهذا السجل .... سواء كان في الصفحه الأولى أو الثانيه , ينعكس على مقابله" . ومنها ما هو موجود في صفحه معينه فقط .
سجل مؤقت : أعطيته ما يستحق من الشرح , عندما شرحت " طرف عداد".
سجل الحالات:
إخترت دراسته قبل غيره لأنه الصديق الوفي للمبرمج , حيث يطلعه على أشياء تحصل بينما يطبق برنامجه , فنعتمد على معلوماته لإتخاذ قرار ما , أو نخطط هنا في حال حدوث هذا إفعل ذاك . سجل الحالات , في متحكمنا مكون من سته بيت فقط.
بيت 0 : باليد ...... هناك عمليتان حسابيتان فقط , يقوم بهما المعالج بشكل مباشر , وهما الجمع والطرح , ومن الطبيعي أن يقوم بذلك بشكل ثنائي , هذا البيت باليد يتأثر بعملية الجمع التي يجريها المعالج بشكل , إذا كان فيه مجموع الرقمان أكبر من 255 فسيتحول تلقائيا إلى واحد . وما دون ذلك , سيبقى صفر . أمر الجمع هو إجمع واو وسجل الطول(مثلا) .
الأمر الثاني الذي يتأثر به هذا البيت , هو إطرح واو من سجل , إذا كانت قيمة واو أقل من قيمة السجل , رائع , سيكون الجواب إيجابي , هنا سيتحول(باليد) تلقائيا إلى واحد , وكأنه يقول الجواب إيجابي. وعكس ذلك ( واو أكبر من السجل) تلقائيا يتحول إلى صفر.
الأمر الثالث الذي يتأثر به هذا البيت (باليد), هو إبرم سجل لليمين كيف؟ راجع شرحي للأمر.
الأمر الرابع هو إبرم سجل لليسار كيف؟ راجع شرحي للأمر.
بيت 1 : باليد بعد الرابع المقصود بالرابع هو رابع بيت من السجل , النيبل عباره عن أول أربعه بيت من أي سجل . بواسطة أربعه بيت يمكننا العد من 0000 أي صفر إلى 1111 أي 15 , بعملية الجمع إجمع واو وسجل , إذا تعدى جمع أول أربعه بيت من واو مع أول أربعه بيت من ألسجل الـ 15 بيت الحالات-1 ( باليد بعد الرابع ) سيصبح تلقائيا واحد , مشيرا بذلك للحدث , وإذا لم نتجاوز الـ 15 سيكون صفر , أيضا , مشيرا للحدث .
الأمر الثاني والأخير الذي يتأثر به باليد بعد الرابع هو الطرح إطرح واو من سجل , إذا كانت قيمة أول 4 بيت من واو أقل من قيمة أول 4 بيت من السجل , سيتحول باليد بعد الرابع تلقائيا إلى واحد , وإذا كان العكس سيتحول تلقائيا إلى صفر.
بيت 2 :جواب صفر
يصبح واحد , في حال جواب أي عمليه حسابيه أو منطقيه , هو صفر ........ ويصبح صفر في حالة أن أي جواب لعمليه حسابيه أو منطقيه لا يساوي صفر.
هذه الثلاثه بيت التي درسناها حتى الآن , رغم أننا نستطيع القرائه والكتابه إليها , إلى أن أمر الكتابه يعتبر غير فاعل بالنسبه لها , حيث تغيراتها تحدث بصوره , تلقائيه وطبقا للمنطقيه التي سردتها لك .
هذه أعلام تشير إلى حدث , في كثير من الاوقات , وبينما أكتب أي برنامج , أقول لنفسي , دعني أرى إذا "جواب صفر" رفع يده , أي أصبح واحد.
سأتوقف قليلا , وأتوسع في شرحي ....لما سبق.... أو بكلمات أخرى....
متحكمي يفهم أربعة أوامر حسابيه , وهي:
إجمع واو وسجل – إطرح واو من سجل - إجمع واو ورقم - إطرح واو من رقم .
الجواب الناتج عن أي من الأوامر أعلاه , يغير أول ثلاثه بيت من سجل الحالات , وبالشكل التالي:
بيت صفر " باليد" : يصبح واحد منطقي في حال مجموع الرقمان أكبر من 255 . وصفر أصغر من 255 .
بيت صفر " باليد" : يصبح واحد منطقي في حال جواب الطرح " إيجابي" . وصفر " جواب سلبي".
بيت 1 " باليد بعد الرابع " : واحد منطقي , إذا كان جمع أول نيبل من أول رقم مع أول نيبل من ثاتي رقم تعدى الـ 15 .
صفر منطقي إذا لا . هذا بالجمع .
بيت 1 " باليد بعد الرابع" : في الطرح, قيمة النيبل الذي سيطرح أقل من قيمة النيبل الذي سيطرح منه , يصبح "واحد منطقي" ... والعكس صفر منطقي.
بيت 2 "جواب صفر" : إذا كان جواب أي من الأربع أوامر صفر , فبيت "جواب صفر" يصبح واحد منطقي. وغير ذلك صفر منطقي .... رائع ..... فقط هذا البيت "جواب صفر" يتأثر كذلك بكل أوامر منطقيات متحكمنا ...فإذا كان جواب أي منها صفر يصبح " واحد منطقي " وغير ذلك " صفر منطقي" .
سأتوقف عن الشرح قليلا , لندخل لتطبيقات عمليه ذات صله , وبمستوى ما تعلمته حتى الآن.
عندي ثلاث سجلات هدف عام , سميتها أول رقم , ثاني رقم , جواب .
أريد من المتحكم أن يفعل ما يلي :
إذا كان أول رقم وثاني رقم متساويان أن يكون "جواب" صفر.ثم ينام
إذا كان أول رقم أكبر من ثاني رقم أن يطرح الأول من الثاني , يحمل جواب ثم ينام .
إذا كان أول رقم أصغر من ثاني رقم أن يجمع الأول مع الثاني , يحمل جواب ثم ينام.
أين شباب القريه , هل من مساعد؟....
إليك الحل:
البرنامج في الصوره , يطبق بالظبط ما أريد , إفحص معلوماتك وحلل البرنامج , إذا كان لديك شيئ غامض راجع شرحي للأوامر أو غيره , كل ما في البرنامج شرح.
مشاركتي القادمه , تكملة شرح سجل الحالات فأستودعكم الله .
|