N
neoaspilet11
Guest
Bonjour à tous,
J'ai eu cette expérience amusante à manipuler le PCL et les registres de PCLATH PIC.
J'ai grand tableau de données dans une magnitude de 800 emplacements mémoire.Une révision édition de mon tableau de données de 3000 a la mémoire plus d'endroits.Mais je ne l'ai pas encore codée.
Le problème va comme ceci
WREG = 7C; avant d'entrer au tableau de données
PCLATH = 00h
Tableau addwf PCL, 1; PCL PCL = w = 0x83 Adresse
....
....
....
retlw XX; Adresse = 00FF
retlw YY; Adresse = 0100
retlw ZZ; Adresse = 0101
.....
.....
Vous voyez où l'instruction ADD est exécuté, PCL = 100h ou elle déborde!Le MPU exécutez simplement le vecteur RESET au lieu d'exécuter Adresse 0100h.Hehe Il m'a fallu 30 minutes pour réaliser ce qui était mon erreur.
Bien que j'ai une solution à ce problème en divisant simplement la table de données par plusieurs tables et de manipuler la valeur à ajouter à PCL, PCL PCLATH et j'ai encore quelques questions.
1.) Il n'est pas automatique lorsque débordements PCL par addition d'instruction à PCL, PCLATH sera incrémenté?
2.) Y at-il une autre façon de mettre en uvre la TABLE en ne le divisant à plusieurs tables?(Il convient de noter que la valeur à ajouter à PCL est de plus de 8 bits. Cela signifie que l'manipualtion PCLATH appropriées doivent également le faire.)
3.) Est-il possible de manipuler PCL et PCLATH en une seule instruction par simple ajout de la valeur à cela?
Merci pour vos idées.
J'ai eu cette expérience amusante à manipuler le PCL et les registres de PCLATH PIC.
J'ai grand tableau de données dans une magnitude de 800 emplacements mémoire.Une révision édition de mon tableau de données de 3000 a la mémoire plus d'endroits.Mais je ne l'ai pas encore codée.
Le problème va comme ceci
WREG = 7C; avant d'entrer au tableau de données
PCLATH = 00h
Tableau addwf PCL, 1; PCL PCL = w = 0x83 Adresse
....
....
....
retlw XX; Adresse = 00FF
retlw YY; Adresse = 0100
retlw ZZ; Adresse = 0101
.....
.....
Vous voyez où l'instruction ADD est exécuté, PCL = 100h ou elle déborde!Le MPU exécutez simplement le vecteur RESET au lieu d'exécuter Adresse 0100h.Hehe Il m'a fallu 30 minutes pour réaliser ce qui était mon erreur.
Bien que j'ai une solution à ce problème en divisant simplement la table de données par plusieurs tables et de manipuler la valeur à ajouter à PCL, PCL PCLATH et j'ai encore quelques questions.
1.) Il n'est pas automatique lorsque débordements PCL par addition d'instruction à PCL, PCLATH sera incrémenté?
2.) Y at-il une autre façon de mettre en uvre la TABLE en ne le divisant à plusieurs tables?(Il convient de noter que la valeur à ajouter à PCL est de plus de 8 bits. Cela signifie que l'manipualtion PCLATH appropriées doivent également le faire.)
3.) Est-il possible de manipuler PCL et PCLATH en une seule instruction par simple ajout de la valeur à cela?
Merci pour vos idées.