ساعدونى يا أبطال أناغريق بهالموضوع ألحقونيييييييي

فين أبطال البرمجة يحلو هذه المشكلة بارك الله فيكم
http://www.almohandes.org/vb/showthread-t_31542.html

يا عينى عليه حتى الان 5 مشاهدات ولايوجد رد نصبر علا وعسى أحد يساعدنى من الناس الطيبة
وان شاء الله سؤالى ميكونش صعب وملهوش حل

10 مشاهدات

55 مشاهدة :sm262:
مش بقولكم أن المنتدى ده محدش بيرد على حد ولا فى مساعدة كله مجاملات فقط هو ده الى مودينا فى داهية شكرا لكم
ايها المشرف الكريم عايز تحزف المشاركة أحزفها يكفى أنى قلت رأى بصراحة

ملاحظة بالنسبة لي كلامك صعب فهمه رجاءا في المرة القادمة ارسل الطلب بالانقليزية او الفرنسية ثم تعجل الرد

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