Texte en memoire dans pic

Signaler
Messages postés
6
Date d'inscription
jeudi 9 mars 2006
Statut
Membre
Dernière intervention
19 mai 2006
-
Messages postés
6
Date d'inscription
jeudi 9 mars 2006
Statut
Membre
Dernière intervention
19 mai 2006
-
Bonjour a tous, je suis débutant dans la programmation en assembleur et la je coince sur un probleme. J'utilise un pic 16f877 avec un afficheur et je voudrais pouvoir stocker en memoire des message pré defini que je pourrais appeler puis afficher. mon idée était de rentrer dans une variable l'adresse de départ où se situerais le début du message 1 par exemple puis afficher caractere par caractere le message sur le LCD. Seul probleme, je ne sais pas comment et où placer mes messages.
Pour l'instant je n'ai réussi a afficher des caracteres quand ne faisant des lignes du types:

banksel PORTA
movlw 0x40
movwf EEADR1

movlw "B"
movwf EEDATA1
CALL ECRITURE_EEPROM
incf EEADR1
movlw "O"
movwf EEDATA1
CALL ECRITURE_EEPROM
incf EEADR1
movlw "N"
movwf EEDATA1
CALL ECRITURE_EEPROM
incf EEADR1
movlw "J"
movwf EEDATA1
CALL ECRITURE_EEPROM
incf EEADR1
movlw "O"
movwf EEDATA1
CALL ECRITURE_EEPROM
incf EEADR1
movlw "U"
movwf EEDATA1
CALL ECRITURE_EEPROM
incf EEADR1
movlw "R"
movwf EEDATA1
CALL ECRITURE_EEPROM
incf EEADR1
movlw "#"
movwf EEDATA1
CALL ECRITURE_EEPROM

return

Ici le message BONJOUR est afficher.
Pouvez vous m'aider pour faire evoluer mon programme ???????????????

merci d'avance à tous.

5 réponses

Messages postés
1
Date d'inscription
lundi 13 juin 2005
Statut
Membre
Dernière intervention
14 mars 2006

bonsoir,

Si tes messages sont pré-définis , tu peux donc les programmer directement dans la zone Eeprom du PIC
exemple pour Pic16F628 , affiche le N0 du message défini en EEPROM PIC

....
call LCD_Clear1
movlw 1
movwf Pointer_Msg
Call AffNumMsgEeprom
.....

puis avec un bout de programme aller lire ces message pour les afficher

;==============================
; affiche Nø Msg en eeprom
;==============================
AffNumMsgEeprom
movf Pointer_Msg,w
movwf Cpt2
bcf STATUS,C
rlf Cpt2,f
rlf Cpt2,f
rlf Cpt2,f
rlf Cpt2,f ; pointeur = NøMsg * 16
clrf Cpt3
affMsg_
movf Cpt3,w
addwf Cpt2,w
bank1
MOVWF EEADR
BSF EECON1,RD ; bit 0
MOVF EEDATA,W
bank0
call LCD_Putchar
incf Cpt3,f
btfss Cpt3,4 ; 16em car ?
goto affMsg_
return

ORG 0x2100
;message modulo 16 (si LCD de 16 car par ligne !)
; "1234567890123456"
EE0 dt "Bonjour ",0
EE1 dt "message 1",0
EE2 dt "message 2",0
Messages postés
6
Date d'inscription
jeudi 9 mars 2006
Statut
Membre
Dernière intervention
19 mai 2006

Bonjour, tout dabord un grand merci pour ta réponse car je vois que tu as compris exactement se que j'essaie de faire.
Sinon quelques petites questions: j'ai essayer cette méthode mais j'ai quelques erreur quand je compile. J'obtiens ceci:
Symbol not previously defined (Pointer_Msg)
Symbol not previously defined (Cpt2)
Symbol not previously defined (Cpt3)

J'ai donc l'impression qu'il ne reconnait pas ces variables. Est ce que se sont des variables que tu as déclaré quelque par ou bien se sont des variables propres au pic.

Et sinon, pour afficher les autres messages est ce qu'il suffit de remplacer le " movlw 1 " par "
movlw 2 " ou bien "
movlw 3 "

merci d'avance
Messages postés
87
Date d'inscription
jeudi 10 octobre 2002
Statut
Membre
Dernière intervention
4 avril 2008

Allo
déclare tes variable au début
CBLOCK 0x20
Pointer_Msg :1
Cpt2:1
Cpt3:1
ENDC
pas besion de faire movlw 2 car dans
affMsg_
movf Cpt3,w
addwf Cpt2,w ; Cpt3 + Cpt2 = Cpt2
;si tu regarde a la fin il y a

btfss Cpt3,4 ; 16em car ? Boucle jusqua 3
goto affMsg_
a++
Messages postés
87
Date d'inscription
jeudi 10 octobre 2002
Statut
Membre
Dernière intervention
4 avril 2008

petite corection sest la quil fait +1

call LCD_Putchar
incf Cpt3,f ; <-- +1 save dans Cpt3
btfss Cpt3,4 ; 16em car ?
goto affMsg_
a+
Messages postés
6
Date d'inscription
jeudi 9 mars 2006
Statut
Membre
Dernière intervention
19 mai 2006

Bonsoir,

Merci le complement d'information.
En faite j'ai réussi a afficher les messages en allant directement lire à l'adresse du debut de message stocher dans l'eeprom.
merci encore de ton aide