********************************* * Programme test conversion A/D * ********************************* * Déclaration des constantes * *********** REGISTRES ********* #include registres.inc * Déclaration des constantes PILE equ $0C00 RAM equ $1000 ROM equ $2000 * Déclaration des variables TENSION0 equ RAM UNIT_V equ RAM+$04 CENTI_V equ RAM+$06 DIZ_V0 equ RAM+$0C UNIT_V0 equ RAM+$0D ; code ASCII du chiffre des unités DIX_V0 equ RAM+$0E ; code ASCII du chiffre des dixièmes CENTI_V0 equ RAM+$0F ; code ASCII du chiffre des centièmes ********************** * Début du programme * ********************** ORG ROM * Initialisation de la pile PROG_INIT LDS #PILE * Initialisation des registres pour l'affichage JSR INIT_LCD * Affichage du message LDX #MESSAGE JSR _2LIGNES * Initialisation des registres pour les convertisseurs A/N MOVB #$80,ATD0CTL2 MOVB #$20,ATD0CTL3 MOVB #$83,ATD0CTL4 ********************************** * Partie principale du programme * ********************************** LECTURE MOVB #$80,ATD0CTL5 FIN_CONV0 LDAA ATD0STAT0 ; attente fin de conversion ORAA #$7F CMPA #$FF BNE FIN_CONV0 LDD ATD0DR0H ; mise en mémoire de tension0 STD TENSION0 * affichage des tensions CONVERSION lDD TENSION0 ASLD ; multiplie par 2 LDX #100 IDIV ; X <= unités V, D <= centièmes V STD CENTI_V XGDX STAB UNIT_V ; LDX #10 IDIV ; X <= dixièmes V, D <= centièmes V ADDB #$30 STAB UNIT_V0 XGDX ADDB #$30 STAB DIZ_V0 LDD CENTI_V LDX #10 IDIV ADDB #$30 STAB CENTI_V0 XGDX ADDB #$30 STAB DIX_V0 * Affichage des tensions LDX #DIZ_V0 ; affichage tension 0 LDY #POSITION LDAA #4 ; 4 caractères à afficher JSR ECRIT_A_CAR LBRA LECTURE ********************************** ********************************** * Sous-programmes #include lcd.inc * '0123456789ABCDEF' MESSAGE DC.B 'Lecture Port A/D' DC.B ' V : , Volts' POSITION DC.B $C5,$C6,$C8,$C9 ; positions des chiffres à afficher END