******************************************************* ****affiche message sur LCD *** ******************************************************* *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 **Initialisation variable port*** org $FE00 * positionnement EEPROM PORTB equ $04 *donnes PORTA equ $00 *instructions DDRA equ $01 ******************************************************* **Initialisation constante*** lds #$0150 *pile ldx #$1000 *offset ldaa #$FF staa DDRA,x *port A en sortie ******************************************************* ***initialisation LCD*** Init ldaa #$F2 * E=0 , RW=1 , RS=0 sur PORTA bsr delay home ldaa #%00000001 *0000 0001 : place curseur position HOME bsr fonc * (#$01) enter ldaa #%00000110 *0000 0110 : deplacement afficheur droite bsr fonc * (#$06) Curse ldaa #%00001100 *0000 1100 : D=1 afficheur alumé bsr fonc * C=0 *sans curseur * B=0 sans clignotement (#$0C) Bus ldaa #%00111000 *0011 1000 : BUS 8 bits (#$38) bsr fonc ******************************************************* *Affiche message ******************************************************* ldaa #%00000001 *0000 0001 : place curseur position HOME bsr gotoxy *buzy a tester ldy #Mess *charge Message bcl ldaa 0,y * lit 1ere valeur pointeur #unite beq fin * si fin de chaine ( valeur /) : stop bsr char *..sinon affiche le caractere bra bcl * boucle affichage des sceondes fin stop ******************************************************* * #$00 : début ligne 1 * #$40 : début ligne 2 * #$10 : début ligne 3 * #$50 : début ligne 4 ******************************************************* * routine du pgm : ******************************************************* *Délai avant instruction suivante*** delay staa PORTA,x ldaa #$01 dedans ldy #$2FFF dedans2 dey *tempo wait instruction 115ms bne dedans2 *21.5ms deca * bne dedans rts * **Test busy avant instruction suivante*** gotoxy oraa #$80 * evalue busy avant d'envoyer valeur portB bsr fonc bsr char rts ***envoi instruction port B : RS au niveau bas*** fonc staa PORTB,x *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 stab PORTB,x 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 rts ******************************************************* ***Message*** ******************************************************* Mess fcb %01000010,%01001001,%01000101,%01001110,%01010110,%01000101,%01001110,%01010101,%01000101,%00100001,%00000000 end