******************************************************* ******* MESSAGE SUR LCD ******** ******************************************************* *Message dans FCB !!! *DONNES SUR PORT B sur $04 *INSTRUCTION SUR PORT A sur $00 * RS->A0 * RW->A1 * E>A2 *NOTE RS=0 ->Instruction RS=1 ->Data * RW=0 ->W RW=1 ->R * E=0 ->Invalide E=1 ->Afficheur actif * pour adapter le branchement du LCD : modifier * §fonc §fonc1 §char et §char1 pour le bus de donnée LCD (8 bits) * §DELAY , §DELAY1 pour le bus de priorité. (RS RW E) **Initialisation variable port*** PORTB equ $1004 *donnes PORTA equ $1000 *instructions PORTC equ $1003 *instructions PORTF equ $1005 *instructions DDRA equ $1001 DDRC equ $1007 ** variable : Position rmb 2 * varible pour recuperer position du curseur org $Fe00 * positionnement EEPROM lds #$0150 *pile ldaa #$FF staa DDRA *port A en sortie *------------------------------------ * initialisation LCD*** *------------------------------------ Init ldaa #$F2 * E=0 , RW=1 , RS=0 sur PORTA bsr delay1 enter ldaa #%00000110 *0000 0110 : deplacement afficheur droite bsr fonc1 * (#$06) Curse ldaa #%00001100 *0000 1100 : D=1 afficheur alumé bsr fonc1 * C=0 *sans curseur * B=0 sans clignotement (#$0C) Bus ldaa #%00111000 *0011 1000 : BUS 8 bits (#$38) bsr fonc1 jmp deb *------------------------------------ *routine pour init LCD : ***envoi instruction sur port B :RS au niveau bas*** fonc1 staa PORTB *instruction sur PORTB ldaa #$F0 * E=0 RW=0 RS=0 * RS en mode instruction bsr delay1 ldaa #$F4 * E=1 RW=0 RS=0 * en front montant >> validation bsr delay1 ldaa #$F0 * E=0 RW=0 RS=0 bsr delay1 rts delay1 staa PORTA ldaa #$01 dedans1 ldx #$2FFF dedans21 dex *tempo wait instruction 115ms bne dedans21 *21.5ms deca bne dedans1 rts *------------------------------------ * MESSAGE *------------------------------------ deb clr Position ldy #Pos * charge tableau position ligne sur lcd sty Position * variable de la position du curseur Mess1 bsr poste ldy #M0 *charge Message bcl1 ldaa 0,y * lit 1ere valeur pointeur #unite beq Mess2 * si fin de chaine :message suivant bsr char *..sinon affiche le caractere bra bcl1 * boucle affichage des sceondes Mess2 bsr poste ldy #M1 *charge Message bcl2 ldaa 0,y * lit 1ere valeur pointeur #unite beq Mess3 * si fin de chaine ( valeur /) : stop bsr char *..sinon affiche le caractere bra bcl2 * boucle affichage des sceondes Mess3 bsr poste ldy #M2 *charge Message bcl3 ldaa 0,y * lit 1ere valeur pointeur #unite beq Mess4 * si fin de chaine ( valeur /) : stop bsr char *..sinon affiche le caractere bra bcl3 * boucle affichage des sceondes Mess4 bsr poste ldy #M3 *charge Message bcl4 ldaa 0,y * lit 1ere valeur pointeur #unite beq Mess5 * si fin de chaine ( valeur /) : stop bsr char *..sinon affiche le caractere bra bcl4 * boucle affichage des sceondes Mess5 bsr poste ldy #M4 *charge Message bcl5 ldaa 0,y * lit 1ere valeur pointeur #unite beq fin * si fin de chaine ( valeur /) : stop bsr char *..sinon affiche le caractere bra bcl5 * boucle affichage des sceondes fin stop *** positionne message sur la ligne voulue cf #Position poste ldy Position ldaa 0,y beq init_pos * bas d'ecran : retour 1ere ligne bsr gotoxy *buzy a tester iny sty Position rts ***repasse 1ere ligne init_pos clr Position ldy #Pos * charge tableau position ligne sur lcd sty Position * variable de la position du curseur jmp poste *------------------------------------------ * affichage caractere ou insctruction LCD *------------------------------------------- ***Délai avant instruction suivante*** ***Ne pas modifier sinon LCD HS*** ***envoi instruction sur port B :RS au niveau bas*** fonc staa PORTB *instruction sur PORTB ldaa #$F0 * E=0 RW=0 RS=0 * RS en mode instruction bsr delay ldaa #$F4 * E=1 RW=0 RS=0 * en front montant >> validation bsr delay ldaa #$F0 * E=0 RW=0 RS=0 bsr delay rts ***envoi caractere sur port B :RS au niveau haut*** char staa PORTB ldaa #$11 *E=0,R/W=0,RS=1 * RS en mode données bsr delay ldaa #$15 *E=1,RW=0,RS=1 *E en front montant >> validation bsr delay ldaa #$11 *E=0,RW=0,RS=1 * Reinit E bsr delay iny * pour passer au caractere suivant rts ***délai d'acceptation instruction par LCD : pas modifier !! delay staa PORTA ldaa #$01 dedans ldx #$2FFF dedans2 dex *tempo wait instruction 115ms bne dedans2 *21.5ms deca bne dedans rts ***ctrl busy !! gotoxy oraa #$80 * evalue busy avant d'envoyer valeur portB bsr fonc rts *----------------------------------- *Lignes a afficher : M0 fcc " BIENVENUE ",0 m_1 fcb %00000000 M1 fcc " AU 68HC11 ",0 m_2 fcb %00000000 M2 fcc " A BIENTOT !! ",0 m_3 fcb %00000000 M3 fcc " Jerome.L ",0 m_4 fcb %00000000 M4 fcc "---10/10/2003--- ",0 m_5 fcb %00000000 *----------------------------------- *position du curseur sur l'ecran LCD Pos fcb $01,$41,$11,$51,%00000000 m_6 fcb %00000000 end