Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

Bonjour à toute l'équipe du forum
JJE
Passioné
Passioné
Messages : 399
Âge : 80
Enregistré en : novembre 2017
Localisation : Picardie

#61 Message par JJE » mar. 4 déc. 2018 06:02

Bonjour à tous, suite de mon post d'hier
au lieu d'écrire

Code : Tout sélectionner


    
;GlcdControlBus &= ~(1<<RS);  // Send LOW pulse on RS pin for selecting Command register
    bcf    GlcdControlBus, RS        ; met la pin RS à l'état bas (ce n'est pas un pulse

on pourrait faire du presque C

Code : Tout sélectionner


    
;GlcdControlBus &= ~(1<<RS);  // Send LOW pulse on RS pin for selecting Command register
    movf    GlcdControlBus, W        ; met la pin RS à l'état bas (ce n'est pas un pulse
    andlw        
~(1<<RS)
    movwf    GlcdControlBus


l'accès au bit d'une variable est quans même plus facile en assembleur.

Notons qu'au lieu de

Code : Tout sélectionner

#define RS     0
#define RW     1
#define EN     2
#define CS1    3
#define CS2    4


on pouvait écrire

Code : Tout sélectionner

#define RS     0x01
#define RW     0x02
#define EN     0x04
#define CS1    0x08
#define CS2    0x10
 


ce qui évitait les << , mais pourquoi ne pas faire travailler le compilateur et/ou l'assembleur ?

Bonne journée
Cordialement

JJE

C'est pas parcequ'on n'a rien à dire qu'il faut fermer sa G....e

Bonjour à toute l'équipe du forum
JMarc
Confirmé
Confirmé
Messages : 601
Enregistré en : août 2016
Localisation : Dans le Sud...

#62 Message par JMarc » mar. 4 déc. 2018 17:59

bonjour tout le monde

JJE a écrit :

Code : Tout sélectionner


    
;GlcdControlBus &= ~(1<<RS);  // Send LOW pulse on RS pin for selecting Command register
    movf    GlcdControlBus, W        ; met la pin RS à l'état bas (ce n'est pas un pulse
    andlw        
~(1<<RS)
    movwf    GlcdControlBus

Bonne journée


je vais essayer sur mplab voir ce qu'il ce passe :shock: merci de l'info

pour ma part, je reprend l'ordi :-D

Code : Tout sélectionner

#DEFINE LCD_WR  PORTB,2     ;  RB2  |    35  |  S  | Data Write afficheur  
#DEFINE LCD_RD  PORTB,3     ;  RB3  |    36  |  S  | Data Read afficheur
#DEFINE LCD_CE  PORTB,4     ;  RB4  |    37  |  S  | Chip Enable
#DEFINE LCD_CD  PORTB,5     ;  RB5  |    38  |  S  | C/D
LCD_DATA EQU PORTD


et

Code : Tout sélectionner

Envoi_cmd
    bsf     LCD_CD      
etat haut pour commande
    bcf     LCD_CE      
Chip Enable
    movf    CMD
,w
    movwf   LCD_DATA
    bcf     LCD_WR     
;  Data Write afficheur actif etat bas
    nop  
    bsf     LCD_WR    
    
return
   

Envoi_data_16
    bcf     LCD_CD      
etat bas pour données
    bcf     LCD_CE      
Chip Enable
 
    movf    DATA_L
,w
    movwf   LCD_DATA
    bcf     LCD_WR     
;  Data Write afficheur actif etat bas
    nop  
    bsf     LCD_WR 
    
    movf    DATA_H
,w
    movwf   LCD_DATA
    bcf     LCD_WR     
;  Data Write afficheur actif etat bas
    nop 
    bsf     LCD_WR 
    bsf     LCD_CE      
Chip disable
    
return
 

Bonjour à toute l'équipe du forum
satinas
Confirmé
Confirmé
Messages : 681
Enregistré en : novembre 2015

#63 Message par satinas » mar. 4 déc. 2018 18:18

Bonjour,
Tu as lâché la macro, je l'aimais bien, moi :)
Les variables intermédiaires ne me semblent pas nécessaires, W suffit

Code : Tout sélectionner

envoi_aff_16 macro x1,x2
        movlw   (x2) % 0x100
        call    Envoi_data
        movlw   (x2) / 0x100
        call    Envoi_data
        movlw   x1
        call    Envoi_cmd
        endm

Bonjour à toute l'équipe du forum
JMarc
Confirmé
Confirmé
Messages : 601
Enregistré en : août 2016
Localisation : Dans le Sud...

#64 Message par JMarc » mar. 4 déc. 2018 18:30

Bonjour Satinas

non pas laché, elle est toujours la. la commande est

Code : Tout sélectionner

    envoi_aff_16    0x24,0x1700


qui appelle la macro

Code : Tout sélectionner

envoi_aff_16 macro x1,x2
        movlw   x1
        movwf   CMD
        movlw   
(x2) / 0x100
        movwf   DATA_H
        movlw   
(x2) % 0x100
        movwf   DATA_L
        call    Envoi_cmd
        call    Envoi_data_16
        endm


J'ai remis la commande et les données dans l'ordre que tu m'as préconise et changé l’état des commandes

Bonjour à toute l'équipe du forum
satinas
Confirmé
Confirmé
Messages : 681
Enregistré en : novembre 2015

#65 Message par satinas » mar. 4 déc. 2018 18:34

ok, mais le lcd veut la commande en dernier, donc "call Envoi_data_16" avant "call Envoi_cmd" dans la macro.
L'init de mon programme C était conforme à celle du datasheet, voir ci-dessus.

Bonjour à toute l'équipe du forum
JMarc
Confirmé
Confirmé
Messages : 601
Enregistré en : août 2016
Localisation : Dans le Sud...

