قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

الصورة الرمزية محمد50
محمد50
:: عضو فضي ::
تاريخ التسجيل: Mar 2006
المشاركات: 447
نشاط [ محمد50 ]
قوة السمعة:91
قديم 26-01-2009, 12:14 PM المشاركة 1   
افتراضي انشاء جدول في ذاكرة البيك Twitter FaceBook Google+



السلام عليكم ورحمة الله
بخصوص تعليمة retlw
وعمل جدول أكثر من 500 رقم وكيف أوجه المعالج لكى يطبق الامر الذى أريده
وجدت هذه المشاركة ولكن لم أفهمها
Bon, je vais te donner la méthode la plus simple, ceci te permettra d'avancer plus vite.

Soit ta table 1 : on la place dans un emplacement tel que l'intégralité des 256 valeurs tienne dans la zone balayée par PCL (qui est un registre 8 bits, ne l'oublie pas).
Autrement dit, le premier élément de la table sera adressé avec PCL = 0. Les emplacements valables seront donc : 0x100, 0x200, et 0x300

Imaginons table1 en 0x200, et table 2 en 0x300.

Org 0x200
retlw ... ; élément 0 de la table 1 (adresse 0x200)
retlw ...
retlw ...
retlw ...
...
...
retlw ... ; élément 255 de la table 1 (adresse 0x2FF)
retlw ... ; élément 0 de la table 2 (adresse 0x300
retlw ...
retlw ...
...
retlw ... ; élément 255 de la table 2 (adresse 0x3FF).

Pour un 16F84, les routines seront simplement placées n'importe où en mémoire programme et seront (on imagine que le numéro de l'élément désiré dans la table est dans "w") :

table1
bcf PCLATH,0 ; mettre PCLATH = 0x2
bsf PCLATH,1 ; pour saut en 0x2..
movwf PCL ; sauter sur l'élément concerné (0 ->0x200)

table2
bsf PCLATH,0 ; mettre PCLATH = 0x3
bsf PCLATH,1 ; pour saut en 0x3..
movwf PCL ; sauter sur l'élément concerné (0 ->0x300)

Je ne pense pas que je puisse faire plus simple pour ton cas particulier.

Il ne te reste qu'à appeler tes routine avec:

movf numéro_element,w
call table1 ou table2
المساعدة بارك الله فيك لانى أحاول أن أجد حل حتى الان


التعديل الأخير تم بواسطة : زكي شاكر بتاريخ 16-03-2009 الساعة 10:02 PM
اعلانات

زكي شاكر
:: عضو ماسي ::
تاريخ التسجيل: May 2006
الدولة: المغرب
المشاركات: 3,062
نشاط [ زكي شاكر ]
قوة السمعة:183
قديم 27-01-2009, 01:35 PM المشاركة 2   
افتراضي


السلام عليكم
أخي محمد المبدأ هو تخصيص جزء من ذاكرة فلاش البيك 16ف84 للجدول الاول وجزء آخر للجدول الثاني ..
الجدول الاول يبدأ من org 0x200 يعني ابتداء من المنطقة 512 بايت ..
الجدول الثاني يتبع الجدول الاول (org 0x300 ).
يمكن بهذه الطريقة، حسب صاحب البرنامج، انشاء جدول ب 256*2 سطرا اي 512 سطر Retlw.
ويتم استدعاء السطر المناسب لك بتحديد الجدول المناسب 1 او 2 حسب الحالة..
مافهمته ان ارقام الاسطر تبدأ من 0 الى 255 في كلا الجدولين ويتم التفريق بينهما بتحديد رقم الجدول..

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية محمد50
محمد50
:: عضو فضي ::
تاريخ التسجيل: Mar 2006
المشاركات: 447
نشاط [ محمد50 ]
قوة السمعة:91
قديم 27-01-2009, 03:27 PM المشاركة 3   
افتراضي


بارك الله فيك أستاذى العزيز زكى شاكر
أفهم ذالك أنى أقسم الارقام على جدولين كلا واحد يحمل 255 رقم
فاذا أردت رقم ما فى جدول 1 أستدعيه ثم أقوم بعملية الجمع على عداد البرنامج برقم اضعه له ليختار السطر المحمل برقم داخل جدول واحد وهكذا
وعند أختيار رقم فى جدول 2 أستدعية وأقوم بالجمع على عداد البرنامج ليختار الرقم الذى أريده من جدول 2 ولكن فى هذه الحالة مش ممكن المعالج يذهب لتنفيذ نفس السطر فى جدول 1 برجاء التوضيح .
أثقلت عليك كثيرا عذرا أستاذى الكريم بارك الله فيك


