********************************************************************* *** PROJET BAC 2007 *** *** VERSION 68HC11 *** *** *** *** programme de lecture des messages vocaux *** *** *** ********************************************************************* **************************************************** * etiquettes * **************************************************** debram equ $2000 * a modifier selon votre µc finram equ $6fff * idem pile equ finram option equ $1039 adctl equ $1030 pactl equ $1026 porta equ $1000 portb equ $1004 portc equ $1003 porte equ $100a ddrc equ $1007 S3 equ 1 ************************* S2 equ 2 * * S1 equ 4 * MASQUES * cel equ 8 * * auto equ 16 * PORTA * mav equ 32 * * mar equ 64 ************************* rs_aff equ 1 *********************** e_aff equ 2 * MASQUES * rst equ 4 * * clk equ 8 * PORTC * inout equ 16 * * lectmes equ 128 **************** t_clav equ 8 * Masque port E * org debram jmp prog menu rmb 1 ********************************************************* * Textes à afficher * * (tables de caracteres) * ********************************************************* texte fcc "Prog. de lecture" fcb $00 fcc "messages vocaux" fcb $00 textet0 fcc "Choix du message" fcb $00 fcc "1 2 3 4" fcb $00 textet1 fcc "Lecture du" fcb $00 fcc "message 1" fcb $00 textet2 fcc "Lecture du" fcb $00 fcc "message 2" fcb $00 textet3 fcc "Lecture du" fcb $00 fcc "message 3" fcb $00 textet4 fcc "Lecture du" fcb $00 fcc "message 4" fcb $00 *********************************************************** *** *** *** PROGRAMME PRINCIPAL *** *** *** *********************************************************** prog lds #pile ldy #$1000 jsr init debut jsr clr_aff ; effacement de l'afficheur ldx #textet0 ; Pointeur du texte jsr aff_txt ; affichage texte jsr lec_clavier ; lecture du clavier et lecture du message vocal choisi jmp debut *********************************************************** *** *** *** Liste des Sous-Programmes *** *** *** *********************************************************** ********************************************************* * initialisation du systeme * * * * Entree: - sortie: - modif: a,option * ********************************************************* init jsr initpor jsr init_af ; initialisation de l'afficheur jsr clr_aff ; effacement de l'afficheur ldx #texte ; Pointeur du texte jsr aff_txt ; affichage texte jsr temp1s jsr temp1s rts ********************************************************* * initialisation des ports * ********************************************************* initpor ldaa #%00001000 * configuration du porta (68hc11a1/e1) staa pactl * b7=0 b3=1 =>pa7 en entree, pa3 en sortie ldaa #%10011111 * config du portc staa ddrc * b0 à b3 en sortie, b7 en sortie ldaa #%00010000 * configuration du porte staa option * b7=0 =>pe1,2,3,4 en entree ldaa #$FF staa porta bclr portc,y rst bclr portc,y lectmes rts ********************************************************* * initialisation de l'afficheur * * * * Entree: sortie: modif: a * ********************************************************* init_af ldaa #%00111000 jsr instruc ldaa #%00001100 jsr instruc ldaa #%00000110 jsr instruc rts ********************************************************* * effacement complet de l'afficheur * * * * Entree: sortie: a modif: a * ********************************************************* clr_aff ldaa #%00000001 jsr instruc rts ********************************************************* * envoi & validation d'une instruction * * * * Entree: a sortie: - modif: a * ********************************************************* instruc staa portb bclr portc,y e_aff bclr portc,y rs_aff bset portc,y e_aff bclr portc,y e_aff jsr tp10ms rts ********************************************************* * envoi & validation d'un caractere * * * * Entree: a sortie: - modif: a * ********************************************************* caract staa portb bclr portc,y e_aff bclr portc,y rs_aff bset portc,y rs_aff bset portc,y e_aff bclr portc,y e_aff jsr tp10ms rts ********************************************************* * envoi d'un texte sur deux lignes * * * * Entree: x sortie: a modif: a,x * ********************************************************* aff_txt ldaa #%10000000 jsr instruc lg1 ldaa 0,x beq txt_st jsr caract inx bra lg1 txt_st ldaa #%11000000 jsr instruc inx lg2 ldaa 0,x beq txt_fin jsr caract inx bra lg2 txt_fin rts ********************************************************* * * * SProg de lecture du clavier * * * ********************************************************* lec_clavier brclr porte,y t_clav s0_lec_clavier ; test appui sur un BP sinon attente bra lec_clavier s0_lec_clavier jsr tp10ms ldaa porte ; lecture du code du BP anda #%00000111 staa menu cmpa #%00000000 bne s1_lec_clavier jsr clr_aff ; si menu = 0 touche 1 appuyee ldx #textet1 ; Pointeur du texte jsr aff_txt ; affichage texte ldaa #%00000000 staa portb ; choix du message n°1 bset portc,y lectmes ; lancement de la lecture jsr temp10s ; tempo 10s bclr portc,y lectmes jmp fin_lec_clav s1_lec_clavier ldaa menu cmpa #%00000001 bne s2_lec_clavier jsr clr_aff ; si menu = 1 touche 2 appuyee ldx #textet2 ; Pointeur du texte jsr aff_txt ; affichage texte ldaa #%00000001 staa portb ; choix du message n°2 bset portc,y lectmes ; lancement de la lecture jsr temp10s ; tempo 10s bclr portc,y lectmes jmp fin_lec_clav s2_lec_clavier ldaa menu cmpa #%00000010 bne s3_lec_clavier jsr clr_aff ; si menu = 2 touche 3 appuyee ldx #textet3 ; Pointeur du texte jsr aff_txt ; affichage texte ldaa #%00000010 staa portb ; choix du message n°3 bset portc,y lectmes ; lancement de la lecture jsr temp10s ; tempo 10s bclr portc,y lectmes jmp fin_lec_clav s3_lec_clavier ldaa menu cmpa #%00000011 bne fin_lec_clav jsr clr_aff ; si menu = 3 touche 4 appuyee ldx #textet4 ; Pointeur du texte jsr aff_txt ; affichage texte ldaa #%00000011 staa portb ; choix du message n°4 bset portc,y lectmes ; lancement de la lecture jsr temp10s ; tempo 10s bclr portc,y lectmes fin_lec_clav brclr porte,y t_clav fin_lec_clav rts ********************************************************* * * * SProgs de temporisation * * * ********************************************************* temp10s ldab #10 ret10s jsr temp1s decb bne ret10s rts temp1s ldaa #100 ret1s jsr tp10ms deca bne ret1s rts tp10ms pshx ldx #3069 tp10ms1 dex bne tp10ms1 pulx rts end