CALL PAUSIT ;attente 1/5s
CLRF compteur1 ;initialise compteur1
BSF RSLINE,4 ;set bit 4 de RSline pour envoyer des adresses
;boucle d'affichage de la deuxième ligne
LOOP3 MOVF compteur1,W ;envoi de boucle dans W
CALL DISPLAYPRESS ;met une lettre de la 2ème chaîne de caractères dans W
CALL sendLCD ;affichage
INCF compteur1,F ;incrémentation de compteur1
BTFSS compteur1,4 ;teste si dernier caractère de la chaîne
GOTO LOOP3 ;non, reboucle
;boucle infinie lorsque la fin du prog est atteinte
LOOP_INF BTFSC PORTA,0
GOTO lasuite ;passe à la suite du programme qui lance un compteur
GOTO LOOP_INF ;boucle infinie
;**************************************************************************************
;sous programme d'envoi des données au LCD
sendLCD MOVWF stockage ;stockage de la valeur a afficher
MOVLW D'50' ;temps minimum d'attente
MOVWF compteur2
attente DECFSZ compteur2,F ;décremente compteur2 de 50 à 0
GOTO attente
CALL SEND ;envoi du MSB
CALL SEND ;envoi du LSB
RETURN
SEND SWAPF stockage,F ;permutation des bits de poids fort et ceux de poids faible
MOVF stockage,W
ANDLW H'0F' ;récupération du bit de poids fort (ou faible)
IORWF RSLINE,W ;OR RSline pour envoyer les paramètres au LCD
MOVWF PORTB ;envoi du bit
BSF PORTB,5
BCF PORTB,5 ;fait passer l'info du W (MSB ou LSB) vers le port b
RETURN
;*********************************************************************************
;sous programme d'attente
PAUSIT MOVLW 5 ;met le compteur à 5
MOVWF CLKCNT ;(pour 1/5ème secondes)
CLRF INTCON ;initialise le drapeau d'interruption
PAUSE ;initial 1/5th sec wait before setting up LCD
BTFSS INTCON,2 ;test si le décomptage est terminé
GOTO PAUSE