FORUM Syndrome-OC - Jacky-PC


  Programmation


  Langage bas niveau(asm...)


  Pic 16f84 sur mon afficheur 1*32 en persistance

 




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

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pic 16f84 sur mon afficheur 1*32 en persistance

n°5642
Orace
Analyste déComplexé
Posté le 08-05-2005 à 10:17:16  profilanswer
 

Salut à tous, peut étre avez vous vu mon topic sur un afficheur 1*32 en persistance rétiennienne, j'ai réussi à programmer le pic pour qu'il m'affiche un texte, le texte à afficher et stocker dans :

Code :
  1. CBLOCK 0x20
  2. text : 32  ; 32 caractéres
  3. ENDC


la variable text donc, le programme vas ensuite chercher dans une table (qui pour l'instant est limitée à qu'un petit nombre de caractére) les diodes à allumer.
Tout ca marche bien, c'est qd je veux modifier le texte par une liaison série que ca bloque.

Code :
  1. bsf  PORTA, 1 ; on demande la reception (A1 brancher sur le port série pour que)
  2. movlw D'8'   ; on va prendre 8 bits
  3. movwf varun   ; varun pour compter
  4. clrf charRS   ; resultat enregistré dans charRS
  5. _BitSuivant
  6. rrf  charRS, F ; on tourne
  7. bcf  charRS, 7 ; on met un 0 à la fin
  8. btfss PORTA,  3  ; mais si il y'a du jus,
  9. bsf  charRS, 7 ; on met à 1
  10. nop
  11. nop    ; attente du bit suivant (pour une recpetion à 115000 bps @ 4MHz
  12. decfsz varun, F
  13. goto _BitSuivant  ; on passe au bit suivant
  14. bcf  charRS, 7
  15. bcf  charRS, 6
  16. bcf  charRS, 5 ; comme ma table est limitée, on tronque pour étre sur de rester dedans
  17. movf charRS, text+d'25' ; un test pour voir si le 25° caractére change => non, il ne change pas
  18. movlw d'15'
  19. movwf text+d'26'  ; un test pour voir si on peut changer un caractére
  20. movlw  text   ; on va en début de texte
  21. addwf curseur,w  ; w à l'adresse du caractére sous curseur
  22. movwf FSR   ; on pointe sur la bonne adresse
  23. movf charRS, INDF  ; on écrit le caractére
  24. incf curseur   ; on avance le curseur pour la prochaine fois
  25. bcf curseur, 5  ; mais on le limite à 31 (si curs==32 => curs=1)
  26. movfw charRS   ; juste pour voir si il y'a une reception, on allume momentanément les diodes
  27. movwf PORTB


 
Tout ce qui marche ici, c'est les diodes qui s'allume à la fin, même ce code "movf charRS, text+d'25'" pour afficher le caractére recu ne marche pas, et il me fait un warning 202 Argument out of range.  Least significant bits used.
 
Je ne comprend pas pkoi ca marche po  :??:  
please help !
 :hello:

mood
Google
Posté le 08-05-2005 à 10:17:16  profilanswer
 

n°6595
neteagle
Posté le 07-02-2006 à 14:45:04  profilanswer
 

Salut Orace,
 
L'erreur est surement dans l'instruction "movf charRS, text+d'25'". En effet cette instruction marche comme ca:
soit movf charRS,0 ou movf charRS,1. La première va mettre le contenu de charRS dans W, la seconde va mettre charRS dans charRS (sans grand intéret)...
 
pour copier le contenu de A dans B, il faut obligtoirement passer par W. Le code pourrait ressembler à ca:
 
movf A,W (ou movf A,0, idem MPLAB remplacera tout seul) <- met A dans W
movwf B <- met W dans B
 
@+
 
PS: movf    charRS, INDF ne devrait pas marcher non plus


Message édité par neteagle le 07-02-2006 à 14:46:10
mood
Google
Posté le 07-02-2006 à 14:45:04  profilanswer
 


Aller à :
Ajouter une réponse

  FORUM Syndrome-OC - Jacky-PC


  Programmation


  Langage bas niveau(asm...)


  Pic 16f84 sur mon afficheur 1*32 en persistance

 

Hit Parade