FORUM Syndrome-OC - Jacky-PC


  Programmation


  Microcontrolleur &co


  [ASM]movlw a 2 arguments ?

 




Il y a 33 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ASM]movlw a 2 arguments ?

n°5394
Ekinoks
Posté le 11-04-2005 à 15:07:50  profilanswer
 

Salut !
Je dois analyser un programme fait en ASM (un afficheur lcd). Mais voila, au cour de mon analyse il y a des lignes de codes que je comprend pas et j’ai eu beau chercher sur Internet, je n’est rien trouvé :’(
Les voila :

Code :
  1. movlw UPPER stan_table
  2. movwf TBLPTRU
  3. movlw HIGH stan_table
  4. movwf TBLPTRH
  5. movlw LOW stan_table
  6. movwf TBLPTRL


 
Le truc que je ne comprends pas la dedans c’est que la fonction movlw n’a normalement qu’un seul argument pourquoi la il y en a deux ?
 
Merci

mood
Google
Posté le 11-04-2005 à 15:07:50  profilanswer
 

n°5396
Deadog
Dain Bramaged
Posté le 11-04-2005 à 15:16:32  profilanswer
 

c'est avec quel assembleur ? pke moi movlw je connais pas :pt1cable:

n°5398
Ekinoks
Posté le 11-04-2005 à 15:20:30  profilanswer
 

C'est les commendes pour le PIC 18F452 avec donc la lib "p18f452.inc" ...

n°5399
Trracer
Posté le 11-04-2005 à 15:27:17  profilanswer
 

C'est de l'asm microchip je suppose.
Et ton movlw a pas deux operandes, il en a qu'un (pas de virgule entre les deux mots). UPPER, LOW et HIGH doivent certainement representer le nom de macro ou un truc du genre qui sont specifier ailleurs dans le code.

n°5400
Ekinoks
Posté le 11-04-2005 à 15:44:59  profilanswer
 

Ha ok, ça doit être ça "UPPER stan_table" représente un seul argument "stan_table" étant une seul variable... malheureusement, UPPER, HIGH et TBLPTRL ne sont pas des macros, sous-programmes ou autre... ça doit être des fonction je pence mais je ne voie pas a quoi elles peuvent bien servir... :^/

n°5401
Deadog
Dain Bramaged
Posté le 11-04-2005 à 15:47:26  profilanswer
 

les bit de poid fort/faible ?
le permier/deuxième octet ?

n°5402
Trracer
Posté le 11-04-2005 à 15:59:08  profilanswer
 

Oui ce sont des pseudos operateurs. Malheureusement il semble que Microchip soit à la bourre pour la doc...
 
scnsz_low  Return low byte of section size.  
scnsz_high  Return high byte of section size.  
scnsz_upper  Return upper byte of section size.  
scnend_low  Return low byte of section end address.  
scnend_high  Return high byte of section end address.  
scnend_upper  Return upper byte of section end address.  
scnstart_low  Return low byte of section start address.  
scnstart_high  Return high byte of section start address.  
scnstart_upper  Return upper byte of section start address.
 
Voir le forum de Microchip pour plus d'info.

n°5403
Ekinoks
Posté le 11-04-2005 à 16:27:45  profilanswer
 

hum... ha ok... c'est chaud comme truc quant meme ...

n°5427
Ekinoks
Posté le 12-04-2005 à 11:18:35  profilanswer
 

Je vien d'esseiller de voir ce que contené "stan_table" mais je ne comprend rien a ce qu'il font avec :

Code :
  1. code
  2. stan_table
  3. ligne1 data
  4. ligne2 data "                   DEPOSER LE CONTENEUR "
  5. ligne3 data "CONTENEUR DEPOSE"
  6. ligne4 data "CHOISIR DESTINAT"
  7. ligne5 data "   Station 2    "
  8. ligne6 data "Destinataire "


savez vous a quoi tout ca sert tout ca ?
 
Merci

n°5428
Trracer
Posté le 12-04-2005 à 12:42:39  profilanswer
 

Au pif je dirais que c'est la table des libellés affichable sur l'ecran LCD.  
Mais si tu donne pas le code complet ou tout du moins une bonne partie, je pense pas qu'on puissent beaucoup t'aider...

n°5429
Ekinoks
Posté le 12-04-2005 à 14:31:17  profilanswer
 

ok... voila le code complet... par contre il est un peu long et comporte plusieurs fichiers :
 
- la fonction principale : http://perso.wanadoo.fr/jp.themes/ [...] test_e.asm
- les fonctions d'initialisation de l'afficheur LCD : http://perso.wanadoo.fr/jp.themes/ [...] init_e.asm
- les fonction qui détecte l'appui sur une touche du clavier et détermination du code de la touche appuyée http://perso.wanadoo.fr/jp.themes/ [...] LAVIER.asm
- les fonction qui gère le LCD : http://perso.wanadoo.fr/jp.themes/ [...] ICHAGE.asm
 
mon problème se situe donc dans le 4eme fichiers, celui qui gere le LCD.
si je retrace comment le programme affiche le 1ere message je trouve ca :
 
Programe principale : (carte2test_e.asm)
- le programme principale met 28 dans ptr_count, 0 dans le W et appelle le sous-programme "Stan_char_1" pour écrit le message
(ici j'ai compris pourquoi on mi 0 dans le W mais par contre je comprend pas a quoi sert de mètre 28 dans ptr_count)
 
STAN_CHAR_1 : (SP_AFFICHAGE.asm)
- met la valeur du W dans PTR_POS (donc 0) et appelle le sous-programme LCDLINE_1 qui positionnera le curseur en haut a gauche  
(ici c'est bon j'ai compris comment marche ce sous-programme =))
- met 28 dans PTR_COUNT
- c'est après que je suis virement perdu... avec les instruction du style "movlw UPPER stan_table". Je n'arrive même pas a trouver ce que comtien stan_table...
 
Merci

n°5432
Trracer
Posté le 12-04-2005 à 16:09:00  profilanswer
 

28 c'est le nombre de caractère à afficher (en ASCII un caractère = 1 octet, donc 28 octets) de la première ligne de texte.
 
stan_char_1 calcul l'adresse de debut par rapport aux données stan_table et ptr_count, puis envoie les caractères un par un au LCD via stan_next_char_1.
 
Maintenant pour les fonctions de UPPER, HIGH et LOW c'est marqué dans les commentaires ;)
 

n°5433
Ekinoks
Posté le 12-04-2005 à 16:57:29  profilanswer
 

Ok merci beaucoup =)
He... encore une petite question... :^/
Comment stan_char_1 fait pour calculer l'adresse de debut ?
 
