; test03.asm ; ; Programme de test du 8031 N° 03 ; Test de l'afficheur LCD 2*16 ; ; (C) CHAMOUARD 1993 ; (Libre de droits pour utilisation non ; commerciale et à vos propres risques) ; ; Matériel requis : ; carte 8031 base 1, programme chargé en 2000h ; afficheur LCD 2*16 aux adresses spécifiées ci-dessous ; Bibliothèques requises : ; aucune ; Sortie : ; affichage du message sur l'afficheur ; Version sur port afficheur de Base8031 ;word LcdCmdReadAdd, #C002h ;word LcdCmdWriteAdd, #A000h ;word LcdDataReadAdd, #C003h ;word LcdDataWriteAdd,#A001h ; Version sur port extension de Base8031 word LcdCmdReadAdd, #E002h word LcdCmdWriteAdd, #E000h word LcdDataReadAdd, #E003h word LcdDataWriteAdd,#E001h ORG 2000h Begin: mov SP,#07h ; Debut de pile en 08h lcall InitLCD mov DPTR,#Mes1 lcall MesLCD lcall CurseurOFF Boucle: ljmp Boucle ; Boucle infinie Mes1: DB "Test afficheur",0 InitLCD: ; Initialisation de l'afficheur LCD mov A,#38h ; --------------------------------- lcall CmdLCD ; Init afficheur mov A,#01h lcall CmdLCD ; Effacement afficheur mov A,#0Fh lcall CmdLCD ; Curseur ON ret CurseurON: ; Visualisation du curseur de l'afficheur LCD mov A,#0Fh ; ------------------------------------------- ljmp CmdLCD CurseurOFF: ; Disparition du curseur de l'afficheur LCD mov A,#0Ch ; ----------------------------------------- ljmp CmdLCD CmdLCD: ; Ecriture d'une commande a l'afficheur LCD push DPH ; ----------------------------------------- push DPL push ACC CmdLCDloop: mov DPTR,#LcdCmdReadAdd movx A,@DPTR ; Lecture status de l'afficheur anl A,#80h jnz CmdLCDloop ; Boucle si LCD busy pop ACC mov DPTR,#LcdCmdWriteAdd movx @DPTR,A ; Ecriture de la commande a l'afficheur pop DPL pop DPH ret DataLCD: ; Ecriture d'une donnee a l'afficheur LCD push DPH ; --------------------------------------- push DPL push ACC DataLCDloop: mov DPTR,#LcdCmdReadAdd movx A,@DPTR ; Lecture status de l'afficheur anl A,#80h jnz DataLCDloop ; Boucle si LCD busy pop ACC mov DPTR,#LcdDataWriteAdd movx @DPTR,A ; Ecriture de la commande a l'afficheur pop DPL pop DPH ret MesLCD: ; Ecriture d'un message a l'afficheur LCD movx A,@DPTR ; --------------------------------------- jz MesLCDfin ; Debut dans DPTR fin lorsque 0 lcall DataLCD ; inc DPTR sjmp MesLCD MesLCDfin: ret