************************************************************************** *** convertisseur Hexa >> ASCCI sur LCD ** *** du clavier ** *** ===> affiche '1' si touche 1 du clavier préssé ** *** ===> affiche '2' si touche 2 du clavier préssé ** *** ... ** ************************************************************************** **voir pour lire port en entree et afficher valeur sur LCD **voir integrer inteeruption mot sur port a lire !! PORTB equ $1004 PORTA equ $1000 *instructions DDRA equ $1001 PORTE equ $100A PORTC equ $1003 PORTF equ $1005 Reste1 rmb 1 * dizaine de seocnde Reste2 rmb 1 * dizaine de seocnde Quot1 rmb 1 * varible pour recuperer position du curseur Memoire rmb 1 org $FE00 * start of EEPROM ******************************************************* *Configuration port ******************************************************* ldaa #$FF staa DDRA *port A en sortie ******************************************************* ***initialisation LCD*** ******************************************************* Init ldaa #$F2 * E=0 , RW=1 , RS=0 sur PORTA bsr delay 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 home ldaa #%00000001 *0000 0001 : place curseur position HOME bsr fonc * (#$01) jmp Deb ******************************************************* ***envoi caractere sur port B :RS au niveau haut*** char stab 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 rts ****Délai avant instruction suivante*** delay staa PORTA ldaa #$01 dedans ldy #$2FFF dedans2 dey *tempo wait instruction 115ms bne dedans2 *21.5ms deca * bne dedans rts ****envoi instruction 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 gotoxy oraa #$80 * evalue busy avant d'envoyer valeur portB bsr fonc rts ******************************************************* *Programme principal *** ******************************************************* **positionne message 1ere ligne : Deb ldaa #$00 bsr gotoxy ldx #M4 *charge Message bcl5 ldab 0,x * lit 1ere valeur pointeur #unite beq fin * si fin de chaine ( valeur /) : stop bsr char *..sinon affiche le caractere inx bra bcl5 * boucle affichage des sceondes fin ******************************************************* ***conversion *** ******************************************************* Main ***VALEUR A CONVERTIR *** **ldab #$C5 *==197 en decimal bra VersTable Repart stab Memoire ***VALEUR A CONVERTIR *** ******************************************************* *Postionne ecran: Centaine ldaa #$47 *1ere ligne 6eme position68 bsr gotoxy ldab #$3E *1ere ligne 6eme position68 bsr char Dizaine clra ldab Memoire ldx #10 *10 idiv * d(=valeur) / x(=10) Quotient >>X Reste>>D * B=Reste1 X=Quotient1 addb #$30 * ajoute 30 pour ASCCI stab Reste1 * affiche Reste1 xgdx *Passe X(=Quotient1) dans B ldx #10 * 7/10 idiv *d(=Quotient1) / x(=10) Quotient >>X Reste>>D addb #$30 * ajoute 30 au Reste2 stab Reste2 *affiche Reste2 xgdx *Passe X(=Quotient2) dans B addb #$30 *Ajoute 30 pour ASCCI stab Quot1 *Affiche Quotient2 ***Affichage bsr char ldab Reste2 bsr char ldab Reste1 bsr char ldab #$3C *1ere ligne 6eme position68 bsr char bra Fin Fin stop VersTable ldab PORTE *C5 << 180 stab PORTF cmpb #%00000000 beq table0 cmpb #%00100000 beq table1 *ok cmpb #%00000010 beq table2 *ok cmpb #%00100010 beq table3 cmpb #%00000001 beq table4 cmpb #%00100001 beq table5 cmpb #%00000011 beq table6 *ok cmpb #%00100011 beq table7 cmpb #%00010000 beq table8 *ok cmpb #%00110000 beq table9 cmpb #%00010010 beq tableE cmpb #%00110010 beq tableS *sinon ldab PORTE Retour bra Repart table0 ldab #%00000000 bra Retour table1 ldab #%00000001 bra Retour table2 ldab #%00000010 bra Retour table3 ldab #%00000011 bra Retour table4 ldab #%00000100 bra Retour table5 ldab #%00000101 bra Retour table6 ldab #%00000110 bra Retour table7 ldab #%00000111 bra Retour table8 ldab #%00001000 bra Retour table9 ldab #%00001001 bra Retour tableE ldab #%01000101 bra Retour tableS ldab #%01010110 bra Retour rts ******************************************************* *Message bienvenue : ******************************************************* M4 fcc "CONVERT: HEX>DEC",0 m_5 fcb %00000000 end