Académique Documents
Professionnel Documents
Culture Documents
Utilisation des tables instruction retlw Page 1 L'instruction retlw permet de retourner une valeur dans W lors du retour d'un sous-programme. Cette instruction va pouvoir tre utilise pour crer des tables de valeurs. Exemple 1: Vous dsirez sortir sur le PORTB la valeur (0 ou 1) des diffrents segments d'un afficheur 7 segments qui y est branch (segments a g sur PORTB,0 PORTB,6). Le chiffre afficher est contenu dans une variable Affiche. Dans l'exemple suivant, il n'y a rien de branch sur PORTB,7. Programme: movf call Affiche,w Table ;mettre le contenu de Affiche dans W ;appel de la table ;sortie sur le PORTB du code contenu dans W
addwf retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw
PCL,f b'00111111' b'00000110' b'01011011' b'01001111' b'01100110' b'01101101' b'01111101' b'00000111' b'01111111' b'01101111'
;additionner W (Affiche) avec PCL ;chiffre 0 - retour avec dans W le code correspondant Affiche ;chiffre 1 ;chiffre 2 ;chiffre 3 ;chiffre 4 ;chiffre 5 ;chiffre 6 ;chiffre 7 ;chiffre 8 ;chiffre 9
Cette manire de concevoir la table peut avoir parfois de curieux effets. Si l'on se rfre au livre (pages 42 46), l'adresse de l'instruction suivante n'est pas donn que par PCL, mais est une combinaison de PCH et de PCL. Avec l'opration addwf PCL,f , on se trouve dans la situation 1 de la figure 3.4 de la page 45. La nouvelle adresse de PC sera calcule avec la valeur de PCLATH pour PCH et la nouvelle valeur de PCL (aprs addition). Que se passe-t-il si la valeur additionne PCL le fait dborder? PC va alors pointer vers une instruction ailleurs que dans la table.
Exemple 2: En fonction de la position sur un affichage, on dsire retourner le code ASCII correspondant une lettre d'un message afficher. Le message sera plac dans une table appele Ligne_1. On va utiliser une directive dt pour dfinir la table en une seule ligne. org 0x300 Ligne_1 movlw 0x3 movwf PCLATH movf Position,w addwf PCL,f dt "EPAI FRIBOURG",0
La ligne dt "EPAI FRIBOURG",0 est quivalente : retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw "E" "P" "A" "I" "" "F" "R" "I" "B" "O" "U" "R" "G" 0
La directive dt peut s'utiliser pour dfinir toutes sortes de tables. Il suffit de sparer les diffrents lments de celle-ci par une virgule. La table de l'exemple 1 aurait alors la forme:
dt b'00111111',b'00000110',b'01011011',b'01001111',b'01100110',b'01101101',b'01111101',b'00000111',b'01111111',b'01101111'
Cette version rendant difficile les commentaires, il n'y aurait pas de grand intrt l'utiliser dans le cas.
EPAI Fribourg / Herv Page / Utilisation des tables.odt
Deb_Table dt 0,1,2,3,4,5,6,7,8,9,10