Merci

n°5435
Trracer
Posté le 12-04-2005 à 18:40:03  profilanswer
 

Attention, ce que je m'apprete à ecrire n'est que prospective, je ne connais pas l'asm PIC18...
 

Code :
  1. stan_char_1 movwf ptr_pos   ;pointeur de table "_table"
  2.   call LCDLine_1  ; positionne le curseur en haut à gauche
  3. ;   movlw .28    ; nombre de caractères du message à afficher
  4. ;   movwf ptr_count  ; message à afficher
  5.   movlw UPPER stan_table ;TBLPTRU, TBLPTRH et TBLPTRL* contiennent
  6.   movwf TBLPTRU   ; l'adresse de début de la table des
  7.   movlw HIGH stan_table ; messages stan_table.
  8.   movwf TBLPTRH   ; * registres spéciaux pour gestion de table
  9.   movlw LOW stan_table ;
  10.   movwf TBLPTRL   ;
  11.   movf ptr_pos,W  ; construction de l'adresse du 1er carractère
  12.   addwf TBLPTRL,F  ;
  13.   clrf WREG   ;
  14.   addwfc TBLPTRH,F  ;
  15.   addwfc TBLPTRU,F  ; fin de construction


 
Comme indiqué dans les commentaires TBLPTRU, TBLPTRH et TBLPTRL sont des registres dediés à la gestion des tables.  
ptr_pos contient l'adresse de depard (en nombre d'octet, voir déclaration de stan_table). Grossierement il obtient l'adresse de fin des données dans la table en additionnant les registres spéciaux à l'adresse de depard et met tout dans le registre F.  
Maintenant faudrait lire le datasheet de ton PIC pour savoir exactement comment fonctionne les registres spéciaux...

mood
Google
Posté le 12-04-2005 à 18:40:03  profilanswer
 


Aller à :
Ajouter une réponse

  FORUM Syndrome-OC - Jacky-PC


  Programmation


  Microcontrolleur &co


  [ASM]movlw a 2 arguments ?

 

Hit Parade