زكي شاكر
:: عضو ماسي ::
تاريخ التسجيل: May 2006
الدولة: المغرب
المشاركات: 3,062
نشاط [ زكي شاكر ]
قوة السمعة:183
قديم 27-01-2009, 03:54 PM المشاركة 4   
افتراضي


يوظف البرنامج هنا تعليمات توجيه PCLATH ..
فبالنسبة للجدول 1 table ينتقل الى جزء الذاكرة 0x200 بكتابة العدد الثنائي 10 في PCLATH
وهكذا يمكن أن يأخذ عداد البرنامج PC القيم من 1000000000 الى 1011111111
وبالنسبة للجدول 2 table ينتقل الى جزء الذاكرة 0x300 بكتابة العدد الثنائي11 في PCLATH
وهكذا يمكن أن يأخذ عداد البرنامج PC بالنسبة للجدول 2 من 1100000000 الى 1111111111
ومعلوم ان PC=PCLATH+PCL وانه في 16 ف 84 سجل يتكون من 10 بيت.
وكما تلاحظ تصبح من الممكن العمل بطريقة PCL داخل كل صفحة من الصفحتين اللتين تم انشاؤهما..( 0x200 و0x300) .
طبعا هذه فكرة البرنامج كما بدت لي وتبقى التجربة هي المحك ..
وعلى فكرة .. انت لم تثقل علي.
اذا كان عندي الجواب او على الاقل جزء منه لا أتأخر ..واذا كنت لا أعرف اخبرك بدون حرج ..
انت تعرف ذلك..


الصورة الرمزية محمد50
محمد50
:: عضو فضي ::
تاريخ التسجيل: Mar 2006
المشاركات: 447
نشاط [ محمد50 ]
قوة السمعة:91
قديم 27-01-2009, 04:43 PM المشاركة 5   
افتراضي


ألففففففففففففففففففففففففففففففففففف شكر
ده كان عشمى فيك والله
بارك الله فيك أستاذى الفاضل


الصورة الرمزية محمد50
محمد50
:: عضو فضي ::
تاريخ التسجيل: Mar 2006
المشاركات: 447
نشاط [ محمد50 ]
قوة السمعة:91
قديم 16-03-2009, 10:36 AM المشاركة 6   
افتراضي


السلام عليكم
أخي محمد المبدأ هو تخصيص جزء من ذاكرة فلاش البيك 16ف84 للجدول الاول وجزء آخر للجدول الثاني ..
الجدول الاول يبدأ من org 0x200 يعني ابتداء من المنطقة 512 بايت ..
الجدول الثاني يتبع الجدول الاول (org 0x300 ).
يمكن بهذه الطريقة، حسب صاحب البرنامج، انشاء جدول ب 256*2 سطرا اي 512 سطر Retlw.
ويتم استدعاء السطر المناسب لك بتحديد الجدول المناسب 1 او 2 حسب الحالة..
مافهمته ان ارقام الاسطر تبدأ من 0 الى 255 في كلا الجدولين ويتم التفريق بينهما بتحديد رقم الجدول..
السلام عليكم ورحمة الله
ممكن مثال بسيط أستاذ زكى لتتضح الفكرة أكثر بارك الله فيك


زكي شاكر
:: عضو ماسي ::
تاريخ التسجيل: May 2006
الدولة: المغرب
المشاركات: 3,062
نشاط [ زكي شاكر ]
قوة السمعة:183
قديم 16-03-2009, 09:55 PM المشاركة 7   
افتراضي


السلام عليكم

تفضل أخي العزيز، برنامج بسيط لتوضيح طريقة حجز مكانين مختلفين من ذاكرة البيك :
http://filaty.com/f/903/1.083/M50.rar.html
عدل فيه كما تشاء لتتوضح لك الصورة
ارجو لك التوفيق
------------------
عمل البرنامج بسيط :
عند ادخال رقم ما على المنفذ A :
يذهب عداد البرنامج الى المنطقة 0x100 حيث الجدول Table_1 ويعود الى البرنامج الرئيس Programme Principal
يمر الزمن Pause
فينتقل عداد البرنامج الى المنطقة 0x200 حيث الجدول Table_2 ويعود الى البرنامج الرئيس Programme Principal
يمر الزمن Pause
وهكذا ..
Affiche مسجل (متغير) وسيط بين المنفذ A و المنفذB


التعديل الأخير تم بواسطة : زكي شاكر بتاريخ 22-03-2009 الساعة 06:57 PM

الصورة الرمزية محمد50
محمد50
:: عضو فضي ::
تاريخ التسجيل: Mar 2006
المشاركات: 447
نشاط [ محمد50 ]
قوة السمعة:91
قديم 17-03-2009, 10:20 AM المشاركة 8   
افتراضي


بارك الله فيك ياغالى تسلم
أن شاء الله جارى التجربة

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 05:15 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025