*************************************************************************** *** reception d'un caractere du COM1 en 19200 b et affichage sur PORT B *** *** envoi par Hyperterminal en 19200 b *** *************************************************************************** * Equivalences utilisees avec un offset $1000 * BAUD EQU $2B *Baudrate selector SCCR1 EQU $2C *SCI control register 1 SCCR2 EQU $2D *SCI control register 2 SCSR EQU $2E *SCI status register SCDR EQU $2F *SCI Rx/Tx data register CSCTL EQU $5D *Chip Select control PORTB equ $04 * Equivalence pour la config Memoire * RAMEND equ $03FF *Adresse de fin de la RAM interne *** code du programme *** org $FE00 START: lds #RAMEND *affectation du registre de la pile. ldx #$1000 *"X" contien l'add de base des registres. clr CSCTL,X *desactive les chip select du 68HC11F1 *** reglage de la SCI *** clr SCCR1,X *Initialise la SCI pour 8 bits de donnee ldd #$300C *"A"= 30, "B"= 0c 19200 bauds staa BAUD,X *19200 bauds max, selectionne 19200 bauds stab SCCR2,X *autorise TX & RX *** MAIN LOOP *** ldab #$30 * 1er caractere = "0" LOOP bsr CHR_IN bsr Tempo incb *caractere suivant cmpb #$7B *jusqu'a "z" bne LOOP *boucle sur envoi au COM1 ldab #$30 *sinon recommence avec "0" bra LOOP * et boucle sur envoi au COM1 * Reception d'un caractere sur la SCI et echo vers le PC *** Envoi du caractere au COM1 *** CHR_IN T2 brclr SCSR,X,#$80 T2 * stab SCDR,X stab PORTB,X rts *** Temporisation de 1s apres envoi caractere *** * chargement du compteur du nombre de boucle a effectuer Tempo ldaa #10 * Chargement de la valeur permettant de faire une tempo de 0,1s t1s ldy #33333 *tempo basée sur le nombre de boucle à effectuer t100ms dey bne t100ms * fin de la boucle de 100ms * décomptage du nombre de boucle deca bne t1s rts end