#66 Message par JMarc » mar. 4 déc. 2018 18:43

satinas a écrit :ok, mais le lcd veut la commande en dernier, donc "call Envoi_data_16" avant "call Envoi_cmd" dans la macro.
L'init de mon programme C était conforme à celle du datasheet, voir ci-dessus.


a ok, j'avais mal interprété sorry

voila, changé

Code : Tout sélectionner

envoi_aff_16 macro x1,x2
        movlw   x1
        movwf   CMD
        movlw   
(x2) / 0x100
        movwf   DATA_H
        movlw   
(x2) % 0x100
        movwf   DATA_L
        call    Envoi_data_16
        call    Envoi_cmd
        endm







pour JJE, j'ai un message d'erreur avec ta commande :cry:

Code : Tout sélectionner

    andlw        ~(1<<RS

Bonjour à toute l'équipe du forum
nondediode
Amateur
Amateur
Messages : 148
Enregistré en : novembre 2018
Localisation : Lyon

#67 Message par nondediode » mar. 4 déc. 2018 19:00

Bonjour tout le monde,

Me voici de retour, j’ai passé un dur moment et j’espère que c’est fini au moins pour ce qui est de l’opération car je sais qu’une suite m’attend ! Pour pas vous laisser dans le mystère, j’ai simplement une tumeur à la vessie dont je ne sais pas si pour l’instant elle est cancéreuse ou pas. L’opération a été très compliquée car ils ne peuvent pas la traiter normalement en raison d’un accident cardiaque que j’ai eu fin juillet. Les traitements sont incompatibles et nécessite des soins inhabituels. Bref, cela ne m’empêche pas de positiver et continuer à me consacrer à ma passion très épaulée par le forum. :sifflotte:

Je vois que vous n’avez pas chômé et que les choses ont bien avancés. Je n’ai pas encore pris le tps de rebrancher la maquette, je rentre juste de l’hosto et je suis encore un tantouillé dans le gaz par les traitements.

J’ai lu tous vos posts, je suis un peu dépassé mais je crois comprendre que vous avec simplifié les commandes en utilisant des macros, il faudra juste me dire où je dois les placer dans le programme.

Satinas (que je salue) pose la question de savoir ce que je souhaite faire avec cet afficheur. :wink:

Dans un premier tps, pouvoir afficher du texte d’une manière simple sans complication car ce qui est essentiel pour moi c’est d’apprendre à programmer un afficheur GLCD en utilisant les caractères stockés dans la RAM comme si j’utilisais un LCD avec le HD44780.
Ensuite, pouvoir si cela ne complique pas trop, utiliser des tailles de caractères différents.

Bien sûr que par la suite, insérer un bitmap pour afficher un logo ou un dessin sera la cerise sur le gâteau mais je pense qu’il ne faut pas brûler les étapes et de remettre ce sujet à un autre chapitre.

Je suis très content de vous avoir rejoint J’ai vu qu’il y a de la diversité dans les langages de programmation qui doit bien faciliter la vie pour aboutir à des projets pointus et cela m’intéresse fortement. :-D

Ce projet d’afficheur LGCD est une première pour moi, et c’est parce que j’ai eu l’idée de vouloir réaliser un méga ampli à tubes que j’ai eu besoin d’un afficheur grand format pour y afficher un LOGO et des symboles personnalisés. J’avais lu sur un site, qu’il était plus facile de programmer un GLCD qu’un LCD :lol:
C’est pour cette raison que je me suis ancré l’idée dans la tête. J’ai gratté énormément la toile pour y trouver des exemples et c’est un collègue qui m’a parlé de FUTURA et la suite vous la connaissez.
En revanche, j’ai fourni à ce même collègue les références de Fantas’PIC qu’il ne connaissait pas. :wink:
Voilà j’attends de vous relire pour me remettre dans le bain..
JP

Bonjour à toute l'équipe du forum
Jérémy
Administrateur du site
Administrateur du site
Messages : 2475
Âge : 41
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#68 Message par Jérémy » mar. 4 déc. 2018 19:10

Ravi de tes nouvelles !

Bon rétablissement à toi . Courage pour la suite des événements, aussi bien dans la santé qu'avec les PICs :-D :-D :-D :-D

Un écran GLCD gerer en ASM , moi je dit bravo ! Beau défi
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Bonjour à toute l'équipe du forum
satinas
Confirmé
Confirmé
Messages : 681
Enregistré en : novembre 2015

#69 Message par satinas » mar. 4 déc. 2018 19:14

Bonjour nondediode, je vais aussi bientôt passer sur le billard pour une histoire d'adénome, cela doit te parler :)
En attendant le soft, vérifie que les nombreuses connexions du lcd sont correctes.
Pour cela je fais un petit programme qui alterne toutes les secondes l'état des sorties vers l'afficheur, pour vérifier au voltmètre que ça "clignote" bien. Attention tout de même avec le signal "read", à l'état bas il met le port data de l'afficheur en output.

Bonjour à toute l'équipe du forum
nondediode
Amateur
Amateur
Messages : 148
Enregistré en : novembre 2018
Localisation : Lyon

#70 Message par nondediode » mar. 4 déc. 2018 19:45

Bonsoir Satinas,

satinas a écrit :Bonjour nondediode, je vais aussi bientôt passer sur le billard pour une histoire d'adénome, cela doit te parler :)

Courage, je penserai à toi et rassure toi la médecine est au top aujourd'hui :wink:

En attendant le soft, vérifie que les nombreuses connexions du lcd sont correctes.

J'ai vérifié à plusieurs reprises c'est nickel, enfin... y'a tjrs celle qu'on a pas vu :oops:

A+


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités